Kolakoski sequence: Difference between revisions

Content added Content deleted
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}}