Solution for Day 22
This commit is contained in:
parent
9bc2493bdd
commit
7fa8c31b11
15
day_22/first.rb
Normal file
15
day_22/first.rb
Normal file
@ -0,0 +1,15 @@
|
||||
input = File.read('./input').split("\n\n").map { |l| l.split("\n") }
|
||||
|
||||
$p1 = input[0].drop(1).map(&:to_i)
|
||||
$p2 = input[1].drop(1).map(&:to_i)
|
||||
|
||||
until $p1.empty? || $p2.empty?
|
||||
p1 = $p1.shift
|
||||
p2 = $p2.shift
|
||||
|
||||
p1 > p2 ? $p1.push(p1, p2) : $p2.push(p2, p1)
|
||||
end
|
||||
|
||||
$winner = $p1.empty? ? $p2 : $p1
|
||||
|
||||
puts (1..$winner.size).reverse_each.zip($winner).map { |l, r| l * r }.sum
|
53
day_22/input
Normal file
53
day_22/input
Normal file
@ -0,0 +1,53 @@
|
||||
Player 1:
|
||||
28
|
||||
13
|
||||
25
|
||||
16
|
||||
38
|
||||
3
|
||||
14
|
||||
6
|
||||
29
|
||||
2
|
||||
47
|
||||
20
|
||||
35
|
||||
43
|
||||
30
|
||||
39
|
||||
21
|
||||
42
|
||||
50
|
||||
48
|
||||
23
|
||||
11
|
||||
34
|
||||
24
|
||||
41
|
||||
|
||||
Player 2:
|
||||
27
|
||||
37
|
||||
9
|
||||
10
|
||||
17
|
||||
31
|
||||
19
|
||||
33
|
||||
40
|
||||
12
|
||||
32
|
||||
1
|
||||
18
|
||||
36
|
||||
49
|
||||
46
|
||||
26
|
||||
4
|
||||
45
|
||||
8
|
||||
15
|
||||
5
|
||||
44
|
||||
22
|
||||
7
|
29
day_22/second.rb
Normal file
29
day_22/second.rb
Normal file
@ -0,0 +1,29 @@
|
||||
input = File.read('./input').split("\n\n").map { |l| l.split("\n") }
|
||||
|
||||
p1 = input[0].drop(1).map(&:to_i)
|
||||
p2 = input[1].drop(1).map(&:to_i)
|
||||
|
||||
def play_game(deck1, deck2)
|
||||
history = {}
|
||||
|
||||
until deck1.empty? || deck2.empty?
|
||||
return true if history[deck1] && history[deck2]
|
||||
|
||||
history[deck1] = true
|
||||
history[deck2] = true
|
||||
p1 = deck1.shift
|
||||
p2 = deck2.shift
|
||||
|
||||
round_winner = if p1 <= deck1.size && p2 <= deck2.size
|
||||
play_game(deck1[0, p1], deck2[0, p2])
|
||||
else
|
||||
p1 > p2
|
||||
end
|
||||
round_winner ? deck1.push(p1, p2) : deck2.push(p2, p1)
|
||||
end
|
||||
winner = deck1.empty? ? deck2 : deck1
|
||||
deck1.size > deck2.size
|
||||
end
|
||||
|
||||
winner = play_game(p1, p2) ? p1 : p2
|
||||
puts (1..winner.size).reverse_each.zip(winner).map { |l, r| l * r }.sum
|
13
day_22/test
Normal file
13
day_22/test
Normal file
@ -0,0 +1,13 @@
|
||||
Player1:
|
||||
9
|
||||
2
|
||||
6
|
||||
3
|
||||
1
|
||||
|
||||
Player2:
|
||||
5
|
||||
8
|
||||
4
|
||||
7
|
||||
10
|
Loading…
x
Reference in New Issue
Block a user