Dominoes: Difference between revisions

m (→‎{{header|Phix}}: oops, wrong output)
Line 77:
+ +
1+2 6+2 6 5+0 4
</pre>
 
=={{header|Perl}}==
<lang perl>#!/usr/bin/perl
 
use strict; # https://rosettacode.org/wiki/Dominoes
use warnings;
 
my $gap = qr/(.{15}) (.{15})/s;
my $grid = <<END;
0 5 1 3 2 2 3 1
0 5 5 0 5 2 4 6
4 3 0 3 6 6 2 0
0 6 2 3 5 1 2 6
1 1 3 0 0 2 4 5
2 1 4 3 3 4 6 6
6 4 5 1 5 4 1 4
END
eval { find( 0, 0, $grid ) };
 
$grid = <<END;
0 0 0 1 1 1 0 2
1 2 2 2 0 3 1 3
2 3 3 3 0 4 1 4
2 4 3 4 4 4 0 5
1 5 2 5 3 5 4 5
5 5 0 6 1 6 2 6
3 6 4 6 5 6 6 6
END
eval { find( 0, 0, $grid ) };
 
sub find
{
my ($x, $y, $try) = @_;
if( $x > $y )
{
$x = 0;
if( ++$y > 6 ) # solved
{
print "\nfound:\n\n", $grid | $try;
die;
}
}
while( $try =~ /(?=(?|$x$gap$y|$y$gap$x))/g ) # vertical
{
my $new = $try;
substr $new, $-[0], 33, " $1+$2 ";
find( $x + 1, $y, $new );
}
while( $try =~ /(?=$x $y|$y $x)/g ) # horizontal
{
my $new = $try;
substr $new, $-[0], 3, ' + ';
find( $x + 1, $y, $new );
}
}</lang>
{{out}}
<pre>
 
found:
 
0+5 1+3 2 2+3 1
+ +
0 5+5 0 5 2+4 6
+ +
4 3 0 3 6+6 2 0
+ + + +
0 6 2 3+5 1 2 6
+ +
1 1 3 0+0 2 4 5
+ + + +
2 1 4 3+3 4 6 6
+ +
6 4+5 1+5 4 1+4
 
found:
 
0+0 0+1 1+1 0+2
1 2+2 2 0+3 1+3
+ +
2 3+3 3 0 4 1+4
+ +
2+4 3+4 4 4 0+5
1 5 2+5 3+5 4+5
+ +
5 5 0+6 1+6 2 6
+ +
3+6 4+6 5+6 6 6
</pre>
 
Anonymous user