day09

package
v0.0.0-...-cc576ef Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 2, 2023 License: MIT Imports: 3 Imported by: 0

README

--- Dia 9: Ponte de Corda ---

Esta ponte de corda range enquanto você caminha por ela. Você não tem certeza de quantos anos ele tem ou mesmo se pode suportar seu peso.

Mas parece apoiar os Elfos muito bem. A ponte atravessa um desfiladeiro que foi esculpido pelo enorme rio bem abaixo de você.

Você pisa com cuidado; conforme você faz, as cordas se esticam e torcem. Você decide se distrair modelando a física das cordas; talvez você possa até descobrir onde não pisar.

Considere uma corda com um nó em cada ponta; esses nós marcam a cabeça e a cauda da corda. Se a cabeça se afastar o suficiente da cauda, a cauda é puxada em direção à cabeça.

Devido ao raciocínio nebuloso envolvendo comprimentos de Planck, você deve ser capaz de modelar as posições dos nós em uma grelha bidimensional. Então, seguindo uma hipotética série de movimentos (sua entrada do quebra-cabeça) para a cabeça, você pode determinar como a cauda se moverá.

Devido aos comprimentos de Planck mencionados, a corda deve ser bem curta; de fato, a cabeça (H) e a cauda (T) devem sempre estar se tocando (na diagonal adjacente e até mesmo sobrepondo ambas contam como se tocando):

....
.TH.
....

....
.H..
..T.
....

...
.H. (H cobre T)
...

Se a cabeça estiver sempre dois passos diretamente para cima, para baixo, para a esquerda ou para a direita da cauda, a cauda também deve se mover um passo nessa direção para permanecer perto o suficiente:

.....    .....    .....
.TH.. -> .T.H. -> ..TH.
.....    .....    .....

...    ...    ...
.T.    .T.    ...
.H. -> ... -> .T.
...    .H.    .H.
...    ...    ...

Caso contrário, se a cabeça e a cauda não estiverem se tocando e não estiverem na mesma linha ou coluna, a cauda sempre se move um passo na diagonal para acompanhar:

.....    .....    .....
.....    ..H..    ..H..
..H.. -> ..... -> ..T..
.T...    .T...    .....
.....    .....    .....

.....    .....    .....
.....    .....    .....
..H.. -> ...H. -> ..TH.
.T...    .T...    .....
.....    .....    .....

Você só precisa descobrir para onde vai a cauda enquanto a cabeça segue uma série de movimentos. Suponha que a cabeça e a cauda comecem na mesma posição, sobrepostas.

Por exemplo:

R 4
U 4
L 3
D 1
R 4
D 1
L 5
R 2

Esta série de movimentos move a cabeça para a direita quatro passos, depois para cima quatro passos, depois para a esquerda três passos, depois para baixo um passo, e assim por diante. Após cada etapa, você precisará atualizar a posição da cauda se a etapa significar que a cabeça não está mais adjacente à cauda. Visualmente, esses movimentos ocorrem da seguinte forma (s marca a posição inicial como ponto de referência):

== Initial State ==

......
......
......
......
H.....  (H cobre T, s)

== R 4 ==

......
......
......
......
TH....  (T cobre s)

......
......
......
......
sTH...

......
......
......
......
s.TH..

......
......
......
......
s..TH.

== U 4 ==

......
......
......
....H.
s..T..

......
......
....H.
....T.
s.....

......
....H.
....T.
......
s.....

....H.
....T.
......
......
s.....

== L 3 ==

...H..
....T.
......
......
s.....

..HT..
......
......
......
s.....

.HT...
......
......
......
s.....

== D 1 ==

..T...
.H....
......
......
s.....

== R 4 ==

..T...
..H...
......
......
s.....

..T...
...H..
......
......
s.....

......
...TH.
......
......
s.....

......
....TH
......
......
s.....

== D 1 ==

......
....T.
.....H
......
s.....

== L 5 ==

......
....T.
....H.
......
s.....

......
....T.
...H..
......
s.....

......
......
..HT..
......
s.....

......
......
.HT...
......
s.....

......
......
HT....
......
s.....

== R 2 ==

......
......
.H....  (H cobre T)
......
s.....

......
......
.TH...
......
s.....

Depois de simular a corda, você pode contar todas as posições que a cauda visitou pelo menos uma vez. Neste diagrama, s novamente marca a posição inicial (que a cauda também visitou) e # marca outras posições que a cauda visitou:

..##..
...##.
.####.
....#.
s###..

Portanto, existem 13 posições que a cauda visitou pelo menos uma vez.

Simule sua série hipotética completa de movimentos. Quantas posições a ponta da corda visita pelo menos uma vez?

--- Parte Dois ---

Uma corda rebenta! De repente, o rio está ficando muito mais perto do que você se lembra. A ponte ainda está lá, mas algumas das cordas que quebraram agora estão chicoteando em sua direção enquanto você cai pelo ar!

As cordas estão se movendo rápido demais para serem agarradas; você tem apenas alguns segundos para escolher como arquear o corpo para evitar ser atingido. Felizmente, sua simulação pode ser estendida para suportar cordas mais longas.

Em vez de dois nós, agora você deve simular uma corda com dez nós. Um nó ainda é a cabeça da corda e se move de acordo com a série de movimentos. Cada nó mais abaixo na corda segue o nó à sua frente usando as mesmas regras de antes.

Usando a mesma série de movimentos do exemplo acima, mas com os nós marcados como H, 1, 2, ..., 9, os movimentos agora ocorrem da seguinte forma:

== Estado Inicial ==

......
......
......
......
H.....  (H cobre 1, 2, 3, 4, 5, 6, 7, 8, 9, s)

