Modification importante: auparavant, il y avait une valeur incorrecte dans l'exemple 1. Elle a été corrigée.
Vous obtenez un tableau à deux dimensions dans lequel chaque cellule contient l'une des quatre valeurs.
Exemples:
1 2 2 2 2 1 @ . . X X V
1 3 1 4 1 4 e . @ I C V
2 3 1 3 4 2 H H @ X I V
1 4 4 2 1 3 V C C
2 2 2 3 2 3 X X X
Les quatre valeurs représentent des flèches directionnelles (haut, bas, gauche et droite), bien que vous ne sachiez pas quelle valeur représente quelle direction.
Les flèches directionnelles forment un chemin ininterrompu qui inclut toutes les cellules du tableau, bien que vous ne sachiez pas où se trouvent les points de début ou de fin.
Écrivez du code qui détermine dans quelle direction chacune des quatre valeurs représente et où se trouvent les points de début et de fin.
Une valeur de retour acceptable pour un tableau contenant les valeurs A, B, C et D serait quelque chose comme:
{ up: A, down: C, left: D, right: B, start: [2, 0], end: [4, 2] }
Parce que vous pouvez parcourir le chemin dans les deux sens (du début à la fin et de la fin au début), il y aura toujours plus d'une solution correcte et il peut y en avoir plus de deux. Supposons que les entrées que vous recevez (comme dans les exemples ci-dessus) aient toujours au moins une solution correcte. Dans les cas où il existe plusieurs solutions correctes, le retour d'une seule des solutions correctes est suffisant.
Le code le plus court gagne. Je choisirai le gagnant après 7 jours ou 24 heures sans nouvelle soumission, selon la première éventualité.
J'inclus des solutions aux exemples ci-dessus, mais je vous encourage à ne les vérifier qu'une fois que vous avez écrit votre code:
Une:
{haut: 3, bas: 1, gauche: 4, droite: 2, début: [0,0], fin: [2,5]}
Deux:
{haut: '@', bas: 'e', gauche: '.', droite: 'H', début: [1,1], fin: [0,0]}
Trois:
{haut: 'I', bas: 'V', gauche: 'C', droite: 'X', début: [0,2], fin: [4,2]}
