From 697558abc7277dc476e5e63f843e26f4b7f4eb4e Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Thu, 14 Dec 2017 18:33:27 +0000 Subject: Day13 Part2 complete --- day13/part2 | 42 ++++++++++++++++++++++++++++++++++++++++++ day13/part2.dnw | 53 ----------------------------------------------------- day13/test | 4 ---- 3 files changed, 42 insertions(+), 57 deletions(-) create mode 100755 day13/part2 delete mode 100755 day13/part2.dnw delete mode 100644 day13/test (limited to 'day13') diff --git a/day13/part2 b/day13/part2 new file mode 100755 index 0000000..71a8ccd --- /dev/null +++ b/day13/part2 @@ -0,0 +1,42 @@ +#!/usr/bin/env ruby + +class Firewall + class Layer + def initialize(range) + @period = (range - 1) * 2 + end + + def will_capture_at?(time) + return time % @period == 0 + end + end + + def initialize + @layers = [] + end + + def add_layer!(depth, range) + @layers[depth] = Layer.new(range) + end + + def will_capture_at?(time) + (0...@layers.length).each do |i| + next if @layers[i].nil? + return true if @layers[i].will_capture_at?(time + i) + end + return false + end +end + + +input = $stdin.readlines.map(&:chomp).map{|l|l.split(': ').map(&:to_i)} + +firewall = Firewall.new +input.each do |line| + firewall.add_layer!(line[0], line[1]) +end + +delay = 0 +delay += 1 while firewall.will_capture_at?(delay) + +puts delay diff --git a/day13/part2.dnw b/day13/part2.dnw deleted file mode 100755 index af6af5b..0000000 --- a/day13/part2.dnw +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env ruby - -class Firewall - class Layer - def initialize(range) - @period = (range - 1) * 2 - end - - def will_capture_at?(time) - return time % @period == 0 - end - end - - def initialize - @layers = [] - end - - def add_layer!(depth, range) - @layers[depth] = Layer.new(range) - end - - def will_capture_at?(time) - (0...@layers.length).each do |i| - next if @layers[i].nil? - return true if @layers[i].will_capture_at?(time + i) - end - return false - end -end - - -input = $stdin.readlines.map(&:chomp).map{|l|l.split(': ').map(&:to_i)} -lcm = input.map(&:last).inject(1, :lcm) -delay = 0 - -loop do - if delay > lcm then - puts "Went past lcm" - exit - end - - firewall = Firewall.new - - input.each do |line| - firewall.add_layer!(line[0], line[1]) - end - - break unless firewall.will_capture_at?(delay) - - delay += 1 -end - -puts delay diff --git a/day13/test b/day13/test deleted file mode 100644 index 0239024..0000000 --- a/day13/test +++ /dev/null @@ -1,4 +0,0 @@ -0: 3 -1: 2 -4: 4 -6: 4 -- cgit v1.2.3