Du coup toute la partie intéressante devient assez obscure. Dommage pour moi.
Aïe, c'est dommage, je ne voulais pas que ce soit un obstacle ... J'avais pourtant essayé de ne pas trop faire de trucs abscons ...
Le problème, c'est que la plus grande partie du code est basée sur les types, qui permettent de se guider pour coder les fonctions. D'ailleurs, cela permet de ne pas s'embrouiller, et de « matérialiser » les idées autrement que par le code : on ne désire pas coder une fonction, mais trouver une fonction qui a le type X, si possible en combinant des briques déjà présentes.
J'aurais pu le faire en python, mais il est plutôt laxiste sur les types (ce qui est parfois très utile), donc raisonner sur les types aurait été plutôt étrange.
Sinon, pour faire court, la fin (où on a retiré l'arbre intermédiaire) s'écrit très simplement en python par exemple (ici c'est naïf, aucune optimisation) :
pions=["Rouge","Bleu","Vert","Gris"]direc=["Haut","Bas","Droite","Gauche"]# branchesSuivies :: [ [(pion,direc)] ]# liste des historiques des branches (sans le placement des pions)defavance(branchesSuivies):t=[]forhistoriqueinbranchesSuivies:forpinpions:fordindirec:t.append([(p,d)]+historique)returntdefestUneBonneConfig(pion,case,historique):...# ici il faut avoir une grille et vraiment déplacer les pionsreturnFalse/TruedeftrouveBonneConfig(pion,case,branchesSuivies):forbinbranchesSuivies:ifestUneBonneConfig(pion,case,b):returnbreturnFalsedefresolution(pion,case):b=[[]]# Branches initiales : une vide !whileTrue:b=avance(b)f=trouveBonneConfig(pion,case,b)iff!=False:returnf
Mais ici, on voit bien que j'ai « recodé » toutes les fonctions à la main, et sans trop m'intéresser aux types ...
Sinon, est-ce que tu pourrais indiquer donner les passages qui posent problème, pour pouvoir les ré-écrire dans un style plus compréhensible ?
[^] # Re: Intéressant, mais Haskell
Posté par Aluminium95 . En réponse au journal Résolution naïve d'un jeu de société. Évalué à 4.
Aïe, c'est dommage, je ne voulais pas que ce soit un obstacle ... J'avais pourtant essayé de ne pas trop faire de trucs abscons ...
Le problème, c'est que la plus grande partie du code est basée sur les types, qui permettent de se guider pour coder les fonctions. D'ailleurs, cela permet de ne pas s'embrouiller, et de « matérialiser » les idées autrement que par le code : on ne désire pas coder une fonction, mais trouver une fonction qui a le type
X, si possible en combinant des briques déjà présentes.J'aurais pu le faire en python, mais il est plutôt laxiste sur les types (ce qui est parfois très utile), donc raisonner sur les types aurait été plutôt étrange.
Sinon, pour faire court, la fin (où on a retiré l'arbre intermédiaire) s'écrit très simplement en python par exemple (ici c'est naïf, aucune optimisation) :
Mais ici, on voit bien que j'ai « recodé » toutes les fonctions à la main, et sans trop m'intéresser aux types ...
Sinon, est-ce que tu pourrais indiquer donner les passages qui posent problème, pour pouvoir les ré-écrire dans un style plus compréhensible ?
Bonne journée aussi !