### comment on

 Need Help??
The game of sudoku is basically a 9x9 grid made out of 9 3x3 grids. The rule is quite simple: given the known numbers in the grid, fill in the rest of the numbers between 1 and 9, so that each number only appear once horizontally, virtically and within each of the 3x3 block...

To run the sudoku solver below, start the program, cut and paste the puzzles, the answer will be printed automatically.

```\$_=q`I=0;while(<>){chomp;next()if((/^\s*#/)or(!\$_));_z()unless@o;my@p=
+/(\S)/g;for(J=0;\$j<9;\$j++){_y(\$i,\$j,\$p[\$j])if(\$p[\$
j]=~/\d/)}if(++\$i>8){\$i=0;\$p=0;while(!_w()){if(\$p==\$c){\$p=0;_q()}\$p=\$c
+}_x();undef(@o)}}Zfor(I=0;\$i<9;\$i++){for(J=0;\$j<9;
\$j            +            +            )            {            \$
+         o            [            \$            i]
[\$            j       ]=   '            1   2345     6            7
+         8 9'}}\$c     =            0     }Ymy(\$ i,
\$j            ,     \$e)=   @            _ ;\$  o[     \$            i
+         ]       [\$   j            ]   =\$       e;
\$c            +   +;  fo   r            (     F=     0            ;
+         \$       f<   9            ; \$f         ++
){            n ex    t(   )            i     f(     \$            f
+         =     =\$     j            ) or  (\$o[   \$i
][            \$ f]<10);\$o[ \$            i     ][     \$            f
+         ]   =~       s            / \$e//    ;i f(
\$o            [       \$i   ]            [     \$f     ]            <
+         1 0)         {            _ y(      \$i ,\$
f,            \$       o[   \$            i ][\$f])}}fo r            (
+         F =0;\$f<9;   \$            f   ++){ne   xt
()            i            f            (            \$            f
+         =            =            \$            i)
or(\$o[\$f][\$j]<10);\$o[\$f][\$j]=~s/\$e//;if(\$o[\$f][\$j]<10){_y(\$f,\$j,\$o[\$f]
+[\$j])}}A=int(\$i/3)*3;B=int(\$j/3)*3;for(F=\$a;\$f<\$a+
3;            \$            f            +            +            )
+         {            f            o            r(
D=            \$            b            ;            \$            d
+<\$b+3;   \$ d++){next( )            i            f(
(\$            f            =            =            \$            i )a
+      nd (       \$d   =            =            \$j
))            o            r            (            \$            o [\$
+      f] [       \$d   ]            <            10
);            \$            o            [            \$            f
+][\$d]=   ~     s/     \$            e            //
;i            f            (            \$            o            [ \$f
+      ][ \$   d]       <            1            0)
{_            y            (            \$            f            , \$d
+      ,\$ o   [\$       f            ]            [\$
d]            )            }            }            }            }
+Wretur   n (1         )            i            f(
\$c            =            =            8            1            )
+         ;            f            o            r(
I=0;\$i<9;\$i++){for(J=0;\$j<9;\$j++){next()if(\$o[\$i][\$j]<10);forE(split(/
+/,\$o[\$i][\$j])){if((_v(\$i,\$j,\$e))or(_u(\$i,\$j,\$e))or
(_            t            (            \$            i            ,
+         \$            j            ,            \$e
))            )            {            _ y(\$i,\$     j            , \$e
+);re     t            u            r            n(
1)            i            f            (       \$c   =            =
+    81   )            ;            l            as
t}            }            }            }       fo   r            (
+    A=   0            ;            \$            a<
3;            \$            a            +     +)     {            f
+or(B     =            0            ;            \$b
<3            ;            \$            b   ++       )            {
+    fo   r            (            E            =1
;\$            e            <            1 0;         \$            e
+    ++   )            {            m            y@
p=            _            s            ( \$a*3,\$b*   3            , \$e
+);my     @            n            =            _r
(\$            a            *            3            ,            \$
+         b            *            3            ,\$
e);if((@p==1)and(@n>1)){for(I=0;\$i<9;\$i++){next()if((\$i>=\$a*3)and(\$i<\$
+a*3+3))or(\$o[\$i][\$p[0]]<10);\$o[\$i][\$p[0]]=~s/\$e//;
if            (            \$            o            [            \$
+         i            ]            [            \$p
[0 ]]<10)     {   _y(\$     i            ,            \$            p [0
+],\$o[\$i] [            \$            p            [0
]]       );   r et  ur     n            (            1            )
+    if   (            \$            c            ==
81       )}   }     }i     f            (            (            @
+    n=   =            1            )            an
d(     @p     >     1)     )            {            f            o
+  r(     J            =            0            ;\$
j<   9;       \$     j+     +            )            {            n
+ex       t            (            )            if
(( \$j         >     =\$     b            *            3            )
+an       d            (            \$            j<
\$b *3+3))or(\$ o [\$n[0]][\$j ]            <            1            0 );
+         \$            o            [            \$n
[0            ]            ]            [            \$            j
+         ]            =            ~            s/
\$e//;if(\$o[\$n[0]][\$j]<10){_y(\$n[0],\$j,\$o[\$n[0]][\$j]);return(1)if(\$c==8
+1)}}}}}}for(A=0;\$a<3;\$a++){for(B=0;\$b<3;\$b++){for(
E=            1            ;            \$            e            <
+         1            0            ;            \$e
++            )            {       my   @            p            =
+         _     s(\$a*3 ,            \$            b*
3,            \$            e     );my   @            n            =
+         _   r(       \$            a            *3
,\$            b            *   3,  \$e   )            ;            i
+         f ((         @            p            ==
1)            a            n d(    @n   =            =            2
+         ) ){  for(   G            =            0;
\$g            <            3 ;\$g++){nex t            (            )
+         i f(\$b    == \$            g            );
my            @            m       =_   s            (            \$
+         a *3      ,\$ g            *            3,
\$e            )            ;       my   @            l            =
+         _   r(\$a*3   ,            \$            g*
3,            \$            e            )            ;            i
+         f            (            (            @m
==1)and(join('',@n)==join('',@l))){forI(@n){H=3-\$b-\$g;for(J=\$h*3;\$j<\$h
+*3+3;\$j++){next()if(\$o[\$i][\$j]<10);\$o[\$i][\$j]=~s/\$
e/            /            ;            i            f            (
+         \$            o            [            \$i
][            \$            j            ]       <1   0            )
+         {            _ y(\$i,\$j,\$o [   \$i][\$j   ])
;r            e            t            u     rn(1   )            i
+         f            (       \$c   = =8      1) }}
}}            }            }            e   ls  if   (            (
+         @            n       ==   1 )a      nd (@
p=            =            2            ) ){    fo   r            (
+         G            =     0;     \$   g<3;\$g++ ){
ne            x            t            ( )if(\$a==\$g )            ;
+         m            y   @m       =         _s (\$
g*            3            ,            \$       b*   3            ,
+         \$            e   );       m       y@   l=
_r            (            \$            g       *3   ,            \$
+         b            * 3,         \$ e);if(     (@
l=            =            1            )            a            n
+         d            (            j            oi
n('',@p)==join('',@m))){forJ(@p){H=3-\$a-\$g;for(I=\$h*3;\$i<\$h*3+3;\$i++){
+next()if(\$o[\$i][\$j]<10);\$o[\$i][\$j]=~s/\$e//;if(\$o[\$
i]            [            \$            j            ]            <
+         1            0            )            {_
y(            \$            i            , \$j,\$o[     \$            i ][
+\$j])     ;            r            e            tu
rn            (            1            )       if   (            \$
+    c=   =            8            1            )}
}}            }            }            }       }}   }            r
+    et   u            r            n            (\$
c=            =            8            1     )}     V            m
+y(\$i     ,            \$            j            ,\$
e)            =            @            _   ;f       o            r
+    (F   =            0            ;            \$f
<9            ;            \$            f ++         )            {
+    ne   x            t            (            )i
f(            \$            f            = =\$j);ret   u            r n(
+0)if     (            \$            o            [\$
i]            [            \$            f            ]            =
+         ~            /            \$            e/
)}return(1)}Umy(\$i,\$j,\$e)=@_;for(F=0;\$f<9;\$f++){next()if(\$f==\$i);retur
+n(0)if(\$o[\$f][\$j]=~/\$e/)}return(1)}Tmy(\$i,\$j,\$e)=@
_;            A            =            i            n            t
+         (            \$            i            /3
)*            3            ; B=int(\$j   /   3)*3;f   o            r
+         (            F            =            \$a
;\$            f            < \$a         + 3;      \$f +            +
+         )            {            f            or
(D            =            \$ b;         \$ d<      \$b +            3
+         ;            \$            d            ++
){            n            e xt()if     (   \$f==\$i)a n            d
+         (            \$            d            ==
\$j            )            ;       re   t         ur n            (
+         0            )            i            f(
\$o            [            \$       f]   [       \$d   ]            =
+         ~            /            \$            e/
)}            }            r eturn(     1 )}Smy(     \$            i
+         ,            \$            j            ,\$
e)            =            @            _            ;            A
+         =            i            n            t(
\$i/3)*3;B=int(\$j/3)*3;my%k;for(F=\$a;\$f<\$a+3;\$f++){for(D=\$b;\$d<\$b+3;\$d+
++){\$k{\$d}++if(\$o[\$f][\$d]=~/\$e/)}}return(sort(keys(
%k            )            )            )            }            R
+         m            y            (            \$i
,\$   j,\$e     )            =   @_;A=i   n            t            (
+  \$i/3)* 3            ; B=int(\$j   /            3)
*3 ;m  y%     k            ; fo      r( F            =            \$
+a;       \$            f <\$         a            +3
;\$     f+     +            ) {f      or (            D            = \$b
+         ;            \$ d<         \$            b+
3;     \$d     +            +   ){\$k{\$f} +            +            i f(
+  \$o[\$   f            ] [\$d]=~     /            \$e
/)     ;}     ;            }         re t            u            r n(
+so    rt (            k       ey   s            (%
k)     ))     }            Q       sr   a            n            d (t
+      im e            )       ;w   h            il
e( ){F=int(ra n            d (9));D     =            i            n
+t(rand   (            9 ));nex     t            ()
if            (            \$            o            [            \$
+         f            ]            [            \$d
]<10);E=\$o[\$f][\$d];\$e=substr(\$e,int(rand(length(\$e))),1);_y(\$f,\$d,\$e);
+last};}Xfor(my \$i=0;\$i<9;\$i++){print(join(chr(32),
@{\$o[\$i]}),"\n");;}print("\n");};`;s/\s//gx;s/(?<!\\)([Q-Z])/sub _\l\$1
+\{/gx;s/([A-J])/my \\$\l\$1/gx;s/formy/for my/g;eval
Puzzles in the form of:
```# Puzzle #1

