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