m-chrzan.xyz
aboutsummaryrefslogtreecommitdiff
path: root/16/a.rb
diff options
context:
space:
mode:
Diffstat (limited to '16/a.rb')
-rw-r--r--16/a.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/16/a.rb b/16/a.rb
new file mode 100644
index 0000000..dd3eea4
--- /dev/null
+++ b/16/a.rb
@@ -0,0 +1,28 @@
+sections = File.read('input.txt').split "\n\n"
+
+fields = sections[0].split "\n"
+tickets = sections[2].split "\n"
+
+valid_values = Hash.new false
+
+fields.each do |field|
+ ranges = field.split(/.*: | or /).slice(1, 2)
+ ranges.each do |range|
+ from, to = range.split('-').map {|n| n.to_i}
+ (from..to).each do |n|
+ valid_values[n] = true
+ end
+ end
+end
+
+invalid = 0
+tickets.each do |ticket|
+ values = ticket.split(',').map {|n| n.to_i}
+ values.each do |n|
+ if !valid_values[n]
+ invalid += n
+ end
+ end
+end
+
+puts invalid