diff --git a/2021/ruby/day_06.rb b/2021/ruby/day_06.rb
new file mode 100644
index 0000000..4f609aa
--- /dev/null
+++ b/2021/ruby/day_06.rb
@@ -0,0 +1,22 @@
+ages = ARGF.read.split(?,).map(&:to_i)
+
+# 80.times do
+# new_fish = 0
+# ages.map! {|age|
+# if age.zero?
+# new_fish += 1
+# 6
+# else
+# age - 1
+# end
+# }
+# ages.concat(Array.new(new_fish) { 8 })
+# end
+# p ages.count
+
+DURATION = 256
+DESCENDANTS = Hash.new {|h,k|
+ children = (k...DURATION).step(7)
+ h[k] = children.count + children.map {|d| d + 9 }.select {|d| d < DURATION }.sum {|d| h[d] }
+}
+p ages.count + ages.sum {|age| DESCENDANTS[age] }