Après votre désastreuse balade en canoë , vous avez fini par tomber d'une cascade au bout des rapides de la rivière. Votre canoë a explosé, mais vous avez réussi à survivre à l'explosion. Cependant, votre voyage sur la rivière a complètement disparu de la carte - vous vous êtes maintenant retrouvé perdu au milieu d'une forêt. Heureusement, vous avez toujours vos compétences en programmation, vous décidez donc de graver un programme sur le côté d'un arbre pour vous aider à trouver votre chemin à travers la forêt. Cependant, il n'y a pas beaucoup de surface sur l'arbre, vous devez donc rendre votre programme aussi court que possible.
La forêt peut être décrite comme un carré de caractères nby n( n > 5), qui ne sera composé que de lettres minuscules a-z. Un exemple de forêt:
anehcienwlndm
baneiryeivown
bnabncmxlriru
anhahirrnrauc
riwuafuvocvnc
riwnbaueibnxz
hyirorairener
ruwiiwuauawoe
qnnvcizdaiehr
iefyioeorauvi
quoeuroenraib
cuivoaisdfuae
efoiebnxmcsua
Vous avez peut-être remarqué que dans cette forêt, une ligne diagonale de acaractères la traverse du coin supérieur gauche au coin inférieur droit. C'est un "chemin" à travers la forêt qui vous mènera quelque part si vous le suivez. Votre tâche consiste à écrire un programme qui trouvera le chemin singulier. Je vais maintenant décrire plus précisément ce qui connote un «chemin» dans ce défi.
Un «chemin», dans ce défi, est défini comme une ligne similaire à celle qui aurait pu être générée avec un algorithme de Bresenham , mais avec les exigences supplémentaires qui:
- La ligne doit comporter au moins 6 caractères
- Chaque groupe colinéaire (complètement adjacent) de caractères de la ligne doit avoir la même longueur .
- Il commencera à un bord de la forêt et se terminera au bord opposé (voir mon commentaire ici pour l'élaboration)
Pour expliquer plus clairement la deuxième exigence, considérez la ligne suivante:
aaa
aaa
aaa
aaa
aaa
Cette ligne est composée de "segments" colinéaires de caractères, chacun ayant exactement trois caractères. Il est considéré comme un chemin. Considérez maintenant cette ligne:
a
aa
a
aa
a
aa
Cette ligne est composée de "segments" colinéaires qui ne sont pas tous exactement de la même longueur de caractères (certains ont 1 caractère et certains 2). Ainsi, celui-ci ne peut pas être qualifié de chemin.
Votre programme, compte tenu d'une carte de la forêt, identifie les caractères utilisés dans le chemin. L'entrée est à tout ce qui est pratique (par exemple, argument de ligne de commande, STDIN prompt(), etc.). Il ne peut pas être pré-initialisé en variable. La première partie de l'entrée est un entier unique nreprésentant la taille de la forêt (la forêt est toujours un carré). Après cela, il y a un espace, puis la forêt entière en une seule chaîne. Par exemple, l'exemple de forêt serait présenté, en entrée, comme ceci:
13 anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua
La sortie pour cela serait:
a
parce que le chemin est formé en utilisant la lettre a. Il n'y aura qu'un seul chemin dans la forêt. C'est le golf de code, donc le plus petit nombre de personnages gagne. Si vous avez des questions, posez-les dans les commentaires.