Advent of Code 2022 - Dia 22

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 22: Mapa de Macacos ---

Os macacos levam você a uma trilha surpreendentemente fácil pela selva. Eles estão até indo mais ou menos na direção certa de acordo com o Sistema de Posicionamento do Arvoredo do seu dispositivo portátil.

Enquanto você caminha, os macacos explicam que o arvoredo é protegido por um campo de forças. Para passar pelo campo de forças, você deve fornecer uma senha; fazer isso envolve traçar um caminho específico em um tabuleiro de formato estranho.

Pelo menos, você tem quase a certeza de que é isso que deve fazer; os elefantes não são exatamente fluentes em macaquês.

Os macacos dão a você anotações que tiraram quando viram a senha fornecida pela última vez (sua entrada do puzzle).

Por exemplo:

        ...#
        .#..
        #...
        ....
...#.......#
........#...
..#....#....
..........#.
        ...#....
        .....#..
        .#......
        ......#.

10R5L5R10L4R5L5

A primeira metade das anotações dos macacos é um mapa do tabuleiro. É composto por um conjunto de quadrados em aberto (nos quais você pode se mover, desenhados com .) e paredes sólidas (quadrados nos quais você não pode entrar, desenhados com #).

A segunda metade é uma descrição do caminho que você deve seguir. Consiste em números e letras alternados:

  • Um número indica o número de quadrados a serem movidos na direção que você está. Se você bater em uma parede, você para de avançar e continua com a próxima instrução.

  • Uma letra indica se deve rodar 90 graus no sentido horário (R) ou no sentido anti-horário (L). A rotação acontece no local; isso não altera o quadrado em que você está no momento.

Portanto, um caminho como 10R5 significa "vá em frente 10 quadrados, gire 90 graus no sentido horário e depois avance 5 quadrados".

Você começa o caminho no quadrado em aberto mais à esquerda da linha superior de quadrados. Inicialmente, você está olhando para a direita (da perspectiva de como o mapa é desenhado).

Se uma instrução de movimento tirar você do mapa, você dá a volta para o outro lado do tabuleiro. Em outras palavras, se o seu próximo quadrado estiver fora do tabuleiro, você deve olhar o máximo que puder na direção oposta à que você tem atualmente até encontrar a borda oposta do tabuleiro e reaparecer lá.

Por exemplo, se você estiver em A e virado para a direita, o quadrado à sua frente está marcada como B; se você estiver em C e voltado para baixo, o quadrado à sua frente está marcado como D:

        ...#
        .#..
        #...
        ....
...#.D.....#
........#...
B.#....#...A
.....C....#.
        ...#....
        .....#..
        .#......
        ......#.

É possível que o próximo quadrado (depois de dar a volta) seja uma parede; isso ainda conta como se houvesse uma parede à sua frente e, portanto, o movimento para antes de você realmente passar para o outro lado do tabuleiro.

Ao desenhar a última direção que você teve com uma seta em cada quadrado que você visita, o caminho completo percorrido pelo exemplo acima fica assim:

        >>v#    
        .#v.    
        #.v.    
        ..v.    
...#...v..v#    
>>>v...>#.>>    
..#v...#....    
...>>>>v..#.    
        ...#....
        .....#..
        .#......
        ......#.

Para concluir o fornecimento da senha para este estranho dispositivo de entrada, você precisa determinar os números para sua linha, coluna e direção finais conforme sua posição final aparece da perspectiva do mapa original. As linhas começam em 1 no topo e contam para baixo; as colunas começam em 1 à esquerda e contam para a direita. (No exemplo acima, linha 1, coluna 1 refere-se ao espaço vazio sem quadrados no canto superior esquerdo.) A direção é 0 para direita (>), 1 para baixo (v), 2 para esquerda (<) e 3 para cima (^). A senha final é a soma de 1000 vezes a linha, 4 vezes a coluna e a direção.

No exemplo acima, a linha final é 6, a coluna final é 8 e a direção final é 0. Portanto, a senha final é 1000 * 6 + 4 * 8 + 0: 6032.

Siga o caminho dado nas notas dos macacos. Qual é a senha final?

--- Parte Dois ---

https://github.com/tcarreira/aoc2022/tree/main/day22#----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: