Euclidean rhythm: Difference between revisions

Add Perl implementation
(Add Lua implementation)
(Add Perl implementation)
Line 440:
<pre>
1 0 0 1 0 1 0 0 1 0 1 0 0
</pre>
 
=={{header|Perl}}==
{{trans|Python}}
<syntaxhighlight lang="Perl">
use strict;
use warnings;
 
sub E {
my ($k, $n) = @_;
my @s = map { $_ < $k ? [1] : [0] } (0..$n-1);
 
my $d = $n - $k;
$n = $k > $d ? $k : $d;
$k = $k < $d ? $k : $d;
my $z = $d;
 
while ($z > 0 || $k > 1) {
foreach my $i (0..$k-1) {
push(@{$s[$i]}, @{$s[-1 - $i]});
}
splice(@s, -$k);
$z -= $k;
$d = $n - $k;
$n = $k > $d ? $k : $d;
$k = $k < $d ? $k : $d;
}
 
return map { @$_ } @s;
}
 
my $sequence = join('', E(5, 13));
print "$sequence\n";
# Expected output: 1001010010100
</syntaxhighlight>
{{out}}
<pre>
1001010010100
 
</pre>
 
337

edits