La tortue veut se déplacer le long de la grille pour se rendre à sa nourriture. Il veut savoir combien de mouvements il lui faudra pour y arriver.
De plus, comme il est lent, il a installé des téléporteurs autour de son domaine qu'il utilisera s'il raccourcit son chemin. Ou évitez-les si cela allonge son chemin.
Rencontrez la tortue
🐢
La tortue vit sur une grille
Cependant, la tortue ne peut pas se déplacer vers un carré avec une montagne
Le défi
Étant donné une sortie de configuration de grille initiale, le nombre de mouvements qu'il faudra à la tortue pour atteindre sa fraise.
Règles
Vous pouvez supposer que la grille d'entrée a une solution
Chaque grille n'aura qu'un
strawberry
, deuxportals
et unturtle
La grille d'entrée peut être entrée dans n'importe quel format pratique
Vous devez traiter
teleporters
les articles à usage uniqueLe tour que la tortue se déplace sur une
teleporter
case, il est déjà sur le correspondantteleporter
. Il ne passe jamais sur unteleporter
et y reste pour un mouvementLe chemin le plus court n'a pas besoin d'utiliser le portail
La tortue ne peut pas passer dans les tuiles montagne
Vous pouvez utiliser un caractère ASCII ou entier pour représenter
mountains
,turtle
,empty grid square
,strawberry
Vous pouvez utiliser le même caractère ou deux caractères ou entiers ASCII différents pour représenter les
teleporter
pairesUne grille peut avoir plusieurs chemins avec la même longueur de chemin la plus courte
C'est du code-golf
Clarifications des règles
- Vous devez traiter
teleporters
les articles à usage unique.
Pourrait être résolu uniquement en entrant et en sortant deux fois des portails. Au moment de cette clarification, les deux solutions ont agi en supposant qu'elles étaient à usage unique ou qu'il n'y avait aucune raison d'essayer des carrés précédemment utilisés. Pour éviter de casser leurs solutions travaillées, cela semblait la meilleure façon de rendre compte de cette configuration. Par conséquent, cela serait considéré comme une grille non valide.
Cas de test formatés sous forme de listes
[ ['T', 'X', 'X', 'S', 'X'], ['X', 'X', 'X', 'X', 'X'], ['X', 'X', 'X', 'X', 'X'] ] --> 3
[ ['T', 'M', 'X', 'S', 'X'], ['X', 'M', 'X', 'X', 'X'], ['O', 'X', 'X', 'X', 'O'] ] --> 4
[ ['T', 'M', 'X', 'S', 'O'], ['O', 'M', 'X', 'X', 'X'], ['X', 'X', 'X', 'X', 'X'] ] --> 2
[ ['T', 'M', 'X', 'S', 'X'], ['O', 'M', 'X', 'X', 'X'], ['O', 'X', 'X', 'X', 'X'] ] --> 4
[ ['T', 'M', 'S', 'X', 'O'], ['X', 'M', 'M', 'M', 'M'], ['X', 'X', 'X', 'X', 'O'] ] --> 7
[ ['T', 'X', 'X', 'S', 'X'], ['O', 'M', 'M', 'M', 'X'], ['X', 'X', 'O', 'X', 'X'] ] --> 3
Cas de test formatés pour les humains
T X X S X
X X X X X
X X X X X --> 3
T M X S X
X M X X X
O X X X O --> 4
T M X S O
O M X X X
X X X X X --> 2
T M X S X
O M X X X
O X X X X --> 4
T M S X O
X M M M M
X X X X O --> 7
T X X S X
O M M M X
X X O X X --> 3
Crédits
Conception et structure via: Hungry mouse par Arnauld
Conseils proposés pour modifier les défis: Kamil-drakari , bœuf
la source
Réponses:
JavaScript (ES7),
140 139138 octetsPrend l'entrée comme une matrice d'entiers avec le mappage suivant:
Essayez-le en ligne!
Comment?
Il est d'abord appelé avec pour trouver la position de départ de la tortue.t=2
Il s'appelle avec si un portail est atteint, de sorte que la tortue est téléportée vers l'autre portail. Nous n'incrémentons pas lors d'une telle itération.t=−1 i
Chaque tuile visitée est temporairement placée sur une montagne pour empêcher la tortue de se déplacer deux fois sur la même tuile dans le même chemin. Si nous sommes pris au piège dans une impasse, la récursion arrête simplement sans mise à jour .R
Commenté
la source
Python 2 ,
441431341 octetsEssayez-le en ligne!
Saisie sous forme de listes, mais en utilisant des nombres au lieu de caractères (grâce à Quintec) et une valeur distincte pour la destination du téléporteur. Ces grandes indentations doivent être des tabulations si Stack Exchange les supprime. Tous les conseils ou idées sont particulièrement les bienvenus, car je pense que cela pourrait devenir
beaucoupplus court.Le tableau des caractères utilisés dans le défi des numéros utilisés pour mon programme est ci-dessous, mais vous pouvez également utiliser ce programme .
-10 octets grâce à Quintec en changeant l'entrée d'utiliser des caractères en chiffres.
- Beaucoup d'octets grâce à Jonathan Frech, ElPedro et Jonathan Allan.
la source
Python 2 , 391
397403422octetsEssayez-le en ligne!
Le problème est traduit dans un graphique et la solution est de trouver le chemin le plus court de la tortue à la fraise.
la source