+2Rṫ-4>Ðḟ⁹1;;QµI’a3R”.ṁ⁸żẎ
Ị¬;n“¢©ỵY“¡&ç»ẋ"W€jçLÐfKṣ⁸j⁸WŒṘ¤
결과를 STDOUT에 인쇄하는 전체 프로그램 *. 인수를 current
하고 total
순서입니다.
온라인으로 사용해보십시오! 또는 테스트 스위트를 참조하십시오.
어떻게?
+2Rṫ-4>Ðḟ⁹1;;QµI’a3R”.ṁ⁸żẎ - Link 1, numbers and ellipses: current, total
- e.g. 52, 173
2 - literal two 2
+ - add to current 54
R - range [1,2,3,...,53,54]
-4 - literal minus four -4
ṫ - tail from index (i.e. right five) [50,51,52,53,54]
⁹ - chain's right argument, total 173
Ðḟ - filter discard if:
> - greater than? [50,51,52,53,54]
1 - literal one 1
; - concatenate [1,50,51,52,53,54]
; - concatenate (implicit right = total) [1,50,51,52,53,54,173]
Q - unique (remove excess 1 and/or total) [1,50,51,52,53,54,173]
µ - new monadic chain, call that X
I - incremental differences [49,1,1,1,1,119]
’ - decrement (vectorises) [48,0,0,0,0,118]
3 - literal three 3
a - logical and (vectorises) [3,0,0,0,0,3]
R - range (vectorises) [[1,2,3],[],[],[],[],[1,2,3]]
”. - literal '.' character '.'
ṁ - mould like that [['.','.','.'],[],[],[],[],['.','.','.']]
⁸ - chain's left argument, X [1,50,51,52,53,54,173]
ż - zip with that [[1,['.', '.', '.']],[50,[]],[51,[]],[52,[]],[53,[]],[54,['.','.','.']],[173]]
Ẏ - tighten [1,['.', '.', '.'],50,[],51,[],52,[],53,[],54,['.','.','.'],173]
Ị¬;n“¢©ỵY“¡&ç»ẋ"W€jçLÐfKṣ⁸j⁸WŒṘ¤ - Main link: current, total e.g. 52, 173
Ị - insignificant? (abs(current)<=1) 0
¬ - logical not 1
n - not equal (current != total) 1
; - concatenate [1,1]
“¢©ỵY“¡&ç» - list of compressed strings [['p','r','e','v'], ['n','e','x','t']]
" - zip with:
ẋ - repeat (zeros -> empty lists) [['p','r','e','v'], ['n','e','x','t']]
W€ - wrap €ach (prep for the join) [[['p','r','e','v']], [['n','e','x','t']]]
ç - call last link (1) as a dyad [1,['.', '.', '.'],50,[],51,[],52,[],53,[],54,['.','.','.'],173]
j - join [['p','r','e','v'],1,['.','.','.'],50,[],51,[],52,[],53,[],54,['.','.','.'],173,['n','e','x','t']]
Ðf - filter keep if:
L - length (removes empty lists) [['p','r','e','v'],1,['.','.','.'],50,51,52,53,54,['.','.','.'],173,['n','e','x','t']]
K - join with spaces ['p','r','e','v',' ',1,' ','.','.','.',' ',50,' ',51,' ',52,' ',53,' ',54,' ','.','.','.',' ',173,' ','n','e','x','t']
⁸ - chain's left argument, current 52
ṣ - split at that [['p','r','e','v',' ',1,' ','.','.','.',' ',50,' ',51,' ',],[,' ',53,' ',54,' ','.','.','.',' ',173,' ','n','e','x','t']]
¤ - nilad followed by link(s) as a nilad:
⁸ - chain's left argument, current 52
W - wrap [52]
ŒṘ - Python string representation ['[','5','2',']']
j - join ['p','r','e','v',' ',1,' ','.','.','.',' ',50,' ',51,' ','[','5','2',']',' ',53,' ',54,' ','.','.','.',' ',173,' ','n','e','x','t']
- implicit print prev 1 ... 50 51 [52] 53 54 ... 173 next
* current
왼쪽과 total
오른쪽 에 있는 2 차원 링크 로서 문자와 정수가 혼합 된 목록을 반환합니다. 이 목록에는 공백이 포함됩니다. 바이트 K
는 스펙을 준수하기 위해 간단하게 제거 할 수 없습니다. 결과는 current
(와 같은 [...'[','5','2',']'...]
) 별도의 문자 로 괄호 로 묶 이므로 "각 항목을 문자열로 변환하고 단일 공백으로 결합"하면 원하는 결과를 얻지 못하므로 )
4 , 6
테스트 사례로 추가 할 가치가 있습니다 . 이3, 6
경우와 비슷하지만 왼쪽에 점이 추가되지 않도록합니다.