Skip to content

Commit b1257b1

Browse files
committed
Day 11 - Puzzle 1
1 parent 26aa166 commit b1257b1

File tree

4 files changed

+57
-0
lines changed

4 files changed

+57
-0
lines changed

β€Žlib/input/day_11.txtβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
3028 78 973951 5146801 5 0 23533 857

β€Žlib/solutions/day_11.rbβ€Ž

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
class Day11
2+
attr_accessor :stones, :blinks
3+
4+
def part_one(input)
5+
@stones = input.split(' ').map(&:to_i)
6+
7+
25.times { blink! }
8+
9+
@stones.size
10+
end
11+
12+
def blink!
13+
new_stones = []
14+
@stones.each_with_index do |stone, i|
15+
value_s = stone.to_s
16+
17+
if stone == 0
18+
new_stones[i] = 1
19+
elsif value_s.length.even?
20+
split = value_s.length / 2
21+
new_stones[i] = [value_s[0...split].to_i, value_s[split..-1].to_i]
22+
else
23+
new_stones[i] = stone * 2024
24+
end
25+
end
26+
27+
@stones = new_stones.flatten!
28+
end
29+
30+
def part_two(input)
31+
@stones = input.split(' ').map(&:to_i)
32+
33+
75.times { blink! }
34+
35+
@stones.size
36+
end
37+
end

β€Žspec/input/day_11_test.txtβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
125 17
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
require 'spec_helper'
2+
require 'solutions/day_11'
3+
4+
RSpec.describe Day11 do
5+
let(:input) { File.read(File.join(__dir__, '..', '..', 'spec', 'input', 'day_11_test.txt')).strip }
6+
7+
describe '#part_one' do
8+
it 'calculates the correct solutions for part one' do
9+
expect(subject.part_one(input)).to eq(55_312)
10+
end
11+
end
12+
13+
describe '#part_two' do
14+
it 'calculates the correct solutions for part two' do
15+
expect(subject.part_two(input)).to eq(0)
16+
end
17+
end
18+
end

0 commit comments

Comments
Β (0)