[2024][ruby][3.x] trolling with flip-flops
change ovoynyqtputlmspoyurymrvppzrsrsqr
commit fb7377a8c9f3f3be34f2e1c18f60108e5e2efdb1
author Alpha Chen <alpha@kejadlen.dev>
date
parent wosuwxwl
diff --git a/2024/ruby/day_03.rb b/2024/ruby/day_03.rb
index c1ccf60..cd214c0 100644
--- a/2024/ruby/day_03.rb
+++ b/2024/ruby/day_03.rb
@@ -1,8 +1,21 @@
-input = DATA.read
-  .gsub(/don't\(\)(?~do\(\))do\(\)/, "")  # part two
-  .scan(/mul\((\d+),(\d+)\)/)
-  .map { _1.map(&:to_i) }
+# input = DATA.read
+#   .gsub(/don't\(\)(?~do\(\))do\(\)/, "")  # part two
+#   .scan(/mul\((\d+),(\d+)\)/)
+#   .map { _1.map(&:to_i) }
+#
+# pp input.sum { _1 * _2 }
 
-pp input.sum { _1 * _2 }
+# because I felt like using a flip-flop...
+input = DATA.read.scan(/(do|don't)\(\)|mul\((\d+),(\d+)\)/)
+input.unshift(["do"])
+
+sum = 0
+input.each do |dodont, *mul|
+  next unless (dodont == "do")..(dodont == "don't")
+  next unless dodont.nil?
+  a, b = mul.map(&:to_i)
+  sum += a * b
+end
+pp sum
 
 __END__