Hi! I was wondering what a perl 6 program of a game of Reverse would look like?

see http://e-scribe.com/news/193

================================================

Ruby (10 lines, 274 bytes)

numbers = (1..9).sort_by{ rand }
steps = 0

while numbers != numbers.sort
 puts numbers.join(" ")
 print "Reverse how many? "
 flipcount = gets.to_i
 numbers[0...flipcount] = numbers[0...flipcount].reverse
 steps += 1
end

print "Done! That took you #{steps} steps.\n"

=================================================

Python (9 lines, 304 bytes)

import random

numbers = random.sample(range(1,10), 9)
steps = 0

while numbers != sorted(numbers):
   print " ".join(map(str, numbers))
   flipcount = int(raw_input("Reverse how many? "))
   numbers[:flipcount] = reversed(numbers[:flipcount])
   steps += 1

print "Done! That took you %d steps." % steps


=========================================================

PHP (12 lines, 381 bytes)

$numbers = range(1, 9);
shuffle($numbers);
$sorted = $numbers;
sort($sorted);
$steps = 0;

while ($numbers != $sorted)
   {
   print implode(" ", $numbers) . "\n";
   print "Reverse how many? ";
   $flipcount = (int)trim(fgets(STDIN));
array_splice($numbers, 0, $flipcount, array_reverse(array_slice($numbers, 0, $flipcount)));
   $steps++;
   }

print "Done! That took you $steps steps.\n";

==========================================================

perl 5 (9 lines, 353 bytes)

use FreezeThaw qw(cmpStr);

my @a1_9  = (1 .. 9);
my @numbers = sort {rand(10) > $a} @a1_9;

for (my $steps = 0; cmpStr([EMAIL PROTECTED], [EMAIL PROTECTED]); ++$steps) {
   print join(" ", @numbers), "\nReverse how many? ";
   my $flipcount = <STDIN>;
   @numbers[0..$flipcount - 1] = reverse(@numbers[0..($flipcount-1)]);
}

print "Done! That took you $steps steps.\n";

==================================================================

Does perl6's Array class allow for more compact syntax, without FreezeThaw.pm?

Reply via email to