# 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}}}}
漏れがある気がするので直して下さい。