27 lines
586 B
Plaintext
27 lines
586 B
Plaintext
func create_generator(arr) {
|
|
Enumerator({|f|
|
|
var s = []
|
|
var i = 0
|
|
loop {
|
|
var t = arr[i++ % arr.len]
|
|
s << t
|
|
f(var v = s.shift)
|
|
s << (v-1).of(t)...
|
|
}
|
|
})
|
|
}
|
|
|
|
var tests = [
|
|
[20, [1,2]],
|
|
[20, [2,1]],
|
|
[30, [1,3,1,2]],
|
|
[30, [1,3,2,1]]
|
|
]
|
|
|
|
for num,arr in (tests) {
|
|
say "\nFirst #{num} of the sequence generated by #{arr}:"
|
|
var res = create_generator(arr).first(num)
|
|
var rle = res.run_length.map{.tail}
|
|
say "#{res}\nPossible Kolakoski sequence? #{res.first(rle.len) == rle}"
|
|
}
|