Sudoku Slam


Bill and I have been slaving over this site for months, and we’re finally (slowly) releasing it to the public. We think it’s (by far) the best Sudoku web site out there… for once, it’s more fun to solve Sudokus on the computer than it is with pencil and paper!

We wrote everything from scratch (puzzle generator, hint machine, solver UI, etc.), in javascript, c, perl, and python. It was a lot of fun but also lots of work.

So, if you (a) like Sudokus or (b) like any of my previous LJ posts, please link to this site yourself! Or send it to some friends. I mean, and send it to some friends.

My plea is desperate and shameless: that much javascript should never go to waste.

Of course, site feedback/comments are definitely welcome. Huzzah!

This entry was posted in Uncategorized. Bookmark the permalink.

18 Responses to Sudoku Slam

  1. cychan says:

    Two thumbs enthusiastically up! I’m not very good at Sudoku, so I don’t have a whole lot of experience solving them, but I felt I significantly improved over the course of the puzzles I just played in the last few hours. I recommend using the Smart Hints as a tool to learn the techniques used to solve these things.

    In the end, I think used the number highlighting as a gigantic crutch… I’d definitely be a lot worse without it. Maybe that’s the point?

    Did you guys already know all the techniques used to solve Sudoku puzzles, or did you figure that out in the process of writing your website? Also, how do you determine the difficulty of the puzzles? Do you generate a puzzle, solve it, then base the difficulty on the hardest technique required during the mechanical solve process?

    • aj says:

      Yeah we find highlighting cruicial after a while as well. It’s funny because when you go back to paper and pencil, you realize how tedious the highlighting is when you have to do it yourself.

      We knew many techniques but found others by surfing the web and looking at some other (offline) sudoku clients.

      Difficulty — we generate a crapload of puzzles using a very fast generator I wrote in C. Then we use the hint program to try to solve them. It can solve about 2/3. (The C program uses a contraint solver and DFS to generate puzzles. All the puzzles have unique solutions, but not all have “logically derivable” unique solutions that don’t invole some form of backtracking.)

      You’re right: the difficulty is based on a combination of the hardest move and the number of just hard moves.

  2. rwclark says:

    I don’t really get Sudoku. Can you explain it?

    • aj says:

      You have a 9×9 grid, composed of 9 3×3 grids.

      The grid starts out with some squares already filled with numbers 1-9. The goal is to fill out the rest of the squares, one number per square, such that each row, column, and 3×3 grid has each number 1-9 exactly once.

      That’s all there is to it. A crucial thing is that there’s only one correct answer per starting grid, so you should never have to guess — there’s a reason each number has to go in its spot.

      If you want, go to sudokuslam.com, start up a puzzle, and just keep clicking on “smart hint” and doing what it says. It should show you some basics of how to play.

      • If there is only one solution, it should be obvious that if you use *all* the information in the puzzle, then the value at each position is forced.

  3. johnxorz says:

    Awesome site! The interface is great!

    One thing that wasn’t clear to me was how much work the solver was doing in slam mode. Sometimes it filled in many obvious moves, often completing the entire board towards the end of the game. However, it didn’t always take all the fully constrained moves — there were times when I had only one possibility for a row, column, or box, but the solver didn’t fill it in.

    • aj says:

      Wow, really? That’s deifnitely not supposed to happen. Could you bookpark a puzzle (Tools->Save/share this puzzle) in which a square isn’t getting autofilled and send it to me? That would be great.

      Also thanks for the compliments!

      AJ

      • johnxorz says:

        It happens in just about every puzzle. Try puzzle #303. Shouldn’t column 3, row 7 be assigned 1, and column 8, row 5 be assigned 9?

        • aj says:

          Ah I see. Nope, autofill only fills in a number in a square if the number is the only possible candidate for the box (explicitly). It does not fill it in if there’s some implicit reason why the number has to go there (e.g. only place in that 3×3 box that this particular number could go).

          In general, you’re in charge of the implicit stuff.

          If you use candidate highlighting a lot, then the implicit things become more obvious. But many people don’t use it at all, so an aggressive autofill like that might appear confusing (and remove some of the challenge).

          In the future, we might have a “variable-power” autofill where you can set how smart it is yourself … some people could have it do nothing, and others could have it automatically do all but the hardest moves. Could be cool :).

      • johnxorz says:

        Also, the smart hint system is great. That’s how I learned how to play. ;)

  4. Anonymous says:

    [deleted]

    Sorry

  5. Anonymous says:

    Nice, easy to follow site. Keep up the good work.

    Definately a permanent bookmark!
    Good job!

  6. Anonymous says:

    Not a big fan of that particular set of 5 – I never use “aught”; I can’t imagine using “custom” to mean “usual” (I’d use “customary” in that case); I’ve never heard someone use impregnable with that meaning; resign has two different pronunciations for the two different meanings; and shank I’m just not familiar with outside the Passover meaning.

    The list does have my favorite autoantonym though: table – table is used in identical contexts (and with identical pronunciation, etc.) to mean both “discuss something during a meeting” and “stop discussing something during a meeting”. What the heck is up with that?

    Lee

  7. Anonymous says:

    Hello

    I’m new here, just wanted to say hello and introduce myself.