Nota: Isso é baseado em duas estradas divergindo em uma madeira amarela (parte 2) , um desafio anterior da minha. Por causa da popularidade dessa pergunta e duas estradas divergirem em uma madeira amarela (parte 1) , eu queria fazer uma terceira. Mas os 2 primeiros foram fáceis demais (uma resposta de 2 bytes no primeiro, uma resposta de 15 bytes no segundo). Então, fiz algo mais complexo ...
A inspiração
Este desafio é inspirado no famoso poema de Robert Frost, The Road Not Taken :
Duas estradas divergiam em um bosque amarelo.
E , desculpe, eu não podia viajar pelas duas.
E ser um viajante, por muito tempo eu fiquei.
E olhei para uma delas o mais longe que pude
.... 2 parágrafos aparados ...
Vou contar isso com um suspiro
Em algum lugar, eras e eras daqui em diante :
Duas estradas divergiam em um bosque, e eu -
eu peguei a menos percorrida,
e isso fez toda a diferença.
Observe a penúltima linha I took the one less traveled by,
,.
A história de fundo
Você foi designado para ajudar um aventureiro cego que está andando em uma estrada e foi inspirado em The Road Not Taken . O aventureiro está se aproximando de uma bifurcação na estrada e gostaria de seguir o caminho menos percorrido. Você deve encontrar onde o aventureiro realmente está e dizer ao aventureiro para onde se virar.
O desafio
Seu objetivo é encontrar a estrada menos percorrida em seu mapa, onde a bifurcação da estrada. Seu mapa é uma sequência contendo novas linhas (ou \n
, se preferir) e possui largura e altura desconhecidas. No mapa, as estradas são compostas de dígitos de 0 a 9 , e o cruzamento é de #
s. Você deve encontrar a estrada em que está atualmente e, fora das outras estradas, a estrada mais percorrida e a menos percorrida pelo aventureiro cego. As madeiras no seu mapa são representadas por um espaço. Aqui está um mapa simples:
2 2
1 0
#
2
2
Este mapa tem 5 de largura e 5 de altura. Observe como a estrada se bifurca em forma de Y. O Y pode ser orientado de qualquer maneira, portanto, você deve entender um mapa "girado".
O que os #
meios
Onde o mapa bifurca, haverá um #
. Isso não afeta a pontuação de nenhum caminho.
O que os números realmente significam
Cada caminho (uma linha de números, pode ter uma curva) tem uma pontuação. A pontuação de um caminho é determinada somando seus dígitos. Portanto, para o primeiro exemplo, o primeiro caminho (do canto superior esquerdo, no sentido horário) tem uma pontuação de 2 + 1 = 3, o segundo tem 2 + 0 = 2 e o terceiro tem 2 + 2 = 4. As estradas podem conter números conectados na diagonal.
Descobrindo onde você está
Você está no caminho com a maior pontuação. Os outros 2 caminhos são a estrada mais percorrida e a menos percorrida. Você precisa encontrar a estrada com a menor pontuação.
Dizendo ao seu viajante para onde ir
Você deve dizer ao seu viajante para "esquerda" ou "direita". Lembre-se de que as direções são do ponto de vista do viajante (ele está de frente para o garfo).
Mapas de exemplo
14
9#
04
Saída: "direita" (o viajante está na 9
estrada, 0 + 4 <1 + 4
9
9
9
9
9
#
8 8
8 8
88 88
8 7
Saída: "esquerda" (o viajante está na 99999
estrada, 8 + 8 + 8 + 8 + 8> 8 + 8 + 8 + 8 + 7
02468
#98765
13579
Saída: "direita" (o viajante está na 98765
estrada, 0 + 2 + 4 + 6 + 8 <1 + 3 + 5 + 7 + 9)
4 2
4 2
#
4
4
2
2
Saída: "direita" (o viajante está na 4422
estrada, 4 + 4> 2 + 2)
9
9
9
#
8 7
8 7
8 7
Saída "esquerda" (o viajante está na 999
estrada, 8 + 8 + 8> 7 + 7 + 7
Coisas a saber:
- Os mapas serão preenchidos com espaços para tornar cada linha do mesmo comprimento.
- Você deve enviar para STDOUT / console / arquivo a sequência
left
ouright
, opcionalmente, seguida por uma nova linha à direita. - Você deve receber a entrada como uma sequência contendo novas linhas,
\n
s ou uma matriz / lista de linhas (cada linha é uma sequência). Onde essa entrada é colocada, deve haver uma função, argumento da linha de comandos, arquivo ou STDIN, uma linha por vez ou semelhante. Uma variável não é um dispositivo de entrada aceitável (a menos que seja um parâmetro de função.) Da mesma forma, expressões de função em JS e outros idiomas devem ser atribuídas a uma variável. - Isso é código-golfe , então a resposta mais curta em bytes vence!
- Lacunas padrão proibidas
Coisas que você pode assumir
- Sua entrada será válida. Nada como isso será testado para:
0 0 0 0 0 # 0 0
- As pontuações dos caminhos nunca serão vinculadas.
- A entrada pode ter qualquer comprimento em largura ou altura, menor que o limite de caracteres do seu idioma.
- Sempre haverá pelo menos 1 espaço entre os 2 caminhos.
- Os caminhos podem ter curvas, curvas etc. São estradas, não rodovias.
#
sempre estará no centro horizontalmente?