[2021][ruby][13.x]
change rxkmplsqwxzuwtmomuxowztymmqqvvsx
commit 0c1a4a9465bba4971b1c0116ff5a31bd45f496b6
author Alpha Chen <alpha@kejadlen.dev>
date
parent kyzkrzvl
diff --git a/2021/ruby/day_13.rb b/2021/ruby/day_13.rb
new file mode 100644
index 0000000..169fd43
--- /dev/null
+++ b/2021/ruby/day_13.rb
@@ -0,0 +1,25 @@
+dots, folds = ARGF.read.split("\n\n")
+
+dots = dots.scan(/(\d+),(\d+)/).map { _1.map(&:to_i) }
+folds = folds.scan(/(x|y)=(\d+)/).map { [_1, _2.to_i] }
+
+folds.each do |dir, axis|
+  case dir
+  when ?x
+    dots.select {|x,y| x > axis }.each do |dot|
+      dot[0] = axis - (dot[0] - axis)
+    end
+  when ?y
+    dots.select {|x,y| y > axis }.each do |dot|
+      dot[1] = axis - (dot[1] - axis)
+    end
+  else
+    fail
+  end
+  dots.uniq!
+  # p dots.size or exit
+end
+
+xx = Range.new(*dots.map(&:first).minmax)
+yy = Range.new(*dots.map(&:last).minmax)
+puts yy.map {|y| xx.map {|x| dots.include?([x,y]) ? "█" : " " }.join }.join("\n")