Kolakoski sequence: Difference between revisions

(Added C#)
Line 745:
[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]
Looks like a Kolakoski sequence?: False</pre>
 
=={{header|Phix}}==
{{trans|C}}
<lang Phix>function kolakoski(sequence cycle, integer n)
sequence s = {}
integer k = 1
while length(s)<n do
integer c = cycle[mod(k-1,length(cycle))+1]
s &= repeat(c,iff(k>length(s)?c:s[k]))
k += 1
end while
s = s[1..n]
return s
end function
function possible_kolakoski(sequence s)
integer count = 1
sequence rle = {}
for i=2 to length(s) do
if s[i]==s[i-1] then
count += 1
else
rle &= count
count = 1
end if
end for
-- (final count probably incomplete, so ignore it)
return rle = s[1..length(rle)]
end function
constant cycles = {{1,2},20,
{2,1},20,
{1,3,1,2},30,
{1,3,2,1},30}
 
for i=1 to length(cycles) by 2 do
{sequence c, integer n} = cycles[i..i+1]
sequence s = kolakoski(c,n)
printf(1,"First %d members of the sequence generated by %s\n", {n,sprint(c)})
?s
bool p = possible_kolakoski(s)
printf(1,"Possible Kolakoski sequence? %s\n\n", {iff(p ? "Yes" : "No")})
end for</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? Yes
 
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? Yes
 
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? Yes
 
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? No
</pre>
 
=={{header|Python}}==
7,803

edits