Instructions for QQwing

QQWing is a command line program that accepts many options.

qqwing <options>
Sudoku solver and generator.
  --generate <num>     Generate new puzzles
  --solve              Solve all the puzzles from standard input
  --difficulty <diff>  Generate only simple,easy, intermediate, or expert
  --symmetry <sym>     Symmetry: none, rotate90, rotate180, mirror, flip, or random
  --puzzle             Print the puzzle (default when generating)
  --nopuzzle           Do not print the puzzle (default when solving)
  --solution           Print the solution (default when solving)
  --nosolution         Do not print the solution (default when generating)
  --stats              Print statistics about moves used to solve the puzzle
  --nostats            Do not print statistics (default)
  --timer              Print time to generate or solve each puzzle
  --notimer            Do not print solve or generation times (default)
  --count-solutions    Count the number of solutions to puzzles
  --nocount-solutions  Do not count the number of solutions (default)
  --history            Print trial and error used when solving
  --nohistory          Do not print trial and error to solve (default)
  --instructions       Print the steps (at least 81) needed to solve the puzzle
  --noinstructions     Do not print steps to solve (default)
  --log-history        Print trial and error to solve as it happens
  --nolog-history      Do not print trial and error  to solve as it happens
  --one-line           Print puzzles on one line of 81 characters
  --compact            Print puzzles on 9 lines of 9 characters
  --readable           Print puzzles in human readable form (default)
  --csv                Output CSV format with one line puzzles
  --help               Print this message
  --about              Author and license information
  --version            Display current version number

Examples

Generate a single Sudoku

$ qqwing --generate
 . 4 3 | 5 . . | . . 2
 . . 2 | . . 4 | . 8 3
 . 1 . | . . . | 6 . .
-------|-------|-------
 . 8 . | 7 3 . | . . 5
 2 6 . | . 4 5 | . . .
 1 . . | . . 8 | . . .
-------|-------|-------
 . 7 . | 3 . . | . 6 .
 . . . | . . . | . . .
 . . . | 6 . 7 | . . .

Generate a single Sudoku and print the solution too

$ qqwing --generate --solution
 2 . . | . . 9 | . 8 .
 . 4 6 | . . . | . . .
 7 . . | 4 . 2 | 1 . .
-------|-------|-------
 6 . . | . . 1 | 4 . 8
 . . . | 6 3 . | . 2 .
 9 2 7 | . . . | . . 3
-------|-------|-------
 1 . . | 9 . . | 8 4 .
 . 9 . | . . . | . . .
 4 . . | . . . | . 6 .

 2 3 1 | 7 6 9 | 5 8 4
 5 4 6 | 3 1 8 | 2 9 7
 7 8 9 | 4 5 2 | 1 3 6
-------|-------|-------
 6 5 3 | 2 9 1 | 4 7 8
 8 1 4 | 6 3 7 | 9 2 5
 9 2 7 | 5 8 4 | 6 1 3
-------|-------|-------
 1 6 5 | 9 7 3 | 8 4 2
 3 9 2 | 8 4 6 | 7 5 1
 4 7 8 | 1 2 5 | 3 6 9

Generate ten puzzles and print out full stats in CSV format

