Add solution for 2015 day 10

This commit is contained in:
Patrick Auernig 2021-02-13 01:48:40 +01:00
parent 203babcde2
commit a7fd384bac
5 changed files with 47 additions and 2 deletions

View File

@ -9,8 +9,8 @@
- [x] Day 06
- [x] Day 07
- [x] Day 08
- [ ] Day 09
- [ ] Day 10
- [x] Day 09
- [x] Day 10
- [ ] Day 11
- [ ] Day 12
- [ ] Day 13

View File

@ -0,0 +1 @@
3.0.0

View File

@ -0,0 +1 @@
1321131112

View File

@ -0,0 +1 @@
111221

42
2015/day-10/main.rb Executable file
View File

@ -0,0 +1,42 @@
#!/usr/bin/env ruby
# frozen_string_literal: true
require "pathname"
require "stringio"
def look_and_say(input)
counter = 1
output = input.each_char.map(&:to_i).chain([nil]).each_cons(2).reduce(StringIO.new) do |acc, (val1, val2)|
if val1 == val2
counter += 1
else
acc.write counter
acc.write val1
counter = 1
end
acc
end
output.rewind
output
end
def solve_part1(content)
puts 40.times.reduce(StringIO.new(content)) { |acc| look_and_say(acc) }.size
end
def solve_part2(content)
puts 50.times.reduce(StringIO.new(content)) { |acc, _| look_and_say(acc) }.size
end
def main(files)
files.each do |file|
content = file.read.chomp
solve_part1(content)
solve_part2(content)
end
end
main(ARGV.map { |x| Pathname(x) })