(en seconde, puis à nouveau en 1ere, et une nouvelle fois en fin de terminale)
a) d'un point de vue de vue performance, il vaut mieux avoir les chiffres déjà calculé
(quand tu place les mines tu fais un +1 partout autour; prévoir des linges/colonne de sentinelle ou vérifier les bornes )
Mon premier démineur faisait le calcul à chaque découverte de case, c'était affreusement lent (ti-92 II, oui en seconde, vers la fin, je trouvais la 82 trop limité coté prog).
le second (le plus rapide des 3 sur TI-92) faisait une liste de case à découvrir
en gros
decouvreXY(x,y)
mat[i][j] = mat[i][j] +100
if ( mat[i][j] == 0 ) {
pour toute les case autour : Si mat[x][y] < 100 => ajouter x,y dans liste
}
else if ( mat[i][j] == 10 ) Kabooom
Bon mon troisième code faisait du récursif, mais il était plus lent (mais de mon point de vue bien plus propre) (en gros je me passais de la liste)
Voili voilou.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
# pour avoir codé ce truc avant
Posté par fearan . En réponse au message Programmer un démineur en C. Évalué à 2.
a) d'un point de vue de vue performance, il vaut mieux avoir les chiffres déjà calculé
(quand tu place les mines tu fais un +1 partout autour; prévoir des linges/colonne de sentinelle ou vérifier les bornes )
Mon premier démineur faisait le calcul à chaque découverte de case, c'était affreusement lent (ti-92 II, oui en seconde, vers la fin, je trouvais la 82 trop limité coté prog).
le second (le plus rapide des 3 sur TI-92) faisait une liste de case à découvrir
en gros
decouvreXY(x,y)
mat[i][j] = mat[i][j] +100
if ( mat[i][j] == 0 ) {
pour toute les case autour : Si mat[x][y] < 100 => ajouter x,y dans liste
}
else if ( mat[i][j] == 10 ) Kabooom
Bon mon troisième code faisait du récursif, mais il était plus lent (mais de mon point de vue bien plus propre) (en gros je me passais de la liste)
Voili voilou.
Il ne faut pas décorner les boeufs avant d'avoir semé le vent