[2024][ruby][6.1]
change oxtpuquxznrlxrzmlsvtrmqvztwlxvlw
commit d43906f9fc692c735c96b9e03522f26003e01cc2
author Alpha Chen <alpha@kejadlen.dev>
date
parent kzrsmnnr
diff --git a/2024/ruby/day_06.rb b/2024/ruby/day_06.rb
new file mode 100644
index 0000000..18011d7
--- /dev/null
+++ b/2024/ruby/day_06.rb
@@ -0,0 +1,36 @@
+input = DATA.readlines(chomp: true)
+  .flat_map.with_index {|line, j|
+    line.chars.map.with_index {|x, i|
+      [[j,i], x]
+    }
+  }.to_h
+
+turns = {
+  [-1,0] => [0,1],
+  [0,1] => [1,0],
+  [1,0] => [0,-1],
+  [0,-1] => [-1,0],
+}
+
+start = input.find { _2 == ?^ }.first
+dir = [-1,0]
+path = [start]
+loop do
+  peek = path.last.zip(dir).map {|i,di| i + di }
+  case input.fetch(peek, nil)
+  when ?.
+    path << peek
+  when ?^
+    path << peek
+  when ?#
+    dir = turns.fetch(dir)
+  when nil
+    break
+  else
+    fail
+  end
+end
+
+pp path.to_set.length
+
+__END__