Add solution for 2015 day 02
This commit is contained in:
parent
64b6e6d8a5
commit
45659f2ca8
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Progress
|
## Progress
|
||||||
- [x] Day 01
|
- [x] Day 01
|
||||||
- [ ] Day 02
|
- [x] Day 02
|
||||||
- [ ] Day 03
|
- [ ] Day 03
|
||||||
- [ ] Day 04
|
- [ ] Day 04
|
||||||
- [ ] Day 05
|
- [ ] Day 05
|
||||||
|
1000
2015/day-02/inputs/puzzle.txt
Normal file
1000
2015/day-02/inputs/puzzle.txt
Normal file
File diff suppressed because it is too large
Load Diff
2
2015/day-02/inputs/test.txt
Normal file
2
2015/day-02/inputs/test.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
2x3x4
|
||||||
|
1x1x10
|
55
2015/day-02/main.rb
Executable file
55
2015/day-02/main.rb
Executable file
@ -0,0 +1,55 @@
|
|||||||
|
#!/usr/bin/env ruby
|
||||||
|
|
||||||
|
require "pathname"
|
||||||
|
|
||||||
|
INPUTS = [
|
||||||
|
Pathname("inputs/test.txt"),
|
||||||
|
Pathname("inputs/puzzle.txt"),
|
||||||
|
].freeze
|
||||||
|
|
||||||
|
def parse_input(data)
|
||||||
|
data.chomp.split("x").map(&:to_i)
|
||||||
|
end
|
||||||
|
|
||||||
|
def sides(length, width, height)
|
||||||
|
[length * width, width * height, height * length]
|
||||||
|
end
|
||||||
|
|
||||||
|
def solve_part_1(input)
|
||||||
|
input.lines.sum do |line|
|
||||||
|
sides = sides(*parse_input(line))
|
||||||
|
smallest = sides.min
|
||||||
|
sides.sum { |x| x * 2 } + smallest
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def solve_part_2(input)
|
||||||
|
input.lines.sum do |line|
|
||||||
|
length, width, height = parse_input(line)
|
||||||
|
sides = sides(length, width, height)
|
||||||
|
circumference =
|
||||||
|
case sides.map.with_index.min.last
|
||||||
|
when 0 then length * 2 + width * 2
|
||||||
|
when 1 then width * 2 + height * 2
|
||||||
|
when 2 then height * 2 + length * 2
|
||||||
|
end
|
||||||
|
circumference + length * width * height
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def main(files)
|
||||||
|
files.each do |file|
|
||||||
|
puts "File: #{file}"
|
||||||
|
content = file.read
|
||||||
|
|
||||||
|
result = solve_part_1(content.chomp)
|
||||||
|
puts " Wrapping Paper: #{result}"
|
||||||
|
puts " -" * 15
|
||||||
|
|
||||||
|
result = solve_part_2(content.chomp)
|
||||||
|
puts " Ribbon Length: #{result}"
|
||||||
|
puts " -" * 15
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
main(INPUTS)
|
Loading…
Reference in New Issue
Block a user