master
Guido Schweizer 2023-12-10 21:28:20 +01:00
parent d1874405b3
commit b65fb4bfc3
5 changed files with 104 additions and 0 deletions

2
day_6/data Normal file
View File

@ -0,0 +1,2 @@
Time: 51 92 68 90
Distance: 222 2031 1126 1225

27
day_6/impl.rb Normal file
View File

@ -0,0 +1,27 @@
#prepare the input which is a string containing new lines
def parse(input)
data = []
input.each_line do |line|
data << line.split(":").last.split(" ").map(&:to_i)
end
data
end
# result should a single string or integer
def calculate(data)
result = []
times,distances = data
times.length.times do |i|
time = times[i]
distance = distances[i]
win_count = 0
(1..time).each do |duration|
speed = duration
time_left = time - duration
travel_distance = speed * time_left
win_count += 1 if travel_distance > distance
end
result << win_count
end
result.reduce(:*)
end

23
day_6/impl_2.rb Normal file
View File

@ -0,0 +1,23 @@
#prepare the input which is a string containing new lines
def parse(input)
data = []
input.each_line do |line|
data << line.split(":").last.gsub(" ","").to_i
puts data
end
data
end
# result should a single string or integer
def calculate(data)
win_count = 0
time,distance = data
win_count = 0
(1..time).each do |duration|
speed = duration
time_left = time - duration
travel_distance = speed * time_left
win_count += 1 if travel_distance > distance
end
win_count
end

24
day_6/run.rb Normal file
View File

@ -0,0 +1,24 @@
if ARGV[0] == "2"
require_relative "impl_2"
else
require_relative "impl"
end
def print(result)
if result.is_a? Array
result.map! {|l| "#{l}\n" }
end
puts result
end
def run
puts "running your implementation"
input = File.new("day_6/data").read
data = parse(input)
result = calculate(data)
print(result)
end
run

28
day_6/test.rb Normal file
View File

@ -0,0 +1,28 @@
if ARGV[0] == "2"
require_relative "impl_2"
RESULT = 71503
else
require_relative "impl"
RESULT = 288
end
INPUT = <<~IN
Time: 7 15 30
Distance: 9 40 200
IN
def test_example
parsed = parse(INPUT)
result = calculate(parsed)
if result == RESULT
puts "Test successful. Now run with real input"
puts "ruby day_6/run.rb #{ARGV[0]}"
else
puts "Test failed"
puts "expected \"#{RESULT}\" got \"#{result}\""
end
end
test_example