* 8 * * * * * 4 *
* 3 * * * 8 * * *
* * 1 * * 2 * 6 3
* * 2 8 4 7 * * 6
* * * * * * * * *
7 * * 2 9 3 5 * *
1 2 * 5 * * 7 * *
* * * 3 * * * 1 *
* 9 * * * * * 5 *

# Puzzle #2

* * * * 1 8 5 * 9
* * 5 4 * * * * *
* * 4 * 6 9 * 2 7
7 4 * * * * * * *
* 1 * * * * * 5 *
* * * * * * * 8 6
5 7 * 6 8 * 4 * *
* * * * * 7 6 * *
8 * 3 1 9 * * * *

# Puzzle #3

* * * 9 * * * * *
* 9 * 2 * * 8 * *
3 8 * * * * 7 * 9
* * * * 4 1 2 * *
9 * * * * * * * 7
* * 4 6 3 * * * *
7 * 2 * * * * 4 5
* * 5 * * 7 * 3 *
* * * * * 4 * 7 *

In reply to Sudoku Solver by Roger

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":

• Are you posting in the right place? Check out Where do I post X? to know for sure.
• Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
<code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
• Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
• Want more info? How to link or How to display code and escape characters are good places to start.

Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
As of 2023-02-09 13:07 GMT
Sections?
Information?
Find Nodes?
Leftovers?
Voting Booth?