Kolakoski sequence: Difference between revisions
Content added Content deleted
m (→{{header|Python}}: added zkl header) |
(→{{header|zkl}}: added code) |
||
Line 109: | Line 109: | ||
=={{header|zkl}}== |
=={{header|zkl}}== |
||
{{trans|Python}} |
|||
⚫ | |||
<lang zkl>fcn kolakoski(start_items=List(1, 2), length=20){ //-->List |
|||
⚫ | |||
s,rk,cw := List(), Ref(0), Walker.cycle(start_items).next; |
|||
Walker.tweak(fcn(s,rk,cw){ // infinite iterator |
|||
s.append( c_next:=cw() ); |
|||
sk:=s[rk.inc()]; // inc returns previous value, ie k++ |
|||
if(sk>1) s.extend((List.createLong(sk - 1,c_next))); // list of sk cn's |
|||
sk |
|||
}.fp(s,rk,cw) ).walk(length); // iterate length times |
|||
⚫ | |||
<lang zkl>fcn _run_len_encoding(truncated_series){ //List-->List |
|||
s:=List(); |
|||
foreach n in (truncated_series){ |
|||
m:=0; foreach z in (__nWalker){ m+=1; // iterate the iterator |
|||
if(n!=z){ __nWalker.push(z); break; } |
|||
} |
|||
s.append(m and m or 1); // take care of trailing n |
|||
} |
|||
s |
|||
} |
|||
fcn is_series_eq_its_rle(series){ //-->Bool |
|||
rle:=_run_len_encoding(series); |
|||
series[0,rle.len()]==rle |
|||
⚫ | |||
<lang zkl>foreach sl in (List( L( L(1,2), 20), |
|||
L( L(1,3,1,2), 30), L( L(1,3,2,1), 30) )){ |
|||
start_items, length := sl; |
|||
println("First %d members of the series generated from (%s) are:" |
|||
.fmt(length,start_items.concat(","))); |
|||
println(" (%s)".fmt(( s:=kolakoski(start_items, length) ).concat(",") )); |
|||
println(" Does it look like a Kolakoski sequence: ",is_series_eq_its_rle(s) ) |
|||
}</lang> |
|||
{{out}} |
{{out}} |
||
<pre> |
<pre> |
||
First 20 members of the series generated from (1,2) are: |
|||
(1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1) |
|||
Does it look like a Kolakoski sequence: True |
|||
First 30 members of the series generated from (1,3,1,2) are: |
|||
(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) |
|||
Does it look like a Kolakoski sequence: True |
|||
First 30 members of the series generated from (1,3,2,1) are: |
|||
(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) |
|||
Does it look like a Kolakoski sequence: False |
|||
</pre> |
</pre> |