Kolakoski sequence: Difference between revisions
Content added Content deleted
SqrtNegInf (talk | contribs) m (→{{header|Perl}}: Fix link: Perl 6 --> Raku) |
|||
Line 598: | Line 598: | ||
</pre> |
</pre> |
||
=={{header|J}}== |
|||
<lang J> |
|||
NB. cyclic |
|||
create_cycle_=: 3 :0 |
|||
I=: 0 |
|||
A=: y |
|||
N=: # A |
|||
) |
|||
next_cycle_=: 3 :0 |
|||
r=. A {~ N | I |
|||
I=: >: I |
|||
r |
|||
) |
|||
NB. kolakoski |
|||
kolakoski =: 30&$: :(dyad define) NB. TERMS kolakoski ALPHABET |
|||
c=. y conew'cycle' |
|||
s=. i. 0 |
|||
term=. 0 |
|||
while. x > # s do. |
|||
s=. (, ([: #~ next__c)`(term&{ # next__c)@.(term < #)) s |
|||
term=. >: term |
|||
end. |
|||
s |
|||
) |
|||
test=: (({.~ #) -: ]) }:@:(#;.1~ (1 , 2&(~:/\))) |
|||
</lang> |
|||
test cuts the data at a vector of frets where successive pairs are unequal. The groups are tallied, giving run length. |
|||
<pre> |
|||
f=: (;~ test)@:kolakoski |
|||
(; f)&> 1 2 ; 2 1 ; 1 3 1 2 ; 1 3 2 1 |
|||
┌───────┬─┬─────────────────────────────────────────────────────────────┐ |
|||
│1 2 │1│1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 2 1 1 2 1 2 2 1 1 2 │ |
|||
├───────┼─┼─────────────────────────────────────────────────────────────┤ |
|||
│2 1 │1│2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 2 1 1 2 1 2 2 1 1 2 1 1│ |
|||
├───────┼─┼─────────────────────────────────────────────────────────────┤ |
|||
│1 3 1 2│1│1 3 3 3 1 1 1 2 2 2 1 3 1 2 2 1 1 3 3 1 2 2 2 1 3 3 1 1 2 1 │ |
|||
├───────┼─┼─────────────────────────────────────────────────────────────┤ |
|||
│1 3 2 1│0│1 3 3 3 2 2 2 1 1 1 1 1 3 3 2 2 1 1 3 2 1 1 1 1 3 3 3 2 2 1 1│ |
|||
└───────┴─┴─────────────────────────────────────────────────────────────┘ |
|||
</pre> |
|||
=={{header|Java}}== |
=={{header|Java}}== |
||
{{trans|Kotlin}} |
{{trans|Kotlin}} |