diff --git a/2016/ruby/day_03.rb b/2016/ruby/day_03.rb
new file mode 100644
index 0000000..31a84f2
--- /dev/null
+++ b/2016/ruby/day_03.rb
@@ -0,0 +1,24 @@
+def valid_triangle?(a, b, c)
+ a+b > c && a+c > b && b+c > a
+end
+
+if __FILE__ == $0
+ candidates = DATA.read.lines.each_slice(3).flat_map do |a, b, c|
+ a = a.scan(/\d+/).map(&:to_i)
+ b = b.scan(/\d+/).map(&:to_i)
+ c = c.scan(/\d+/).map(&:to_i)
+ a.zip(b).zip(c).map(&:flatten)
+ end
+ p candidates.select {|sides| valid_triangle?(*sides)}.size
+end
+
+require 'minitest'
+# require 'minitest/autorun'
+
+class TestDay3 < Minitest::Test
+ def test_day_3
+ refute valid_triangle?(5, 10, 25)
+ end
+end
+
+__END__