+\µi©⁵+Ị$ḂḤị;®×Ị¤¡-
;0Ç3ƤFṣ-m€2Fḣ⁵S
정수 목록을 승인하고 정수를 리턴하는 모나드 링크.
온라인으로 사용해보십시오!
방법?
3 개의 보울의 겹치는 런의 점수를 마치 프레임의 시작 부분에서 시작된 것으로 -1
보인 다음 선택적으로 스트라이크 식별자 ( )를 추가 하고이 결과 목록을 평평하게하고 스트라이크 식별자에서 분할 한 다음 두 번째 결과를 버립니다. 각 청크 (프레임의 시작으로 시작하지 않은 런의 점수를 제거함).
최종 프레임을 제공하기 위해 입력에 0이 먼저 추가되고 (3 번째 슬라이싱으로 두 번째 보울에서 프레임을 시작할 수 있도록) 결과 점수가 처음 10 개로 잘립니다 (지금을 제거하기 위해) 합산하기 전에 가능한 가짜 11 프레임).
+\µi©⁵+Ị$ḂḤị;®×Ị¤¡- - Link 1, threeBowlEvaluate: list, bowlScores
- e.g. [0,4,6] [9,1,10] [0,4,4] [10,7,9]
\ - cumulative reduce with:
+ - addition [0,4,10] [9,10,20] [0,4,8] [10,17,26]
µ - monadic chain separation, call that "left"
⁵ - literal ten 10 10 10 10
i - first index in left 3 2 (spare) 0 1 (strike)
© - (copy to register for later reuse)
$ - last two links as a monad (f(x)):
Ị - abs(x) <= 1 0 0 1 1
+ - add x 3 2 1 2
Ḃ - modulo by 2 1 0 1 0
Ḥ - double 2 0 2 0
ị - index into left (both 1-indexed and modular)
- ... 4 20 4 26
- - literal -1 -1 -1 -1 -1
¡ - repeat:
; - ...action: concatenate
¤ - ...number of times: nilad followed by link(s) as a nilad:
® - z from register 3 2 0 1
Ị - abs(z) <= 1 0 0 1 1
× - multiply 0 0 0 1 (strike)
- ...yielding: 4 20 4 [26,-1]
;0Ç3ƤFṣ-m€2Fḣ⁵S - Main link: list bowlValues
- e.g. [4,3,8,2,7,1,10,7,3,0,10,2,2,10,10,5,4]
0 - literal zero 0
; - concatenate [4,3,8,2,7,1,10,7,3,0,10,2,2,10,10,5,4,0]
3Ƥ - for infixes of length 3:
Ç - last link (1) as a monad
- [7,11,17,9,8,11,[20,-1],10,3,12,[14,-1],4,12,[25,-1],[19,-1],9]
F - flatten [7,11,17,9,8,11,20,-1,10,3,12,14,-1,4,12,25,-1,19,-1,9]
- - literal -1 -1
ṣ - split at [[7,11,17,9,8,11,20],[10,3,12,14],[4,12,25],[19],[9]]
2 - literal two 2
m€ - modulo slice for €ach [[7,17,8,20],[10,12],[4,25],[19],[9]]
F - flatten [7,17,8,20,10,12,4,25,19,9]
⁵ - literal ten 10
ḣ - head to index [7,17,8,20,10,12,4,25,19,9] (no effect this time)
S - sum 131