Advent of Code 2022 - Dia 12
No contexto deste outro conteúdo: https://www.tabnews.com.br/tcarreira/advent-of-code-2022-desafios-de-programacao (se gostarem deste conteúdo, votem no original, para que ele fique visível durante o tempo do AoC)
--- Dia 12: Algoritmo de Escalada ---
Você tenta entrar em contato com os Elfos usando seu dispositivo portátil, mas o rio que você está seguindo deve estar muito baixo para obter um sinal decente.
Você pede ao dispositivo um mapa de altura da área circundante (sua entrada do puzzle). O mapa de altura mostra a área local de cima em forma de uma grelha; a elevação de cada quadrado da grelha é dada por uma única letra minúscula, onde a
é a elevação mais baixa, b
é a próxima mais baixa, e assim por diante até a elevação mais alta, z
.
Também estão incluídas no mapa de altura as marcas para sua posição atual (S
) e o local que deve obter o melhor sinal (E
). Sua posição atual (S
) tem elevação a
, e o local que deve receber o melhor sinal (E
) tem elevação z
.
Você gostaria de chegar a E
, mas para economizar energia, você deve fazê-lo no menor número de passos possível. Durante cada passo, você pode mover exatamente um quadrado para cima, para baixo, para a esquerda ou para a direita. Para evitar a necessidade de retirar seu equipamento de escalada, a elevação do quadrado de destino pode ser no máximo um ponto mais alto do que a elevação do seu quadrado atual; ou seja, se a sua elevação atual for m
, você pode ir para a elevação n
, mas não para a elevação o
. (Isso também significa que a elevação do quadrado de destino pode ser muito menor do que a elevação do seu quadrado atual.)
Por exemplo:
Sabqponm
abcryxxl
accszExk
acctuvwj
abdefghi
Aqui, você começa no canto superior esquerdo; seu objetivo está perto do meio. Você pode começar movendo para baixo ou para a direita, mas eventualmente precisará ir em direção ao e
na parte inferior. A partir daí, você pode espiralar até o objetivo:
v..v<<<<
>v.vv<<^
.>vv>E^^
..v>>>^^
..>>>>>^
No diagrama acima, os símbolos indicam se o caminho sai de cada quadrado movendo-se para cima (^
), para baixo (v
), para a esquerda (<
) ou para a direita (>
). O local que deve obter o melhor sinal ainda é E
, e .
marca os quadrados não visitados.
Este caminho atinge a meta em 31
passos, o menor possível.
Qual é o menor número de passos necessários para mover desde a sua posição atual até o local que deve receber o melhor sinal?
--- Parte dois ---
https://github.com/tcarreira/aoc2022/tree/main/day12#----parte-dois----
(saber a parte 2 antes de fazer a parte 1 não é tão divertido. Então vou deixar apenas o link para o Github 😉)
Outros links:
- https://adventofcode.com/2022/day/12
- Código, soluções e traduções: github.com/tcarreira/aoc2022
- Live streaming
- Playlists no youtube
- senha do Private Leaderboard:
827447-e95d42f1