comparison day4.rb @ 3:9da7a71b313d

Implement scratchcard counting for Day 4
author IBBoard <dev@ibboard.co.uk>
date Mon, 04 Dec 2023 20:36:42 +0000
parents
children
comparison
equal deleted inserted replaced
2:0f4991eca11a 3:9da7a71b313d
1 #! /usr/bin/env ruby
2
3 require 'set'
4
5 if ARGV.length != 1
6 abort("Incorrect arguments - needs input file")
7 elsif not File.exist? (ARGV[0])
8 abort("File #{ARGV[0]} did not exist")
9 end
10
11 file = ARGV[0]
12
13 sum = 0
14 File.open(file, "r").each_line(chomp: true) do |line|
15 winning_number_str, our_number_str = line.split(":")[1].split("|").map(&:chomp)
16 winning_numbers = Set.new(winning_number_str.split(" ").map(&:to_i))
17 our_numbers = Set.new(our_number_str.split(" ").map(&:to_i))
18 our_winning_numbers = winning_numbers & our_numbers
19 sum += our_winning_numbers.length > 0 ? 2 ** (our_winning_numbers.length - 1) : 0
20 end
21
22 puts sum