七行プログラミング part4

このエントリーをはてなブックマークに追加
# options:
# -d : 同じ数字を使わない
# -o : 1組の数字につき1つの答を出力 (出現順序を無視)
# -z : 0を含めない

${"$_"}=1for join('',@ARGV)=~/\w/g;@U=qw(+ - * /);@u=map[@U[$_&3,$_>>2&3,$_>>4&
3]],0..63;for(19..9999){my%c;next if$h{join'',sort@v=($n=sprintf'%04d',$_)=~
/./g}++&&$o||$z&&$n=~/0/||$d&&(grep$c{$_}++,@v);O:for(@u){@x=(@$_,@v);for(map
eval"\"$_\"",grep s/(\d)/\$x[$1]/g,qw/(304)1(526) ((304)15)26 30(41(526))
30((415)26) (30(415))26/){if(10==eval){print"$n:$_\n";last O}}}}

漏れがある気がするので直して下さい。