in reply to Spreading out the elements
#!/usr/bin/perl sub interleave { my @elems = sort { $$a[1] <=> $$b[1] or $$a[0] cmp $$b[0] } ( ["A", $_[0]], ["B", $_[1]] ); $elems[0][1]-- if $elems[0][1] > 1; my $div = sprintf "%d", $elems[1][1] / $elems[0][1]; my $mod = $elems[1][1] % $elems[0][1]; if ($mod % 2 == 0) { $elems[1][1] -= $mod; $mod = $mod / 2; } else { $mod = 0 } print $elems[0][0] . $elems[1][0] x $mod; $elems[0][1]-- if $elems[0][1] == 1; until ($elems[0][1] <= 1) { print $elems[1][0] x $div . $elems[0][0]; $elems[0][1]--; $elems[1][1] -= $div; } print $elems[1][0] x $elems[1][1] . $elems[1][0] x $mod . $elems[0][0] x $elems[0][1] . "\n"; } interleave (@ARGV);
|
|---|