I have started porting http://norvig.com/sudoku.html this to Elixir to learn the basics. After a few false starts I got far with code that at least to my eyes doesn’t look particularly horrible.
It might be argued my Enum.reduce() loops are a bit cheating… and actually, are they? Is this very bad practice?
The bigger problem is I can’t really get the actual search working. Any pointers (or captures because this language doesn’t have pointers )?
Finally the display is not finished but that’s not a big challenge. I am still very confused by when and how does Elixir decide to print the integers represented by a charlist (like, how do you convert a charlist to a string and not get 4950 instead of AB etc) and when it decides to use the characters but I guess practice will help.
Enum.reduce is one of the 2 basic operations, the other being flat_map, always feel free to use it. ^.^
Can always carry an environment and pretend pointers are keys on a map and the values are what the pointers point to, just thread the environment in and out of all calls.
“If every element in a charlist is an integer and each integer is inside the Printable Range then display it like a String by default”, you can of course override the default to print it however you want too, see the options on the calls.
Or just put 0 on the list somewhere, it is not printable so will always cause the list to not be printable too. ^.^