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?