Bonjour,
Je me suis inscrit sur le site Défi Turing et je suis confronté à un problème. Étant donné ma cécité, je ne peux pas toujours tout percevoir d’un problème.
Par exemple, dans le problème 23, il semble y avoir une erreur dans l’énoncé. Voici cet énoncé:
Problème 23 Des chemins dans une grille À partir du coin supérieur gauche d’une grille 2x2, il y a 6 chemins jusqu’au coin inférieur droit, en se déplaçant uniquement vers la droite ou vers lebas. Combien y a-t-il de tels chemins dans une grille 30x20 ?
Voici le lien vers cet énoncé:
Selon moi, une grille 2 x 2 ne contient que 2 chemins possibles, pas 6.
1 2
3 4
Soient 1 > 2 > 4 ou 1 > 3 > 4.
Les chemins 1 > 2 > 3 > 4 et 1 > 3 > 2 > 4 sont interdits suivant la règle.
Ce problème se résout facilement par programmation dynamique.
En effet, on place des 1
sur la dernière ligne et la dernière colonne car il n’y a qu’une façon de se déplacer pour ces positions. La dernière case en bas à droite pourrait contenir n’importe quoi.
En partant de l’avant dernière ligne et l’avant dernière colonne, on fait la somme de la position sur la ligne suivante et la colonne suivante. On remonte ainsi jusqu’au début en haut haut à gauche. La solution se trouve sur la case du coin en haut et à gauche.
Voici une illustration pour une grille 4 x 4:
0 0 0 1 0 0 0 1 0 0 0 1 20 10 4 1
0 0 0 1 0 0 0 1 10 6 3 1 10 6 3 1
0 0 0 1 4 3 2 1 4 3 2 1 4 3 2 1
1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0
Puisqu’on n’utilise plus les lignes précédentes, on peut tout accumuler sur une seule ligne (ou une seule colonne).
Voici le code que j’ai soumis et qui a été refusé par Défi Turing:
nl, nc = 20, 30
lignes = [1] * nc
for l in range(nl-2, -1, -1):
for c in range(nc-2, -1, -1):
lignes[c] += lignes[c+1]
print(lignes[0])
Je ne peux pas rejoindre l’auteur du site Défi Turing.
Quelqu’un a une idée du problème?
Merci pour toute aide.