$ qqwing --generate 10 --solution --csv --stats --timer
Puzzle,Solution,Time (milliseconds),Givens,Singles,Hidden Singles,Naked Pairs,Hidden Pairs,Pointing Pairs/Triples,Box/Line Intersections,Guesses,Backtracks,Difficulty
.13.....22.....48....7...19...9..8..7......2....3.......263.9..4.9.7.6....149...8,913584762257169483648723519136942857795816324824357196572638941489271635361495278,46.717,26,34,21,0,0,0,0,0,0,Easy,
5...7.6..41..53..7.6712...884.....1.....1.3.6...7...2........65......87..3.......,529478631418653297367129458846532719275914386193786524982347165654291873731865942,30.1,26,55,0,0,0,0,0,0,0,Simple,
...........8..4.1...4.7....8..3...69..71....4.95......4..51.7.3.7.8..9..5....6.8.,712983645938654217654271398841327569267195834395468172486519723173842956529736481,44.492,25,41,13,3,0,1,1,2,2,Expert,
.6..5..3...1.2..5.7....34..426.38.....3.......574.12.......7......81...7....6...1,264159738381724956795683412426538179913276584857491263138947625642815397579362841,28.002,26,55,0,0,0,0,0,0,0,Simple,
...6..4.9..8........3..9.....17.5...8.......1.4.3......3.....561......3..94..8..7,512673489978142563463859712321795648859426371746381295237914856185267934694538127,235.508,22,35,24,1,0,0,0,0,0,Intermediate,
.46...58.718.....65...4....1....675..8.....1..2...58.4.....74...69....7.2....1...,946712583718359246532648197193486752485273619627195834351967428869524371274831965,72.421,27,40,14,0,0,0,0,0,0,Easy,
6.......1...63.....8241...9.....5.1..4.......2.9..8..5..4....8.....2.46.5........,697852341451639278382417659873265914145973826269148735714396582938521467526784193,71.251,22,35,24,0,0,0,0,0,0,Easy,
..28.5..7.9..274......1...9.8....7313........4...71...........4.1.9...........253,142895367893627415756413829685249731371568942429371586238756194514932678967184253,74.806,24,37,20,0,0,0,0,0,0,Easy,
4....791....4.....2..5...365.3....2.....7.1...7.129......9.3...3.5....6.....6....,456237918931486572287591436513648729629375184874129653762953841395814267148762395,76.731,24,40,17,0,0,0,0,0,0,Easy,
........49.1.6.5....8....9.8..4.37.6....1....54...718.....39..7....4..5....7..81.,756981234921364578438572691819453726673218945542697183285139467197846352364725819,75.17,26,43,11,0,0,1,0,1,0,Expert,
10 puzzles generated in 0.757244 seconds.

Generate a puzzle of expert difficulty and print it in compact format

$ qqwing --generate --difficulty expert --compact
8........
......5.7
.......61
.1..869.5
....14...
.965....4
..8..7...
75.3....9
..9..13..

Solve a puzzle

$ echo ........49.1.6.5....8....9.8..4.37.6....1....54...718.....39..7....4..5....7..81. | qqwing --solve
 7 5 6 | 9 8 1 | 2 3 4
 9 2 1 | 3 6 4 | 5 7 8
 4 3 8 | 5 7 2 | 6 9 1
-------|-------|-------
 8 1 9 | 4 5 3 | 7 2 6
 6 7 3 | 2 1 8 | 9 4 5
 5 4 2 | 6 9 7 | 1 8 3
-------|-------|-------
 2 8 5 | 1 3 9 | 4 6 7
 1 9 7 | 8 4 6 | 3 5 2
 3 6 4 | 7 2 5 | 8 1 9

Solve a puzzle and print out complete stats and solve instructions

$ echo .....1.....2....9..1.97.83.7...2.6...81..6.4..9.....2....389.6....71........62... | qqwing --solve --stats --instructions --count-solutions
 9 4 8 | 2 3 1 | 7 5 6
 3 7 2 | 6 5 8 | 1 9 4
 5 1 6 | 9 7 4 | 8 3 2
-------|-------|-------
 7 5 4 | 8 2 3 | 6 1 9
 2 8 1 | 5 9 6 | 3 4 7
 6 9 3 | 1 4 7 | 5 2 8
-------|-------|-------
 1 2 7 | 3 8 9 | 4 6 5
 4 6 9 | 7 1 5 | 2 8 3
 8 3 5 | 4 6 2 | 9 7 1

