diff --git a/2024/ruby/day_07.rb b/2024/ruby/day_07.rb new file mode 100644 index 0000000..c92f2a3 --- /dev/null +++ b/2024/ruby/day_07.rb @@ -0,0 +1,25 @@ +input = DATA.readlines + .map {|line| + nums = line.scan(/\d+/).map(&:to_i) + [nums.shift, nums] + } + +pp input.filter_map {|val, vars| + vals = vars.inject {|n,x| + %i[ + * ].flat_map {|op| + Array(n).map { _1.send(op, x) } + } + } + vals.include?(val) && val +}.sum + +__END__ +190: 10 19 +3267: 81 40 27 +83: 17 5 +156: 15 6 +7290: 6 8 6 15 +161011: 16 10 13 +192: 17 8 14 +21037: 9 7 18 13 +292: 11 6 16 20