Python : un petit Sudoku pour commencer
Ces temps-ci, je découvre Python, un langage de programmation très apprécié en particulier dans la communauté scientifique. Ce « langage interprété multi paradigme » intègre des concepts développés dans plusieurs langages récents, ce qui en fait peut-être le langage le plus complet disponible actuellement.
Pour une première approche de ce langage, je vous propose l’analyse du
Plus Court Solveur de Sudoku
Voici un programme en Python de 173 caractères seulement qui serait le plus court solveur de sudoku connu actuellement :
def r(a): i=a.find('0') if i<0:print a [m in[(i-j)%9*(i/9^j/9)*(i/27^j/27|i%9/3^j%9/3)or a[j]for j in range(81)]or r(a[:i]+m+a[i+1:])for m in`14**7*9`]r(raw_input())
Ce programme est extrêmement compact et condensé, voire cryptique à l’instar des Cignatures. Ce n’est pas forcément la meilleure façon de programmer, mais ça révèle souvent la puissance cachée de certains langages. Ce programme est décrit en anglais et en détail ici, mais voici son principe en gros et en français: