Anatomy of a CSP solver

This is a follow up post to SudokuH – Fast Sudoku Solver in Haskell.

Let’s see how SudokuH is made. I will try to be as little technical as possible, but it may still be a long read.

Haskell

The first surprise! You open up the source code, and what do you see? Pure awesomeness. This has little to do with my pro skills (that’s short for programming skills, if you wonder), and more with Haskell. Let me tell you, I love Haskell. My feelings towards it deserve a separate post, so I will just say that Functional Programming is powerful and elegant. It does take some time to get used to but after this writing in imperative languages (like C, Java) feels… obsolete. If I had to implement the algorithms in SudokuSolver.hs in, say, Java, it might have very well become 500+ lines of code (compared to around 150 right now without the comments). So… if you don’t know Haskell, why not give it a try?

Continue reading

d3kod’s Mechanized Android

Update 30.04.2012 – Changed the mute/unmute pin to input and activated the pull-up resistor (because that’s the proper way to do it). Thanks frazzledbadger!

With my Mechanized Android now gone to it’s intended recipient (who’s been waiting for it for ages now, sorry for that!), here are the details of making it that may or may not help someone in my situation. For a great step-by-step explanation of the whole process follow the original guide. That’s what I did, anyway. Here I focus on the mute/unmute upgrade I made.

Continue reading