Ruby
Le samedi 5 août 2006 à 22:32 - Lien permanent
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.
Commentaires
Je suis totalement non impressionné par ce langage, en particulier le "concept" de block qui n'est qu'une façon bien naïve de manipuler des fonctions anonymes. J'attends encore des arguments qui me feraient revenir du python à ce langage qui me fait trop penser à perl, avec des objets dont je n'ai que faire (entre l'approche fonctionnelle et l'approche objet, j'ai fait mon choix :-)