I have to say thats it been a long time since I sat back and was amazed by what 
people can do.

My knowledge of SQL is limited, whilst I recognise it is a functional language, 
I had no idea you could solve Sudoku in it.

I take my hat off to the real experts. The downside of this is I now really, 
really understand how little I know the language :)

Rob.

On 18 Jan 2014, at 17:50, Dan Kennedy <danielk1...@gmail.com> wrote:

> 
> Beaten by minutes!
> 
> 
> /* The input suduko. */
> WITH RECURSIVE input(sud) AS (
>  VALUES(
>    '53  7    6  195    98    6 8   6   34  8 3  17   2   6 6 28    419  5    
> 8  79'
>  )
> ),
> 
> /* A table filled with digits 1..9, inclusive. */
> digits(z, lp) AS (
>  VALUES('1', 1)
>  UNION ALL SELECT
>  CAST(lp+1 AS TEXT), lp+1 FROM digits WHERE lp<9
> ),
> 
> /* The tricky bit. */
> x(s, ind) AS (
>  SELECT sud, instr(sud, ' ') FROM input
>  UNION ALL
>  SELECT
>    substr(s, 1, ind-1) || z || substr(s, ind+1),
>    instr( substr(s, 1, ind-1) || z || substr(s, ind+1), ' ' )
>  FROM x, digits AS z
>  WHERE ind>0
>  AND NOT EXISTS (
>    SELECT 1 FROM digits AS lp
>      WHERE z.z = substr(s, ((ind-1)/9)*9 + lp, 1)
>         OR z.z = substr(s, ((ind-1)%9) + (lp-1)*9 + 1, 1)
>         OR z.z = substr(s, (((ind-1)/3) % 3) * 3
>                          + ((ind-1)/27) * 27 + lp
>                          + ((lp-1) / 3) * 6
>                        , 1)
>  )
> )
> 
> SELECT s FROM x WHERE ind=0;
> 
> 
> 
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to