1. Round: 1 - Mark given (Row: 1 - Column: 6 - Value: 1)
2. Round: 1 - Mark given (Row: 2 - Column: 3 - Value: 2)
3. Round: 1 - Mark given (Row: 2 - Column: 8 - Value: 9)
4. Round: 1 - Mark given (Row: 3 - Column: 2 - Value: 1)
5. Round: 1 - Mark given (Row: 3 - Column: 4 - Value: 9)
6. Round: 1 - Mark given (Row: 3 - Column: 5 - Value: 7)
7. Round: 1 - Mark given (Row: 3 - Column: 7 - Value: 8)
8. Round: 1 - Mark given (Row: 3 - Column: 8 - Value: 3)
9. Round: 1 - Mark given (Row: 4 - Column: 1 - Value: 7)
10. Round: 1 - Mark given (Row: 4 - Column: 5 - Value: 2)
11. Round: 1 - Mark given (Row: 4 - Column: 7 - Value: 6)
12. Round: 1 - Mark given (Row: 5 - Column: 2 - Value: 8)
13. Round: 1 - Mark given (Row: 5 - Column: 3 - Value: 1)
14. Round: 1 - Mark given (Row: 5 - Column: 6 - Value: 6)
15. Round: 1 - Mark given (Row: 5 - Column: 8 - Value: 4)
16. Round: 1 - Mark given (Row: 6 - Column: 2 - Value: 9)
17. Round: 1 - Mark given (Row: 6 - Column: 8 - Value: 2)
18. Round: 1 - Mark given (Row: 7 - Column: 4 - Value: 3)
19. Round: 1 - Mark given (Row: 7 - Column: 5 - Value: 8)
20. Round: 1 - Mark given (Row: 7 - Column: 6 - Value: 9)
21. Round: 1 - Mark given (Row: 7 - Column: 8 - Value: 6)
22. Round: 1 - Mark given (Row: 8 - Column: 4 - Value: 7)
23. Round: 1 - Mark given (Row: 8 - Column: 5 - Value: 1)
24. Round: 1 - Mark given (Row: 9 - Column: 5 - Value: 6)
25. Round: 1 - Mark given (Row: 9 - Column: 6 - Value: 2)
26. Round: 2 - Mark only possibility for cell (Row: 5 - Column: 4 - Value: 5)
27. Round: 2 - Mark only possibility for cell (Row: 9 - Column: 4 - Value: 4)
28. Round: 2 - Mark only possibility for cell (Row: 8 - Column: 6 - Value: 5)
29. Round: 2 - Mark only possibility for cell (Row: 3 - Column: 6 - Value: 4)
30. Round: 2 - Mark only possibility for cell (Row: 8 - Column: 8 - Value: 8)
31. Round: 2 - Mark single possibility for value in section (Row: 1 - Column: 4 - Value: 2)
32. Round: 2 - Mark single possibility for value in section (Row: 2 - Column: 4 - Value: 6)
33. Round: 2 - Mark single possibility for value in section (Row: 2 - Column: 6 - Value: 8)
34. Round: 2 - Mark only possibility for cell (Row: 4 - Column: 6 - Value: 3)
35. Round: 2 - Mark only possibility for cell (Row: 5 - Column: 5 - Value: 9)
36. Round: 2 - Mark only possibility for cell (Row: 6 - Column: 5 - Value: 4)
37. Round: 2 - Mark only possibility for cell (Row: 6 - Column: 6 - Value: 7)
38. Round: 2 - Mark single possibility for value in section (Row: 3 - Column: 9 - Value: 2)
39. Round: 2 - Mark single possibility for value in section (Row: 1 - Column: 9 - Value: 6)
40. Round: 2 - Mark single possibility for value in section (Row: 5 - Column: 1 - Value: 2)
41. Round: 2 - Mark single possibility for value in section (Row: 4 - Column: 9 - Value: 9)
42. Round: 2 - Mark single possibility for value in section (Row: 6 - Column: 9 - Value: 8)
43. Round: 2 - Mark only possibility for cell (Row: 6 - Column: 4 - Value: 1)
44. Round: 2 - Mark only possibility for cell (Row: 4 - Column: 4 - Value: 8)
45. Round: 2 - Mark single possibility for value in section (Row: 4 - Column: 8 - Value: 1)
46. Round: 2 - Mark single possibility for value in section (Row: 6 - Column: 7 - Value: 5)
47. Round: 2 - Mark single possibility for value in column (Row: 8 - Column: 2 - Value: 6)
48. Round: 2 - Mark single possibility for value in section (Row: 7 - Column: 2 - Value: 2)
49. Round: 2 - Mark single possibility for value in section (Row: 8 - Column: 7 - Value: 2)
50. Round: 2 - Mark single possibility for value in section (Row: 9 - Column: 7 - Value: 9)
51. Round: 2 - Mark single possibility for value in column (Row: 5 - Column: 7 - Value: 3)
52. Round: 2 - Mark only possibility for cell (Row: 5 - Column: 9 - Value: 7)
53. Round: 2 - Remove possibilities for naked pair in section (Row: 3 - Column: 1)
54. Round: 2 - Remove possibilities from hidden pair in row (Row: 1 - Column: 1 - Value: 8)
55. Round: 2 - Remove possibilities for column because all values are in one section (Row: 1 - Column: 2 - Value: 7)
56. Round: 3 - Mark guess (start round) (Row: 4 - Column: 3 - Value: 4)
57. Round: 4 - Mark only possibility for cell (Row: 4 - Column: 2 - Value: 5)
58. Round: 4 - Mark only possibility for cell (Row: 9 - Column: 2 - Value: 3)
59. Round: 4 - Mark only possibility for cell (Row: 8 - Column: 3 - Value: 9)
60. Round: 4 - Mark only possibility for cell (Row: 1 - Column: 3 - Value: 8)
61. Round: 4 - Mark only possibility for cell (Row: 1 - Column: 1 - Value: 9)
62. Round: 4 - Mark only possibility for cell (Row: 8 - Column: 1 - Value: 4)
63. Round: 4 - Mark only possibility for cell (Row: 2 - Column: 1 - Value: 3)
64. Round: 4 - Mark only possibility for cell (Row: 2 - Column: 5 - Value: 5)
65. Round: 4 - Mark only possibility for cell (Row: 1 - Column: 5 - Value: 3)
66. Round: 4 - Mark only possibility for cell (Row: 6 - Column: 1 - Value: 6)
67. Round: 4 - Mark only possibility for cell (Row: 3 - Column: 1 - Value: 5)
68. Round: 4 - Mark only possibility for cell (Row: 3 - Column: 3 - Value: 6)
69. Round: 4 - Mark only possibility for cell (Row: 6 - Column: 3 - Value: 3)
70. Round: 4 - Mark only possibility for cell (Row: 7 - Column: 1 - Value: 1)
71. Round: 4 - Mark only possibility for cell (Row: 8 - Column: 9 - Value: 3)
72. Round: 4 - Mark only possibility for cell (Row: 9 - Column: 1 - Value: 8)
73. Round: 4 - Mark single possibility for value in section (Row: 1 - Column: 8 - Value: 5)
74. Round: 4 - Mark only possibility for cell (Row: 9 - Column: 8 - Value: 7)
75. Round: 4 - Mark only possibility for cell (Row: 7 - Column: 7 - Value: 4)
76. Round: 4 - Mark only possibility for cell (Row: 1 - Column: 7 - Value: 7)
77. Round: 4 - Mark only possibility for cell (Row: 1 - Column: 2 - Value: 4)
78. Round: 4 - Mark only possibility for cell (Row: 2 - Column: 2 - Value: 7)
79. Round: 4 - Mark only possibility for cell (Row: 2 - Column: 7 - Value: 1)
80. Round: 4 - Mark only possibility for cell (Row: 2 - Column: 9 - Value: 4)
81. Round: 4 - Mark only possibility for cell (Row: 7 - Column: 9 - Value: 5)
82. Round: 4 - Mark only possibility for cell (Row: 7 - Column: 3 - Value: 7)
83. Round: 4 - Mark only possibility for cell (Row: 9 - Column: 3 - Value: 5)
84. Round: 4 - Mark only possibility for cell (Row: 9 - Column: 9 - Value: 1)

The solution to the puzzle is unique.
Number of Givens: 25
Number of Singles: 39
Number of Hidden Singles: 16
Number of Naked Pairs: 1
Number of Hidden Pairs: 1
Number of Pointing Pairs/Triples: 1
Number of Box/Line Intersections: 0
Number of Guesses: 1
Number of Backtracks: 2
Difficulty: Expert