#!/usr/bin/perl -w use strict; my ($z,$count); for my $i (102..987){ my ($R,$E,$D) = split "", $i; next if ($R eq $E || $R eq $D || $E eq $D); for my $j (102..987){ my ($F,$O,$R2) = split "", $j; next if ($R2 ne $R); next if ($F eq $O || $F eq $R || $O eq $R); next if ($E eq $F || $E eq $O || $E eq $R || $D eq $F || $D eq $O || $D eq $R ); my $danger = $i*$j; next if (cuenta($F,$danger) !=0 ); next if (cuenta($O,$danger) !=0 ); next if (length($danger)!=6); my ($d,$a,$n,$g,$e,$r) = split "", $danger; next if ($d ne $D || $e ne $E || $r ne $R); # $z = $i.$j; # next if (cuenta($a,$z) !=0 ); # next if (cuenta($n,$z) !=0 ); # next if (cuenta($g,$z) !=0 ); next if ($a eq $n || $a eq $g || $n eq $g || $d eq $a || $d eq $n || $d eq $g || $e eq $a || $e eq $n || $e eq $g || $r eq $a || $r eq $n || $r eq $g ); $z = $i.$j.$danger; next if (cuenta($a,$z) !=1); next if (cuenta($n,$z) !=1); next if (cuenta($g,$z) !=1); next if (cuenta($r,$z) !=3); next if (cuenta($e,$z) !=2); next if (cuenta($d,$z) !=2); $count++; print "Solución $count\n"; print " $i\n"; print "x $j\n"; print "------\n"; print "$danger\n\n"; } } sub cuenta{ my ($char, $string) = @_; # my $c = 0; # ++$c while ($cadena =~ /$letra/g); # return $c; return scalar( () = $string =~ /$char/g ); } __END__ ! ---------------------------------------------------------- ! This program solve the following puzzle: ! RED ! x FOR ! ------- ! DANGER ! where each distinct letter represents a different digit. ! Moreover, R, F and D cannot be zero. ! ----------------------------------------------------------