diff --git a/.codebook.toml b/.codebook.toml new file mode 100644 index 0000000..22b36fd --- /dev/null +++ b/.codebook.toml @@ -0,0 +1,8 @@ +words = [ + "jali", + "listf", + "luser", + "mlftp", + "pdp", + "turist", +] diff --git a/README.md b/README.md index d590492..feea938 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [Sudoku](https://en.wikipedia.org/wiki/Sudoku) is a logic based number-placement puzzle game originally from Japan. The word *sudoku* literally means *digit-single*. The objective is to fill a 9x9 grid with numbers between 1 and -9, without having a number repeat in a row, column or a 3x3 subgrid. Normally, +9, without having a number repeat in a row, column or a 3x3 sub grid. Normally, there are a few numbers preset. In a regular sudoku, the pre-filled numbers make sure, that exactly one solution for the puzzle exists. @@ -48,17 +48,17 @@ The rules are the following: once. - Every 3x3 sub-grid must contain every number between 1 and 9 exactly once. -## Solving Sudokus programatically +## Solving Sudokus algorithmically ### Backtracking (naïve approach) -Solving a Sudoku can be achieved in serveral ways. The most simple algorithm, is +Solving a Sudoku can be achieved in several ways. The most simple algorithm, is a backtracking algorithm. With this a sudoku can be resolved basically by brute-forcing it. In this case, we walk through each cell of the grid -recurseivly, and add a number. Then we check, if the grid is still valid. If it -is, we recursivly move on to the next column. If we find a number that doesn't +recursively, and add a number. Then we check, if the grid is still valid. If it +is, we recursively move on to the next column. If we find a number that doesn't match, we return to the previous incarnation, and try another number. In order -to check, if our grid is still valid, we can use simple function: +to check if our grid is still valid, we can use simple function: ```C // Function to check, if it is save to place num at mat[row][col] @@ -149,20 +149,20 @@ even without the front panel, but having the front panel is fancier. You can also run [simh](https://opensimh.org/) on a PC, but that would only be half the fun. -The PiDP-10 shold be booted into ITS, as this is the OS, this project is running -against. Now the only thing you need to do, is copy the source code files into -the file system of your PiDP-10. You can do this by using the `mlftp` tool, -installed on the machine your simulator runs on. You clone the repository and -run the following commands from the command line: +The PiDP-10 should be booted into ITS, as this is the OS, this project is +running against. Now the only thing you need to do, is copy the source code +files into the file system of your PiDP-10. You can do this by using the `mlftp` +tool, installed on the machine your simulator runs on. You clone the repository +and run the following commands from the command line: ```bash /opt/pidp10/bin/mlftp -w ITS "SUDOKU 1 JALI;" ./src/sudoku.s -/opt/pidp10/bin/mlftp -w ITS "PUZZL1 SUDOKU JALI;" ./src/puzzle_1.sudoku +/opt/pidp10/bin/mlftp -w ITS "PUZZLE 1 JALI;" ./src/puzzle_1.sudoku ``` This will copy the source code file, and the example puzzle file onto the -PiDP-10. Remmber to change the directory name in the ITS path form `JALI` to the -directory you want to copy to. +PiDP-10. Remember to change the directory name in the ITS path form `JALI` to +the directory you want to copy to. You can now edit both files in EMACS on the PiDP-10. However, if you prefer to edit your code in a somewhat more modern environment (your favourite IDE, for @@ -203,9 +203,9 @@ FREE BLOCKS #2=154 #3=169 #0=156 #1=171 To invoke the solver run it with: ``` -:SUDOKU PUZZL1 SUDOKU +:SUDOKU PUZZLE 1 ``` -This will pass the file `PUZZL1 SUDOKU` to the program, and start to solve it. +This will pass the file `PUZZLE 1` to the program, and start solving it. The result will be printed on the screen (once the project is finished).