Advent of Code 2022 - Dia 24
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 24: Bacia de Nevasca ---
Com tudo replantado para o próximo ano (e com elefantes e macacos para cuidar do arvoredo), você e os Elfos partem para o ponto de extração.
No meio da montanha que protege o arvoredo há uma área plana e aberta que serve como ponto de extração. É um pouco difícil de subir, mas nada que a expedição não aguente.
Pelo menos, isso normalmente seria verdade; agora que a montanha está coberta de neve, as coisas se tornaram mais difíceis do que os Elfos estão acostumados.
À medida que a expedição chega a um vale que deve ser atravessado para chegar ao local de extração, você descobre que ventos fortes e turbulentos estão empurrando pequenas nevascas de neve e gelo afiado ao redor do vale. Ainda bem que todos levaram roupas quentes! Para atravessar com segurança, você precisará encontrar uma maneira de evitá-las.
Felizmente, é fácil ver tudo isso da entrada do vale, então você faz um mapa do vale e das nevascas (sua entrada do puzzle). Por exemplo:
#.#####
#.....#
#>....#
#.....#
#...v.#
#.....#
#####.#
As paredes do vale são desenhadas como #
; tudo o mais é chão. Terreno limpo - onde atualmente não há nevasca - é desenhado como .
. Caso contrário, as nevascas são desenhadas com uma seta indicando a direção do movimento: para cima (^
), para baixo (v
), para a esquerda (<
) ou para a direita (>
).
O mapa acima inclui duas nevascas, uma se movendo para a direita (>
) e outra se movendo para baixo (v
). Em um minuto, cada nevasca se move uma posição na direção que aponta:
#.#####
#.....#
#.>...#
#.....#
#.....#
#...v.#
#####.#
Devido à conservação da energia da nevasca, quando uma nevasca atinge a parede do vale, uma nova nevasca se forma no lado oposto do vale, movendo-se na mesma direção. Depois de mais um minuto, a nevasca que se move para baixo foi substituída por uma nova nevasca que se move para baixo no topo do vale:
#.#####
#...v.#
#..>..#
#.....#
#.....#
#.....#
#####.#
Como as nevascas são feitas de minúsculos flocos de neve, elas passam umas pelas outras. Depois de mais um minuto, ambas as nevascas ocupam temporariamente a mesma posição, marcada como 2
:
#.#####
#.....#
#...2.#
#.....#
#.....#
#.....#
#####.#
Depois de mais um minuto, a situação se resolve, devolvendo a cada nevasca seu espaço pessoal:
#.#####
#.....#
#....>#
#...v.#
#.....#
#.....#
#####.#
Finalmente, depois de mais um minuto, a nevasca à direita voltada para a direita é substituída por uma nova à esquerda voltada para a mesma direção:
#.#####
#.....#
#>....#
#.....#
#...v.#
#.....#
#####.#
Esse processo se repete pelo menos enquanto você o observa, mas provavelmente para sempre.
Aqui está um exemplo mais complexo:
#.######
#>>.<^<#
#.<..<<#
#>v.><>#
#<^v^^>#
######.#
Sua expedição começa na única posição fora da parede na linha superior e precisa alcançar a única posição fora da parede na linha inferior. A cada minuto, você pode mover para cima, baixo, esquerda ou direita, ou pode esperar no lugar. Você e as nevascas agem simultaneamente e você não pode compartilhar uma posição com uma nevasca.
No exemplo acima, a maneira mais rápida de alcançar seu objetivo requer 18
passos. Desenhando a posição da expedição como E
, uma maneira de conseguir isso é:
Estado inicial:
#E######
#>>.<^<#
#.<..<<#
#>v.><>#
#<^v^^>#
######.#
Minuto 1, mover para baixo:
#.######
#E>3.<.#
#<..<<.#
#>2.22.#
#>v..^<#
######.#
Minuto 2, mover para baixo:
#.######
#.2>2..#
#E^22^<#
#.>2.^>#
#.>..<.#
######.#
Minuto 3, aguardar:
#.######
#<^<22.#
#E2<.2.#
#><2>..#
#..><..#
######.#
Minuto 4, mover para cima:
#.######
#E<..22#
#<<.<..#
#<2.>>.#
#.^22^.#
######.#
Minuto 5, mover para a direita:
#.######
#2Ev.<>#
#<.<..<#
#.^>^22#
#.2..2.#
######.#
Minuto 6, mover para a direita:
#.######
#>2E<.<#
#.2v^2<#
#>..>2>#
#<....>#
######.#
Minuto 7, mover para baixo:
#.######
#.22^2.#
#<vE<2.#
#>>v<>.#
#>....<#
######.#
Minuto 8, mover para a esquerda:
#.######
#.<>2^.#
#.E<<.<#
#.22..>#
#.2v^2.#
######.#
Minuto 9, mover para cima:
#.######
#<E2>>.#
#.<<.<.#
#>2>2^.#
#.v><^.#
######.#
Minuto 10, mover para a direita:
#.######
#.2E.>2#
#<2v2^.#
#<>.>2.#
#..<>..#
######.#
Minuto 11, aguardar:
#.######
#2^E^2>#
#<v<.^<#
#..2.>2#
#.<..>.#
######.#
Minuto 12, mover para baixo:
#.######
#>>.<^<#
#.<E.<<#
#>v.><>#
#<^v^^>#
######.#
Minuto 13, mover para baixo:
#.######
#.>3.<.#
#<..<<.#
#>2E22.#
#>v..^<#
######.#
Minuto 14, mover para a direita:
#.######
#.2>2..#
#.^22^<#
#.>2E^>#
#.>..<.#
######.#
Minuto 15, mover para a direita:
#.######
#<^<22.#
#.2<.2.#
#><2>E.#
#..><..#
######.#
Minuto 16, mover para a direita:
#.######
#.<..22#
#<<.<..#
#<2.>>E#
#.^22^.#
######.#
Minuto 17, mover para baixo:
#.######
#2.v.<>#
#<.<..<#
#.^>^22#
#.2..2E#
######.#
Minuto 18, mover para baixo:
#.######
#>2.<.<#
#.2v^2<#
#>..>2>#
#<....>#
######E#
Qual é o menor número de minutos necessários para evitar as nevascas e atingir a meta?
--- Parte Dois ---
https://github.com/tcarreira/aoc2022/tree/main/day24#----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/24
- Código, soluções e traduções: github.com/tcarreira/aoc2022
- Live streaming
- Playlists no youtube
- senha do Private Leaderboard:
827447-e95d42f1