diff --git a/2020/ruby/day_09.rb b/2020/ruby/day_09.rb
new file mode 100644
index 0000000..11be750
--- /dev/null
+++ b/2020/ruby/day_09.rb
@@ -0,0 +1,20 @@
+N = 25
+
+data = ARGF.read.scan(/\d+/).map(&:to_i)
+
+i = (N..).find {|i|
+ !data[i-N,N].combination(2).map(&:sum).include?(data[i])
+}
+invalid = data[i]
+
+(0..).each do |start|
+ (2..data.size-start-1).each do |len|
+ sum = data[start, len].sum
+ if sum == invalid
+ p data[start, len].minmax.sum
+ exit
+ elsif sum > invalid
+ next
+ end
+ end
+end