$|=1; while(1){ l1: { $a=sprintf "%04d",int rand 10000; redo l1 if $a=~/(.).*\1/; @a=$a=~/./g; for(@h){ @b=/./g; $u=$v=0; for$i(0..3){ $u+=$a[$i]==$b[$i]; for$j(0..3){ $v+=$i!=$j&&$a[$i]==$b[$j]; } } redo l1 if $u!=$b[4] || $v!=$b[5]; } print"@a\n"; $r=<>; $r=~s/\s//g; exit if $r==40; push@h,"$a$r"; } }