diff options
| -rw-r--r-- | challenge-192/luca-ferrari/raku/ch-2.p6 | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/challenge-192/luca-ferrari/raku/ch-2.p6 b/challenge-192/luca-ferrari/raku/ch-2.p6 new file mode 100644 index 0000000000..44ddbb5c40 --- /dev/null +++ b/challenge-192/luca-ferrari/raku/ch-2.p6 @@ -0,0 +1,34 @@ +#!raku + +# Perl Weekly Challenge 192 + +sub MAIN( *@n is copy where { @n.elems == @n.grep( * ~~ Int ).elems } + , :$verbose = False ) { + my $elem = @n.sum / @n.elems; + '-1'.say and exit if ( $elem.Int !~~ $elem ); + + my @moves; + @moves.push: [@n]; + while ( @n.grep( * ~~ $elem ).elems != @n.elems ) { + for 0 ..^ @n.elems -> $index { + if ( @n[ $index ] == @n.max ) { + for 0 ..^ @n.elems -> $borrow { + next if $borrow == $index; + next if @n[ $borrow ] >= @n[ $index ]; + next if @n[ $borrow ] >= $elem; + @n[ $borrow ]++; + last; + } + + @n[ $index ]--; + } + + } + + @moves.push: [@n]; + } + + + @moves.join( "\n" ).say if $verbose; + @moves.elems.say; +} |
