AutoHotkey Homepage AutoHotkey Community
Let's help each other out
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

QQwing - Sudoku Generator and Solver

 
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Utilities & Resources
View previous topic :: View next topic  
Author Message
BoBo
Guest





PostPosted: Wed Dec 20, 2006 10:32 am    Post subject: QQwing - Sudoku Generator and Solver Reply with quote

Quote:
QQwing is a Sudoku puzzle generator and solver. It offers the following features.

Fast. It can solve 1000 puzzles in 1 second and generate 1000 puzzles in 25 seconds.
Uses logic. Uses as many solve techniques as possible when solving puzzles rather than guessing.
Rates puzzles. Most generators don't give an indication of the difficulty of a Sudoku puzzle. QQwing does.
Can print solve instructions. Tells steps that need to be taken to solve any puzzle.
Customizable output style. Including a CSV style that is easy to import into a database.

[Home]
Back to top
BoBo
Guest





PostPosted: Wed Dec 20, 2006 10:37 am    Post subject: Reply with quote

@Laszlo (or other 'beautifull minded' geeks. Hey, just kidding Laughing)

Code:
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
  --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                Ouput 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
Cool
Back to top
PhiLho



Joined: 27 Dec 2005
Posts: 6702
Location: France (near Paris)

PostPosted: Wed Dec 20, 2006 12:14 pm    Post subject: Reply with quote

GPL software, written in C++, for the curious minds...
_________________
vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")
Back to top
View user's profile Send private message Visit poster's website
JBensimon



Joined: 16 Nov 2004
Posts: 130
Location: New York

PostPosted: Fri Dec 29, 2006 6:15 am    Post subject: Reply with quote

Hmm, I'll have to check the license terms on this one: if they're "liberal", I might be able to use it to add a "generate puzzle" option to Sudoku Sensei (creating puzzles with unique solutions is a whole different problem I didn't want to get into).

Thanks, BoBo.

Jacques.
Back to top
View user's profile Send private message Visit poster's website
JBensimon



Joined: 16 Nov 2004
Posts: 130
Location: New York

PostPosted: Tue Jan 09, 2007 5:46 am    Post subject: Reply with quote

Quote:
GPL software, written in C++, for the curious minds...

The pre-compiled Windows binary of QQWing turned out to require the (humongous) Cygwin POSIX emulation DLL (cygwin1.dll) to actually run under Windows, but luckily the code turned out to require only a few tweaks (mostly related to some scoping differences between MS C++ and whatever the author used) to successfully compile under Visual Studio, so I now have a 132KB native stand-alone Windows executable QQWingW.exe that I'll incorporate into Sudoku Sensei to provide a "New Puzzle" feature (in one of 4 different difficulty levels). Thanks again for the discovery, Bobo!

A question for those among you who may be more familiar with the GNU GPL than I am: I intend to inform the author of the use of his recompiled modified code within my program, to provide him with the modified code, and to add an acknowledgement in the About dialog. Does that satisfy the GPL or am I supposed to do anything else to remain faithful to its spirit?

Jacques.
Back to top
View user's profile Send private message Visit poster's website
PhiLho



Joined: 27 Dec 2005
Posts: 6702
Location: France (near Paris)

PostPosted: Tue Jan 09, 2007 6:58 am    Post subject: Reply with quote

JBensimon wrote:
A question for those among you who may be more familiar with the GNU GPL than I am: I intend to inform the author of the use of his recompiled modified code within my program, to provide him with the modified code, and to add an acknowledgement in the About dialog. Does that satisfy the GPL or am I supposed to do anything else to remain faithful to its spirit?
I believe that if you distribute compiled GPL code, you have to make the code available on your site, with the full licence. Maybe the full licence must be distributed with the binary as well (not sure, but I often see this).
_________________
vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")
Back to top
View user's profile Send private message Visit poster's website
JBensimon



Joined: 16 Nov 2004
Posts: 130
Location: New York

PostPosted: Tue Jan 09, 2007 7:03 am    Post subject: Reply with quote

Quote:
you have to make the code available on your site, with the full licence
Thanks. I guess in this case, "my site" would be the same autohotkey.net page from which Sudoku Sensei can be downloaded.

Jacques.
Back to top
View user's profile Send private message Visit poster's website
jonny



Joined: 13 Nov 2004
Posts: 3005
Location: Minnesota

PostPosted: Tue Jan 09, 2007 8:21 am    Post subject: Reply with quote

The license doesn't have to be distributed with the binary, only the source. And technically you don't need to make the code available on your site, but it does have to be clear that the code is available if one wanted to get it by some means. Usually the most convenient way to do that is to make it available at the same place the binary is.
Back to top
View user's profile Send private message
PhiLho



Joined: 27 Dec 2005
Posts: 6702
Location: France (near Paris)

PostPosted: Tue Jan 09, 2007 10:02 am    Post subject: Reply with quote

OK, thanks for clarifying my wording. I meant "on your site" as "were the binary is", since usually they are on the same place, but of course the only important thing is to make the source available (can even be in CVS/SVN/other form).
I never fully read the GPL, it is too technical (in lawyer field), wordy, lengthly...
I always saw the GPL (LICENCE.TXT) text file with the distributed binaries and sources, hence my belief.
The usual way to distribute the source with the binary, so they are always available simultaneously, but it grows the binary distribution and most end users just don't care for it...
_________________
vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")
Back to top
View user's profile Send private message Visit poster's website
JBensimon



Joined: 16 Nov 2004
Posts: 130
Location: New York

PostPosted: Wed Jan 10, 2007 10:42 am    Post subject: Reply with quote

Sudoku Sensei v1.8, featuring new puzzle generation using the native Windows port of Stephen Ostermiller's QQwing (QQwingW.exe), is now posted. The source code download (SudokuCode.zip) also contains the C++ source for QQwingW (and for Sam Jacob's VB.NET Clip2Bmp, currently used by the "Print Window" feature).

