Después de su desastroso paseo en canoa , terminó cayéndose de una cascada al final de los rápidos del río. Tu canoa explotó, pero lograste sobrevivir a la explosión. Sin embargo, su viaje por el río se desvió completamente del mapa: ahora se ha encontrado perdido en medio de un bosque. Afortunadamente, todavía tiene sus habilidades de programación, por lo que decide tallar un programa en el costado de un árbol para ayudarlo a encontrar su camino a través del bosque. Sin embargo, no hay mucha superficie en el árbol, por lo que debe hacer que su programa sea lo más corto posible.
El bosque se puede describir como un cuadrado de caracteres n
by n
( n > 5
), que solo consistirá en letras minúsculas a-z
. Un ejemplo de bosque:
anehcienwlndm
baneiryeivown
bnabncmxlriru
anhahirrnrauc
riwuafuvocvnc
riwnbaueibnxz
hyirorairener
ruwiiwuauawoe
qnnvcizdaiehr
iefyioeorauvi
quoeuroenraib
cuivoaisdfuae
efoiebnxmcsua
Es posible que haya notado que en este bosque, hay una línea diagonal de a
caracteres que lo atraviesa desde la esquina superior izquierda hasta la esquina inferior derecha. Este es un "camino" a través del bosque que lo llevará a algún lado si lo sigue. Su tarea es escribir un programa que encuentre la ruta singular. Ahora describiré más específicamente lo que connota un "camino" en este desafío.
Una "ruta", en este desafío, se define como una línea similar a una que podría haberse generado con un algoritmo de Bresenham , pero con los requisitos adicionales que:
- La línea debe tener un mínimo de 6 caracteres.
- Cada grupo de caracteres colineales (completamente adyacentes) en la línea debe tener la misma longitud .
- Comenzará en un borde del bosque y terminará en el borde opuesto (vea mi comentario aquí para más detalles)
Para explicar el segundo requisito más claramente, considere la siguiente línea:
aaa
aaa
aaa
aaa
aaa
Esta línea se compone de "segmentos" colineales de caracteres, cada uno de los cuales tiene exactamente tres caracteres de longitud. Califica como un camino. Ahora considere esta línea:
a
aa
a
aa
a
aa
Esta línea está compuesta de "segmentos" colineales que no tienen exactamente la misma longitud de caracteres (algunos de ellos tienen 1 carácter y otros 2). Por lo tanto, este no califica como un camino.
Su programa, dado un mapa del bosque, identifica los caracteres utilizados en el camino. La entrada es a lo que sea conveniente (por ejemplo, argumento de línea de comando, STDIN prompt()
, etc.). No se puede inicializar previamente en una variable. La primera parte de la entrada es un número entero único que n
representa el tamaño del bosque (el bosque siempre es un cuadrado). Después de eso hay un espacio y luego todo el bosque como una sola cadena. Por ejemplo, el bosque de ejemplo se presentaría, como una entrada, así:
13 anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua
El resultado para esto sería:
a
porque el camino se forma usando la letra a
. Solo habrá un camino en el bosque. Este es el código de golf, por lo que gana el menor número de caracteres. Si tiene preguntas, pregunte en los comentarios.