From 963a61b14e2299bb860cd4abdb6ca04c9e75bf41 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Sun, 12 Dec 2021 21:19:08 -0800 Subject: [PATCH] [2021][ruby][13.x] --- 2021/ruby/day_13.rb | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 2021/ruby/day_13.rb 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")