From cefcd292ce98af21659c6a04c3dc7a8db9197447 Mon Sep 17 00:00:00 2001 From: Marcin Chrzanowski Date: Fri, 25 Dec 2020 15:32:36 +0100 Subject: Add day 15 --- 15/a.rb | 25 +++++++++++++++++++++++++ 15/b.rb | 25 +++++++++++++++++++++++++ 15/input.txt | 1 + 3 files changed, 51 insertions(+) create mode 100644 15/a.rb create mode 100644 15/b.rb create mode 100644 15/input.txt (limited to '15') diff --git a/15/a.rb b/15/a.rb new file mode 100644 index 0000000..5341765 --- /dev/null +++ b/15/a.rb @@ -0,0 +1,25 @@ +input = File.read('input.txt').split ',' + +@t = 1 + +last_spoken = {} +last_number = 0 +input.each_with_index do |n, i| + if i > 0 + last_spoken[last_number] = i + end + last_number = n.to_i +end + +(input.length+1..2020).each do |turn| + if !last_spoken[last_number] + last_spoken[last_number] = turn - 1 + last_number = 0 + else + new_last_number = (turn - 1) - last_spoken[last_number] + last_spoken[last_number] = turn - 1 + last_number = new_last_number + end +end + +puts last_number diff --git a/15/b.rb b/15/b.rb new file mode 100644 index 0000000..7c7b3f9 --- /dev/null +++ b/15/b.rb @@ -0,0 +1,25 @@ +input = File.read('input.txt').split ',' + +@t = 1 + +last_spoken = {} +last_number = 0 +input.each_with_index do |n, i| + if i > 0 + last_spoken[last_number] = i + end + last_number = n.to_i +end + +(input.length+1..30000000).each do |turn| + if !last_spoken[last_number] + last_spoken[last_number] = turn - 1 + last_number = 0 + else + new_last_number = (turn - 1) - last_spoken[last_number] + last_spoken[last_number] = turn - 1 + last_number = new_last_number + end +end + +puts last_number diff --git a/15/input.txt b/15/input.txt new file mode 100644 index 0000000..bf1ac60 --- /dev/null +++ b/15/input.txt @@ -0,0 +1 @@ +0,14,6,20,1,4 -- cgit v1.2.3