[2024][ruby][2.x]
change trslyqznxxotpwpmpwmnwzkntwkmxwnl
commit 4fd226cbbc87e6e4865c2a2dc8fc5eed75a7a831
author Alpha Chen <alpha@kejadlen.dev>
date
parent rxwowslp
diff --git a/2024/ruby/day_02.rb b/2024/ruby/day_02.rb
new file mode 100644
index 0000000..8fbf6af
--- /dev/null
+++ b/2024/ruby/day_02.rb
@@ -0,0 +1,24 @@
+input = DATA.readlines(chomp: true).map { _1.split(/\s+/).map(&:to_i) }
+
+def safe(report)
+  deltas = report.each_cons(2).map { _1 - _2 }
+  (deltas.all?(&:negative?) || deltas.all?(&:positive?)) && (deltas.all? { (1..3).cover?(_1.abs) })
+end
+
+def dampened(report)
+  return enum_for(__method__, report) unless block_given?
+
+  (0...report.length).each do |i|
+    yield report[0...i] + report[i+1..]
+  end
+end
+
+pp input.count {|report|
+  # part one
+  # safe(report)
+
+  # part two
+  safe(report) || dampened(report).any? { safe(_1) }
+}
+
+__END__