Mercurial > repos > other > adventofcode2023
diff day2.rb @ 1:49dd1ae93696
Implement day 2 with map and reduce
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sat, 02 Dec 2023 16:16:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/day2.rb Sat Dec 02 16:16:58 2023 +0000 @@ -0,0 +1,32 @@ +#! /usr/bin/env ruby + +if ARGV.length != 4 + abort("Incorrect arguments - needs numbers for Red, Green and Blue then input file") +elsif not File.exist? (ARGV[3]) + abort("File #{ARGV[3]} did not exist") +end + +max_colours = { + "red" => ARGV[0].to_i, + "green" => ARGV[1].to_i, + "blue" => ARGV[2].to_i +} +file = ARGV[3] + +sum = 0 +File.open(file, "r").each_line do |line| + game, all_picks = line.split(":") + all_valid = all_picks.split(";").all? do |pick| + pick.split(",").all? do |colour_pick| + num_picked, colour_picked = colour_pick.strip.split(" ") + # The last line of a Ruby block is the return value + num_picked.to_i <= max_colours[colour_picked] + end + end + if all_valid + puts game + sum += game.split(" ")[1].to_i + end +end + +puts sum \ No newline at end of file