view day1b.rb @ 30:6de4f4d5404d

Implement Day 21 "possible spaces in a maze" Part 2 needs something like "find the repeats and lowest common multiple" that I'm not bothering with
author IBBoard <dev@ibboard.co.uk>
date Wed, 03 Jan 2024 12:01:18 +0000
parents 76cc43966538
children
line wrap: on
line source

#! /usr/bin/env ruby

if ARGV.length != 1
        abort("Incorrect arguments - pass a single file")
elsif not File.exist? (ARGV[0])
        abort ("File #{ARGV[0]} did not exist")
end

file = ARGV[0]
sum = 0

number_map = {
	"one" => 1,
	"two" => 2,
	"three" => 3,
	"four" => 4,
	"five" => 5,
	"six" => 6,
	"seven" => 7,
	"eight" => 8,
	"nine" => 9
}

(1..9).each {|i| number_map[i.to_s] = i}

File.open(file, "r").each_line do |line|
	pos = line.length
	value_1 = 0
	number_map.each do |k,v| 
		index = line.index(k)
		if index and index < pos
			value_1 = v
			pos = index
		end
	end
	pos = line.length
	line.reverse!
	value_2 = 0
	number_map.each do |k,v| 
		index = line.index(k.reverse)
		if index and index < pos
			value_2 = v
			pos = index
		end
	end
	sum += (value_1 * 10) + value_2
end

puts sum