== R 4 ==

......
......
......
......
1H....  (1 cobre 2, 3, 4, 5, 6, 7, 8, 9, s)

......
......
......
......
21H...  (2 cobre 3, 4, 5, 6, 7, 8, 9, s)

......
......
......
......
321H..  (3 cobre 4, 5, 6, 7, 8, 9, s)

......
......
......
......
4321H.  (4 cobre 5, 6, 7, 8, 9, s)

== U 4 ==

......
......
......
....H.
4321..  (4 cobre 5, 6, 7, 8, 9, s)

......
......
....H.
.4321.
5.....  (5 cobre 6, 7, 8, 9, s)

......
....H.
....1.
.432..
5.....  (5 cobre 6, 7, 8, 9, s)

....H.
....1.
..432.
.5....
6.....  (6 cobre 7, 8, 9, s)

== L 3 ==

...H..
....1.
..432.
.5....
6.....  (6 cobre 7, 8, 9, s)

..H1..
...2..
..43..
.5....
6.....  (6 cobre 7, 8, 9, s)

.H1...
...2..
..43..
.5....
6.....  (6 cobre 7, 8, 9, s)

== D 1 ==

..1...
.H.2..
..43..
.5....
6.....  (6 cobre 7, 8, 9, s)

== R 4 ==

..1...
..H2..
..43..
.5....
6.....  (6 cobre 7, 8, 9, s)

..1...
...H..  (H cobre 2)
..43..
.5....
6.....  (6 cobre 7, 8, 9, s)

......
...1H.  (1 cobre 2)
..43..
.5....
6.....  (6 cobre 7, 8, 9, s)

......
...21H
..43..
.5....
6.....  (6 cobre 7, 8, 9, s)

== D 1 ==

......
...21.
..43.H
.5....
6.....  (6 cobre 7, 8, 9, s)

== L 5 ==

......
...21.
..43H.
.5....
6.....  (6 cobre 7, 8, 9, s)

......
...21.
..4H..  (H cobre 3)
.5....
6.....  (6 cobre 7, 8, 9, s)

......
...2..
..H1..  (H cobre 4; 1 cobre 3)
.5....
6.....  (6 cobre 7, 8, 9, s)

......
...2..
.H13..  (1 cobre 4)
.5....
6.....  (6 cobre 7, 8, 9, s)

......
......
H123..  (2 cobre 4)
.5....
6.....  (6 cobre 7, 8, 9, s)

== R 2 ==

......
......
.H23..  (H cobre 1; 2 cobre 4)
.5....
6.....  (6 cobre 7, 8, 9, s)

......
......
.1H3..  (H cobre 2, 4)
.5....
6.....  (6 cobre 7, 8, 9, s)

Agora, você precisa acompanhar as posições que a nova cauda, 9, visita. Neste exemplo, a cauda nunca se move e, portanto, visita apenas 1 posição. No entanto, tenha cuidado: mais tipos de movimento são possíveis do que antes, então você pode querer comparar visualmente sua corda simulada com a corda acima.

Aqui está um exemplo maior:

R 5
U 8
L 8
D 3
R 17
D 10
L 25
U 20

Esses movimentos ocorrem da seguinte maneira (as etapas individuais não são mostradas):

== Estado Inicial ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
...........H..............  (H cobre 1, 2, 3, 4, 5, 6, 7, 8, 9, s)
..........................
..........................
..........................
..........................
..........................

== R 5 ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
...........54321H.........  (5 cobre 6, 7, 8, 9, s)
..........................
..........................
..........................
..........................
..........................

== U 8 ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
................H.........
................1.........
................2.........
................3.........
...............54.........
..............6...........
.............7............
............8.............
...........9..............  (9 cobre s)
..........................
..........................
..........................
..........................
..........................

== L 8 ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
........H1234.............
............5.............
............6.............
............7.............
............8.............
............9.............
..........................
..........................
...........s..............
..........................
..........................
..........................
..........................
..........................

== D 3 ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
.........2345.............
........1...6.............
........H...7.............
............8.............
............9.............
..........................
..........................
...........s..............
..........................
..........................
..........................
..........................
..........................

== R 17 ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
................987654321H
..........................
..........................
..........................
..........................
...........s..............
..........................
..........................
..........................
..........................
..........................

== D 10 ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
...........s.........98765
.........................4
.........................3
.........................2
.........................1
.........................H

== L 25 ==

..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
...........s..............
..........................
..........................
..........................
..........................
H123456789................

== U 20 ==

H.........................
1.........................
2.........................
3.........................
4.........................
5.........................
6.........................
7.........................
8.........................
9.........................
..........................
..........................
..........................
..........................
..........................
...........s..............
..........................
..........................
..........................
..........................
..........................


Agora, a cauda (9) visita 36 posições (incluindo s) pelo menos uma vez:

..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
..........................
#.........................
#.............###.........
#............#...#........
.#..........#.....#.......
..#..........#.....#......
...#........#.......#.....
....#......s.........#....
.....#..............#.....
......#............#......
.......#..........#.......
........#........#........
.........########.........

Simule sua série completa de movimentos em uma corda maior com dez nós. Quantas posições a ponta da corda visita pelo menos uma vez?

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Move

type Move struct {
	// contains filtered or unexported fields
}

type Pos

type Pos struct {
	// contains filtered or unexported fields
}

type Puzzle

type Puzzle struct{}

func (*Puzzle) Notes

func (*Puzzle) Notes() string

func (*Puzzle) Part1

func (*Puzzle) Part1(input string) string

func (*Puzzle) Part2

func (*Puzzle) Part2(input string) string

type TailTrail

type TailTrail map[Pos]struct{}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL