[2023][ruby][14.x] clean up part one
change sssnvvywnwsqvvnnposlxlpqkukzxtxu
commit cdafd4300ce140499ce1ea500e2385f4bfd5af94
author Alpha Chen <alpha@kejadlen.dev>
date
parent wwurxoru
diff --git a/2023/ruby/day_14.rb b/2023/ruby/day_14.rb
index b83d4cb..b70ed3f 100644
--- a/2023/ruby/day_14.rb
+++ b/2023/ruby/day_14.rb
@@ -1,14 +1,5 @@
 input = ARGF.readlines(chomp: true).map(&:chars)
 
-# part one
-p input.transpose
-  .map {|col| col.chunk_while { [_1, _2].tally.fetch(?#, 0).even? }}
-  .map {|col| col.flat_map { _1.sort.reverse }}
-  .transpose
-  .reverse
-  .each.with_index
-  .sum {|row, i| row.count(?O) * (i+1) }
-
 # always tilts left
 def tilt(platform)
   platform
@@ -16,6 +7,15 @@ def tilt(platform)
     .map {|row| row.flat_map { _1.sort.reverse }}
 end
 
+def load(platform)
+  platform.reverse
+    .each.with_index
+    .sum {|row, i| row.count(?O) * (i+1) }
+end
+
+# part one
+p load(tilt(input.transpose).transpose)
+
 def spin_cycle(platform)
   return enum_for(__method__, platform) unless block_given?
 
@@ -41,6 +41,7 @@ spin = spin_cycle(input)
 seen = {}
 (1_000_000_000).times do |i|
   platform = spin.next
+
   if seen.has_key?(platform.hash)
     start, _ = seen.fetch(platform.hash)
     i = (1_000_000_000 - start) % (i+1 - start) + start
@@ -48,9 +49,6 @@ seen = {}
     exit
   end
 
-  load = platform.reverse
-    .each.with_index
-    .sum {|row, i| row.count(?O) * (i+1) }
-  seen[platform.hash] = [i+1, load]
+  seen[platform.hash] = [i+1, load(platform)]
 end