diff --git a/2023/ruby/day_11.rb b/2023/ruby/day_11.rb
new file mode 100644
index 0000000..6cb9397
--- /dev/null
+++ b/2023/ruby/day_11.rb
@@ -0,0 +1,13 @@
+image = ARGF.read
+image.gsub!(/^(\.+)$/m, "\\1\n\\1")
+image = image.split("\n").map(&:chars).transpose.map(&:join).join("\n")
+image.gsub!(/^(\.+)$/m, "\\1\n\\1")
+image = image.split("\n").map(&:chars)
+
+galaxies = image.flat_map.with_index {|row, y|
+ row.filter_map.with_index {|elem, x| elem == ?# ? [y,x] : nil }
+}
+
+p galaxies.combination(2).sum {|a, b|
+ a.zip(b).sum { (_1 - _2).abs }
+}