67 lines
1015 B
Ruby
67 lines
1015 B
Ruby
|
|
||
|
TEST_RB = <<~'TEST'
|
||
|
require_relative "impl"
|
||
|
|
||
|
INPUT = <<~IN
|
||
|
%example_input%
|
||
|
IN
|
||
|
|
||
|
RESULT = %example_result%
|
||
|
|
||
|
def test_example
|
||
|
parsed = parse(INPUT)
|
||
|
result = calculate(parsed)
|
||
|
|
||
|
if result == RESULT
|
||
|
puts "Test successful. Now run with real input"
|
||
|
puts "ruby %day_name%/run.rb"
|
||
|
else
|
||
|
puts "Test failed"
|
||
|
puts "expected \"#{RESULT}\" got \"#{result}\""
|
||
|
end
|
||
|
end
|
||
|
|
||
|
test_example
|
||
|
TEST
|
||
|
|
||
|
RUN_RB = <<~'RUN'
|
||
|
require_relative "impl"
|
||
|
|
||
|
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_name%/data").read
|
||
|
data = parse(input)
|
||
|
result = calculate(data)
|
||
|
print(result)
|
||
|
end
|
||
|
|
||
|
run
|
||
|
RUN
|
||
|
|
||
|
IMPL_RB = <<~'IMPL'
|
||
|
#prepare the input which is a string containing new lines
|
||
|
def parse(input)
|
||
|
data = []
|
||
|
input.each_line do |line|
|
||
|
data << line
|
||
|
end
|
||
|
data
|
||
|
end
|
||
|
|
||
|
# result should a single string or integer
|
||
|
def calculate(data)
|
||
|
result = ""
|
||
|
data.each do |d|
|
||
|
result = d
|
||
|
end
|
||
|
result
|
||
|
end
|
||
|
IMPL
|