Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Add a sudoku solver to the recursive query tests in with1.test. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
679eff8759aa25368b977c0d26b78a9f |
User & Date: | drh 2014-01-18 18:33:44.994 |
Context
2014-01-20
| ||
14:17 | Do not run the tests in with2.test with SQLITE_OMIT_CTE builds. (check-in: 8a973912e9 user: dan tags: trunk) | |
2014-01-18
| ||
18:33 | Add a sudoku solver to the recursive query tests in with1.test. (check-in: 679eff8759 user: drh tags: trunk) | |
15:59 | Add extra test cases. No changes to code. (check-in: d38d485e58 user: dan tags: trunk) | |
Changes
Changes to test/with1.test.
︙ | ︙ | |||
363 364 365 366 367 368 369 370 | ..##+*##########+.++++ .......+####.... + ..+####+. ..#*.. ....# +.}} finish_test | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 | ..##+*##########+.++++ .......+####.... + ..+####+. ..#*.. ....# +.}} # Solve a sudoku puzzle using a recursive query # do_execsql_test 8.2 { 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; } {534678912672195348198342567859761423426853791713924856961537284287419635345286179} finish_test |