Les jeux tactiques au tour par tour comme Advance Wars, Wargroove et Fire Emblem sont constitués d'une grille carrée de terrain variable avec des unités de classes de mouvement différentes nécessitant des coûts différents pour chaque type de terrain. Nous allons enquêter sur un sous-ensemble de ce problème.
Défi
Votre tâche consiste à déterminer si un emplacement est accessible à partir d'un autre étant donné une grille de coûts de terrain et une vitesse de déplacement.
Les unités ne peuvent se déplacer orthogonalement que lorsque le coût de déplacement sur un carré est la valeur de la cellule correspondante sur la grille (le déplacement est gratuit). Par exemple, passer d'une cellule de valeur 3 à une cellule de valeur 1 coûte 1 mouvement, mais aller dans l'autre sens nécessite 3. Certains carrés peuvent être inaccessibles.
Exemple
1 [1] 1 1 1
1 2 2 3 1
2 3 3 3 4
1 3 <1> 3 4
Passer de [1]
à <1>
nécessite un minimum de 7 points de mouvement en se déplaçant vers la droite d'un carré puis vers le bas de trois. Ainsi, si donné 6 ou moins comme vitesse de déplacement, vous devriez produire une réponse fausse.
Exemples de cas de test
Ceux-ci utiliseront des coordonnées indexées en haut à gauche (ligne, colonne) plutôt que des cellules entre crochets pour le début et la fin afin de faciliter l'analyse. Les cellules inaccessibles seront représentées parX
Cas 1a
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (2, 3) to (0, 1)
Output: True
Cas 1b
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 4
From (2, 3) to (0, 1)
Output: False
Cas 1c
1 1 2 1 X
1 2 2 1 1
2 1 1 2 1
X X X 1 2
Speed: 5
From (0, 1) to (2, 3)
Output: False
Cas 2a
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (3, 4) to (2, 1)
Output: True
Cas 2b
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 4
From (3, 4) to (2, 1)
Output: False
Cas 2c
3 6 1 1 X 4 1 2 1 X
5 1 2 2 1 1 1 X 1 5
2 1 1 1 2 1 1 1 X 1
2 1 1 3 1 2 3 4 1 2
1 1 2 1 1 4 1 1 1 2
3 2 3 5 6 1 1 X 1 4
Speed: 7
From (1, 8) to (2, 7)
Output: True
Cas 3a
2 1 1 2
2 3 3 1
Speed: 3
From (0, 0) to (1, 1)
Output: False
Cas 3b
2 1 1 2
2 3 3 1
Speed: 3
From (1, 1) to (0, 0)
Output: True
Règles, hypothèses et notes
- Les failles standard sont interdites, les E / S peuvent être dans n'importe quel format pratique
- Vous pouvez supposer que les coordonnées sont toutes sur la grille
- La vitesse de déplacement ne dépassera jamais 100
- Les cellules inaccessibles peuvent être représentées avec de très grands nombres (par exemple 420, 9001, 1 million) ou avec 0 ou nul, selon ce qui vous convient le mieux.
- Toutes les entrées seront constituées d'entiers positifs (sauf si vous utilisez null ou 0 pour représenter des cellules inaccessibles)