diff --git a/2021/ruby/day_12.rb b/2021/ruby/day_12.rb index 41612db..053cd36 100644 --- a/2021/ruby/day_12.rb +++ b/2021/ruby/day_12.rb @@ -14,11 +14,11 @@ loop do cave.fetch(path.last) # .reject { _1 =~ /^[a-z]+$/ && path.include?(_1) } .reject { _1 == "start" } - .map { path + [_1] } - .reject {|path| - small = path.tally.select { _1 =~ /^[a-z]+$/ } - (small.count { _2 > 1 } > 1) || small.any? { _2 > 2 } + .reject {|cave| + smalls = path.tally.select { _1 =~ /^[a-z]+$/ } + smalls.fetch(cave, 0) > (smalls.any? { _2 > 1 } ? 0 : 1) } + .map { path + [_1] } } end