Depois de seu desastroso passeio de canoa , você acabou caindo de uma cachoeira no final das corredeiras do rio. Sua canoa explodiu, mas você conseguiu sobreviver à explosão. No entanto, sua jornada no rio ficou completamente fora do mapa - agora você se perdeu no meio de uma floresta. Felizmente, você ainda possui suas habilidades de programação e decide gravar um programa no lado de uma árvore para ajudá-lo a encontrar o caminho pela floresta. No entanto, como não há muita área de superfície na árvore, você deve tornar o seu programa o mais curto possível.
A floresta pode ser descrito como um nde n( n > 5) quadrado de caracteres, que só vai consistir nas letras minúsculas a-z. Um exemplo de floresta:
anehcienwlndm
baneiryeivown
bnabncmxlriru
anhahirrnrauc
riwuafuvocvnc
riwnbaueibnxz
hyirorairener
ruwiiwuauawoe
qnnvcizdaiehr
iefyioeorauvi
quoeuroenraib
cuivoaisdfuae
efoiebnxmcsua
Você deve ter notado que nesta floresta, há uma linha diagonal de acaracteres que a percorre, do canto superior esquerdo ao canto inferior direito. Este é um "caminho" pela floresta que o levará a algum lugar, se você o seguir. Sua tarefa é escrever um programa que encontre o caminho singular. Agora, descreverei mais especificamente o que conota um "caminho" nesse desafio.
Um "caminho", neste desafio, é definido como uma linha semelhante a uma linha que pode ter sido gerada com um algoritmo de Bresenham , mas com os requisitos adicionais de que:
- A linha deve ter no mínimo 6 caracteres
- Cada grupo de caracteres colineares (completamente adjacentes) na linha deve ter o mesmo comprimento .
- Começará em uma borda da floresta e terminará na borda oposta (veja meu comentário aqui para elaboração)
Para explicar o segundo requisito mais claramente, considere a seguinte linha:
aaa
aaa
aaa
aaa
aaa
Essa linha é composta por "segmentos" colineares de caracteres, cada um com exatamente três caracteres. Qualifica-se como um caminho. Agora considere esta linha:
a
aa
a
aa
a
aa
Essa linha é composta por "segmentos" colineares que não têm exatamente o mesmo comprimento de caracteres (alguns deles têm 1 caractere e outros 2). Assim, este não se qualifica como um caminho.
Seu programa, dado um mapa da floresta, identifica os caracteres usados no caminho. A entrada é para o que for conveniente (por exemplo, argumento da linha de comando, STDIN prompt(), etc.). Não pode ser pré-inicializado em uma variável. A primeira parte da entrada é um único inteiro nrepresentando o tamanho da floresta (a floresta é sempre um quadrado). Depois disso, há um espaço e, em seguida, toda a floresta como uma única sequência. Por exemplo, o exemplo de floresta seria apresentado, como uma entrada, assim:
13 anehcienwlndmbaneiryeivownbnabncmxlriruanhahirrnraucriwuafuvocvncriwnbaueibnxzhyirorairenerruwiiwuauawoeqnnvcizdaiehriefyioeorauviquoeuroenraibcuivoaisdfuaeefoiebnxmcsua
A saída para isso seria:
a
porque o caminho é formado utilizando a letra a. Só haverá um caminho na floresta. Isso é código de golfe, então o menor número de caracteres vence. Se você tiver dúvidas, pergunte nos comentários.