- or download this
use integer;@A=split//,<>;sub R{for$i(0..80){next if$A[$i];my%t=map{$_
+/9==$i/9||$_%9==$i%9||$_/27==$i/27&&$_%9/3==$i%9/3?$A[$_]:0=>1}0..80;
+R($A[$i]=$_)for grep{!$t{$_}}1..9;return$A[$i]=0}die@A}R
- or download this
* Original Eccles & Toad solution (slightly modified)
* Mark Byers reduced it to 187 bytes
...
* Simon Stroh changed @A=split//,<> to $/=\1;@A=<> to reduce the prog
+ram to 179 bytes
* Mitsuru Kariya changed @A[map{ ... }] to map@A[ ... ] to reduce th
+e program to 178 bytes
* Ton Hospel shortened the program to 121 bytes
- or download this
$_=$`.$_.$'.<>;split//;${/[@_[map{$i-($i="@-")%9+$_,9*$_+$i%9,9*$_%26+
+$i-$i%27+$i%9-$i%3}0..8]]/o||do$0}for/0/||print..9
- or download this
$_=$`.$_.$'.<>;split//;map{/[@_[map{$i-($i="@-")%9+$_,9*$_+$i%9,9*$_%2
+6+$i-$i%27+$i%9-$i%3}0..8]]/o||do$0}/0/||print..9