Je me suis récemment mis à Ruby: je trouve ce langage assez agréable. Il reprend une bonne partie de la concision de Perl, tout en ayant un modèle objet assez propre. Il emprunte également aux langages fonctionnels, ce qui est aussi pratique à l'usage.

Comme petit exercice, j'ai réalisé un programme de résolution de Sudoku. Il n'est pas très intelligent, et procède comme suit :

  • pour chaque case inconnue de la grille, il maintient une liste de possibilités ;
  • il élimine donc les valeurs impossibles par ligne, colonne et bloc ;
  • si au sein d'une ligne, colonne ou bloc une possibilité n'apparaît qu'une seule fois, cela devient une certitude ;
  • si à ce stade la grille n'est pas résolue, on essaie une possibilité et on appelle récursivement la procédure de résolution (avec backtrack lorsqu'on tombe sur une incohérence).

Je n'ai pas regardé en détails le programme de Florent, mais je crois que le principe est assez voisin (mais il a quelques règles intelligentes en plus). Le programme (que je donne pour ceux qui veulent voir à quoi ressemble du Ruby, ou pour ceux qui veulent débuter un meilleur solveur de Sudoku) attend une grille au format texte, comme celles de Laurent, sur son entrée standard.