diff --git a/2020/ruby/day_03.rb b/2020/ruby/day_03.rb
new file mode 100644
index 0000000..abf4912
--- /dev/null
+++ b/2020/ruby/day_03.rb
@@ -0,0 +1,18 @@
+map = ARGF.read.split("\n").map(&:chars)
+slopes = [
+ [1, 1],
+ [3, 1],
+ [5, 1],
+ [7, 1],
+ [1, 2],
+]
+puts slopes.map {|dx,dy|
+ x, y = 0, 0
+ trees = 0
+ until y >= map.length
+ trees += 1 if map[y][x % map[0].size] == ?#
+ x += dx
+ y += dy
+ end
+ trees
+}.reduce(&:*)