Jump to content

Kolakoski sequence: Difference between revisions

→‎{{header|Perl 6}}: Add a Perl6 example
m (fmt, series-> sequence)
(→‎{{header|Perl 6}}: Add a Perl6 example)
Line 240:
 
</pre>
 
=={{header|Perl 6}}==
{{works with|Rakudo|2018.04.01}}
 
<lang perl6>sub kolakoski (*@seed) {
my @l = @seed[0] == 1 ?? flat @seed[0] xx @seed[0], @seed[1] xx @seed[1] !! flat @seed[0] xx @seed[0];
my $k = @seed[0] == 1 ?? 1 !! 0;
my @k = flat @l, { $k++; flat @seed[$k % +@seed] xx @k[$k] } ... *;
}
 
sub rle (*@series) { [@series.join.subst(/((.)$0*)/, -> { $0.chars }, :g).comb».Int] }
 
# Testing
for [1, 2], 20,
[2, 1], 20,
[1, 3, 1, 2], 30,
[1, 3, 2, 1], 30
-> @seed, $terms {
say "\n## $terms members of the series generated from { @seed.perl } is:\n ",
my @kolakoski = kolakoski(@seed)[^$terms];
my @rle = rle @kolakoski;
say " Looks like a Kolakoski sequence?: ", @rle[*] eqv @kolakoski[^@rle];
}</lang>
{{out}}
<pre>## 20 members of the series generated from [1, 2] is:
[1 2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1]
Looks like a Kolakoski sequence?: True
 
## 20 members of the series generated from [2, 1] is:
[2 2 1 1 2 1 2 2 1 2 2 1 1 2 1 1 2 2 1 2]
Looks like a Kolakoski sequence?: True
 
## 30 members of the series generated from [1, 3, 1, 2] is:
[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]
Looks like a Kolakoski sequence?: True
 
## 30 members of the series generated from [1, 3, 2, 1] is:
[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|Python}}==
10,339

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.