day 6
parent
d1874405b3
commit
b65fb4bfc3
|
@ -0,0 +1,2 @@
|
||||||
|
Time: 51 92 68 90
|
||||||
|
Distance: 222 2031 1126 1225
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue