Sudoku Solver

Versione italiana (english version below)

Oggi voglio presentarvi un risolutore di sudoku che ho scritto in C++. Si tratta di un programma non troppo complicato, ma che consente di esercitarsi bene nell’utilizzo del linguaggio.

Nota: risolve solo i sudoku più semplici

Il funzionamento è molto semplice: per ogni cella, il programma considera tutte le possibilità, da 1 a 9. Poi, per ogni cella, esclude le alternative impossibili: così via per tutte le celle, fino a risolvere il sudoku.

Il software ricava l’input dal file di testo ‘sudoku.txt’, che contiene il sudoku nella forma mostrata in figura.

sudokuOgni cella è separata da una virgola, ogni riga da un a capo;

le x rappresentano le celle vuote che il software dovrà riempire.

Il software è molto veloce: tutti i sudoku che ho provato sono stati risolti in meno di un secondo.

Il codice dovrebbe risultare abbastanza chiaro e di facile lettura. All’interno della funzione main(), durante la lettura del testo dal file, vi è un comando all’interno della direttiva #ifdef _WIN32. Quando si utilizza Windows, infatti, il carattere “a capo” è reso con la coppia CRLF (o ‘\r\n’), mentre su sistemi Unix solo con ‘\n’. Tale comando serve a rimuovere il carattere ‘\r’ e proseguire con il normale svolgimento del programma.

Stay tuned!


English version

Hi guys! Today I want to show you a sudoku solver I just wrote in C++. It is a software pretty simple, but that helps you to exercise using of the language.

Note: it can solve only simple sudoku

The idea is simple: for every cell, the software considers all the possibilities, from 1 to 9. Then, for every cell, it discards the impossible alternative: and so on, processing every cell, until the puzzle is solved.

The software takes input from the text file ‘sudoku.txt’, that contains the sudoku formatted as shown in the following picture:

sudoku

Every cell is separated by each other by a comma, every row by a new line;

x’s represent empty cells that the software will fill.

This software is really fast: it solved every sudoku I gave as input in less than one second.

The code should be easy to read. In the main() function, while reading the input file, there is an instruction inserted under the directive #ifdef _WIN32. When you use Windows, in fact, “new line” is achieved with the couple CRLF (that is ‘\r\n’), while on Unix with the only ‘\n’. This instruction removes the character ‘\r’, so the software can go on.

Stay tuned!

Andy won Instructables’ 123D Design Challenge!

Versione italiana (english version below)

Sono fiero di annunciare che il design di Andy ha vinto il premio Runner Up per l’Autodesk 123D Design Challenge su Instructables.com!

123D contest winner

Grazie a tutti quelli che hanno votato il progetto. Questo è solo il punto di partenza, uno stimolo per cercare di fare sempre meglio e aspirare a grandi traguardi.

Stay tuned!


English version

I am very proud to announce that Andy’s design has won the Runner Up prize in the Autodesk 123D Design Challenge on Instructables.com!

123D contest winner

Thanks to all who voted the project. This is only a starting point, a motivation to work harder and better, aiming for higher goals.

Stay tuned!

Design of Andy: the robot arm

Italian version (english version below)

Salve a tutti!

Oggi voglio proporvi il design 3D che ho realizzato riguardo un nuovo progetto: “Andy”. Si tratta di un braccio robotico, ed il nome si riallaccia ai termini inglese “hand” (“mano”) e “handy” (“utile”, “maneggevole”).

Una descrizione del progetto (realizzato con il software Autodesk 123D Design) insieme ad un tutorial passo passo su come riprodurlo, è disponibile qui.

Ho sfruttatto l’occasione per partecipare all’Autodesk 123D Design Challenge su Instructables.com. Quindi, se ti è piaciuto il mio lavoro, votami!

Stay tuned!


English version

Hi!

Today I want to show you a 3D design I just realized about a new project called “Andy”. It is a robotic arm, and its name is linked to english words “hand” e “handy”.

The description of the project (made with Autodesk 123D Design software), as well as a step-by-step tutorial about how to reproduce the design, is available here.

I used the opportunity to participate to the Autodesk 123D Design Challenge on Instructables.com. So, if you liked my work, please vote me!

Stay tuned!