2019 day 4 part 1

[?]
May 18, 2020, 10:32 AM
B5KU7GLGBVB75H44OPH5GNTQZUG44EDV4SGIYC5AMMXOCRQXLOVAC

Dependencies

Change contents

  • file addition: day4.rb (----------)
    [2.7]
    def pairwise e
    Enumerator.new do |y|
    a = e.next
    while true
    b = e.next
    y.yield a,b
    a = b
    end
    rescue StopIteration
    end
    end
    def next_d(d,c)
    d == true || d == c || c
    end
    def build_candidates(d,s)
    Enumerator.new do |y|
    if s.length == 0
    y.yield [] if d == true
    else
    r = s[0]
    Enumerator.new do |y2|
    (r.begin .. r.end).each do |c|
    y2.yield(c, s[1 ... s.length].map do |m|
    (c != r.begin ? c : [c, m.begin].max) ..
    (c == r.end ? m.end : '9')
    end)
    end
    end.each do |c,sn|
    build_candidates(next_d(d,c), sn).each do |t|
    y.yield([c] + t)
    end
    end
    end
    end
    end
    def solve(a,b)
    build_candidates(false,a.to_s.chars.zip(b.to_s.chars).map do |l,h|
    l .. h
    end).lazy.map{|r| r.join("").to_i }
    end
    # puts solve(ARGV[0], ARGV[1]).count