Kolakoski sequence: Difference between revisions
Content added Content deleted
(Added Wren) |
|||
Line 1,420: | Line 1,420: | ||
[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, 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> |
Possible Kolakoski sequence? False</pre> |
||
=={{header|Wren}}== |
|||
{{trans|Go}} |
|||
<lang ecmascript>var kolakoski = Fn.new { |c, slen| |
|||
var s = List.filled(slen, 0) |
|||
var i = 0 |
|||
var k = 0 |
|||
while (true) { |
|||
s[i] = c[k % c.count] |
|||
if (s[k] > 1) { |
|||
for (j in 1...s[k]) { |
|||
i = i + 1 |
|||
if (i == slen) return s |
|||
s[i] = s[i-1] |
|||
} |
|||
} |
|||
i = i + 1 |
|||
if (i == slen) return s |
|||
k = k + 1 |
|||
} |
|||
} |
|||
var possibleKolakoski = Fn.new { |s| |
|||
var slen = s.count |
|||
var rle = [] |
|||
var prev = s[0] |
|||
var count = 1 |
|||
for (i in 1...slen) { |
|||
if (s[i] == prev) { |
|||
count = count + 1 |
|||
} else { |
|||
rle.add(count) |
|||
count = 1 |
|||
prev = s[i] |
|||
} |
|||
} |
|||
// no point adding final 'count' to rle as we're not going to compare it anyway |
|||
for (i in 0...rle.count) { |
|||
if (rle[i] != s[i]) return false |
|||
} |
|||
return true |
|||
} |
|||
var ias = [ |
|||
[1, 2], |
|||
[2, 1], |
|||
[1, 3, 1, 2], |
|||
[1 ,3, 2, 1] |
|||
] |
|||
var slens = [20, 20, 30, 30] |
|||
var i = 0 |
|||
for (ia in ias) { |
|||
var slen = slens[i] |
|||
var kol = kolakoski.call(ia, slen) |
|||
System.write("First %(slen) members of the sequence generated by ") |
|||
System.print("%(ia):") |
|||
System.print("%(kol)") |
|||
var p = possibleKolakoski.call(kol) |
|||
var poss = p ? "Yes" : "No" |
|||
System.print("Possible Kolakoski sequence? %(poss)\n") |
|||
i = i + 1 |
|||
}</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|zkl}}== |
=={{header|zkl}}== |