Jacques.
Back to top
View user's profile Send private message Visit poster's website
PhiLho



Joined: 27 Dec 2005
Posts: 6702
Location: France (near Paris)

PostPosted: Wed Jan 10, 2007 10:52 am    Post subject: Reply with quote

JBensimon wrote:
for Sam Jacob's VB.NET Clip2Bmp, currently used by the "Print Window" feature).
Requiring to have .NET to just print out a window is a bit of overkill... Did you looked at the screen capture tools written around GDI+?
_________________
vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")
Back to top
View user's profile Send private message Visit poster's website
JBensimon



Joined: 16 Nov 2004
Posts: 130
Location: New York

PostPosted: Wed Jan 10, 2007 11:21 am    Post subject: Reply with quote

Quote:
Requiring to have .NET to just print out a window is a bit of overkill
Agreed. I made a note of this current limitation (for the print feature only) on the Help screen, but I am planning to revisit the matter before the next version since I want to add sequential "snapping" for documenting solutions. Toralf did provide me with some links to your GDI+ code, which I did read one night but haven't yet revisited for full "absorption". Smile I did also consider using Ken Silverman's PNGOUT, a 40KB Win32 console app, but I'd prefer to use your work. That code still good? or did you post something more recently in some other thread?

Thanks,

Jacques.
Back to top
View user's profile Send private message Visit poster's website
JBensimon



Joined: 16 Nov 2004
Posts: 130
Location: New York

PostPosted: Wed Jan 10, 2007 11:25 am    Post subject: Reply with quote

... and why have I recently had to scroll horizontally to read posts in this forum?? They don't seem to wrap within my browser's window, even when maximized?
Back to top
View user's profile Send private message Visit poster's website
PhiLho



Joined: 27 Dec 2005
Posts: 6702
Location: France (near Paris)

PostPosted: Wed Jan 10, 2007 1:56 pm    Post subject: Reply with quote

JBensimon wrote:
... and why have I recently had to scroll horizontally to read posts in this forum?
In this one, it is BoBo's code section which is large, which I didn't noticed because by CodeBlock script is adding horizontal scrolling on the code section.

@JBensimon: No major changes in the GDI+ library.
_________________
vPhiLho := RegExReplace("Philippe Lhoste", "^(\w{3})\w*\s+\b(\w{3})\w*$", "$1$2")
Back to top
View user's profile Send private message Visit poster's website
JBensimon



Joined: 16 Nov 2004
Posts: 130
Location: New York

PostPosted: Wed Jan 10, 2007 6:58 pm    Post subject: Reply with quote

Quote:
it is BoBo's code section which is large
Thanks, that explains it.
Quote:
No major changes in the GDI+ library
Thank you again. [I realized I have to get on the latest AHK version since you started using the "?" conditional construct in at least one of your libraries. I'm usually a couple of revs behind.]

Jacques.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    AutoHotkey Community Forum Index -> Utilities & Resources All times are GMT
Page 1 of 1

 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum


Powered by phpBB © 2001, 2005 phpBB Group