From cefcd292ce98af21659c6a04c3dc7a8db9197447 Mon Sep 17 00:00:00 2001
From: Marcin Chrzanowski <marcin.j.chrzanowski@gmail.com>
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