annotate day1b.rb @ 35:ca54f9702892

Day 24 part 2 instructions and partial solution
author IBBoard <dev@ibboard.co.uk>
date Thu, 18 Apr 2024 19:54:59 +0100
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
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
12 number_map = {
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
13 "one" => 1,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
14 "two" => 2,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
15 "three" => 3,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
16 "four" => 4,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
17 "five" => 5,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
18 "six" => 6,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
19 "seven" => 7,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
20 "eight" => 8,
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
21 "nine" => 9
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
22 }
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
23
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
24 (1..9).each {|i| number_map[i.to_s] = i}
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
25
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
26 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
27 pos = line.length
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
28 value_1 = 0
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
29 number_map.each do |k,v|
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
30 index = line.index(k)
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
31 if index and index < pos
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
32 value_1 = v
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
33 pos = index
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
34 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
35 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
36 pos = line.length
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
37 line.reverse!
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
38 value_2 = 0
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
39 number_map.each do |k,v|
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
40 index = line.index(k.reverse)
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
41 if index and index < pos
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
42 value_2 = v
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
43 pos = index
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
44 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
45 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
46 sum += (value_1 * 10) + value_2
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
47 end
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
48
76cc43966538 Start https://adventofcode.com/2023/day/1 in Ruby
IBBoard <dev@ibboard.co.uk>
parents:
diff changeset
49 puts sum