[2024][ruby][14.x]
change rqzzzmznsqnxzzqkxpozwumspvtrnrln
commit cb5f1450760e20fda5c6a0d4737ca7d6466c4201
author Alpha Chen <alpha@kejadlen.dev>
date
parent uuktmkrs
diff --git a/2024/ruby/day_14.rb b/2024/ruby/day_14.rb
new file mode 100644
index 0000000..1f0e79f
--- /dev/null
+++ b/2024/ruby/day_14.rb
@@ -0,0 +1,44 @@
+robots = DATA.read.scan(/-?\d+/).map(&:to_i).each_slice(4).to_a
+
+MAX_X = 101
+MAX_Y = 103
+# MAX_X = 11
+# MAX_Y = 7
+
+QUADRANTS = [
+  [(0...MAX_X/2), (0...MAX_Y/2)],
+  [(MAX_X/2+1..), (0...MAX_Y/2)],
+  [(0...MAX_X/2), (MAX_Y/2+1..)],
+  [(MAX_X/2+1..), (MAX_Y/2+1..)],
+]
+
+robots_s = -> {
+  (0..MAX_Y).map {|y|
+    (0..MAX_X).map {|x|
+      robots.any? {|r_x,r_y,_,_| r_x == x && r_y == y } ? ?# : ?.
+    }.join
+  }.join("\n")
+}
+
+(0..).each do |i|
+  robots.each do |robot|
+    p_x, p_y, v_x, v_y = robot
+    robot[0] = (p_x + v_x) % MAX_X
+    robot[1] = (p_y + v_y) % MAX_Y
+  end
+
+  if (i - 46) % 103 == 0
+    puts i
+    puts robots_s[]
+  end
+end
+
+pp [
+  [(0...MAX_X/2), (0...MAX_Y/2)],
+  [(MAX_X/2+1..), (0...MAX_Y/2)],
+  [(0...MAX_X/2), (MAX_Y/2+1..)],
+  [(MAX_X/2+1..), (MAX_Y/2+1..)],
+].map {|xx,yy| robots.count {|x,y,_,_| xx.cover?(x) && yy.cover?(y) }}
+  .inject(&:*)
+
+__END__