Kolakoski sequence: Difference between revisions
Content added Content deleted
(Add Rust implementation) |
Drkameleon (talk | contribs) (Added Arturo implementation) |
||
Line 103: | Line 103: | ||
Possibly kolakoski? 0B |
Possibly kolakoski? 0B |
||
</pre> |
</pre> |
||
=={{header|Arturo}}== |
|||
<lang rebol>kolakoski: function [a, length][ |
|||
result: array.of: length 0 |
|||
i: new 0 |
|||
k: new 0 |
|||
loop.forever a 'x [ |
|||
result\[i]: x |
|||
if result\[k] > 1 [ |
|||
loop 1..dec result\[k] 'j [ |
|||
inc 'i |
|||
if i = length -> return result |
|||
result\[i]: result\[i-1] |
|||
] |
|||
] |
|||
inc 'i |
|||
if i = length -> return result |
|||
inc 'k |
|||
] |
|||
return result |
|||
] |
|||
possibleKolakoski?: function [seq][ |
|||
prev: seq\0 |
|||
count: new 1 |
|||
rle: new [] |
|||
loop 1..dec size seq 'i [ |
|||
if? seq\[i] = prev -> inc 'count |
|||
else [ |
|||
'rle ++ count |
|||
count: new 1 |
|||
prev: seq\[i] |
|||
] |
|||
] |
|||
loop.with:'i rle 'val [ |
|||
if val <> seq\[i] -> return false |
|||
] |
|||
return true |
|||
] |
|||
Seqs: [[1 2] [2 1] [1 3 1 2] [1 3 2 1]] |
|||
Lens: [20 20 30 30] |
|||
loop combine Seqs Lens 'c [ |
|||
generated: kolakoski c\0 c\1 |
|||
print ["First" c\1 "members of the sequence generated by" c\0 ":"] |
|||
print generated |
|||
print ["Possible Kolakoski sequence?" possibleKolakoski? generated] |
|||
print "" |
|||
]</lang> |
|||
{{out}} |
|||
<pre>First 20 members of the sequence generated by [1 2] : |
|||
1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 |
|||
Possible Kolakoski sequence? true |
|||
First 20 members of the sequence generated by [2 1] : |
|||
2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 2 |
|||
Possible Kolakoski sequence? true |
|||
First 30 members of the sequence generated by [1 3 1 2] : |
|||
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 |
|||
Possible Kolakoski sequence? true |
|||
First 30 members of the sequence generated by [1 3 2 1] : |
|||
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 |
|||
Possible Kolakoski sequence? false</pre> |
|||
=={{header|C}}== |
=={{header|C}}== |