annotate day1.rb @ 34:59620bbc4084

Implement day 24 - 2D intersection Needs an offset because the numbers are big enough to overflow
author IBBoard <dev@ibboard.co.uk>
date Fri, 05 Jan 2024 11:42:13 +0000
parents 76cc43966538
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
1 #! /usr/bin/env ruby
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
2
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
3 if ARGV.length != 1
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
4 abort("Incorrect arguments - pass a single file")
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
5 elsif not File.exist? (ARGV[0])
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
6 abort ("File #{ARGV[0]} did not exist")
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
7 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
8
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
9 file = ARGV[0]
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
10 sum = 0
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
11 File.open(file, "r").each_line do |line|
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 match = /^[^0-9]*([0-9]).*?(([0-9])[^0-9]*)?$/.match(line)
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 if match
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 first_num = match[1].to_i
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 second_num = match[3].nil? ? first_num : match[3].to_i
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 sum += (first_num * 10) + second_num
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 puts sum