diff --git a/2019/ruby/computer.rb b/2019/ruby/computer.rb
index 8c0d823..911ad23 100644
--- a/2019/ruby/computer.rb
+++ b/2019/ruby/computer.rb
@@ -1,5 +1,7 @@
# typed: strict
+require "stringio"
+
require "sorbet-runtime"
AnyIO = T.type_alias { T.any(IO, StringIO) }
diff --git a/2019/ruby/day_07.rb b/2019/ruby/day_07.rb
new file mode 100644
index 0000000..df56b57
--- /dev/null
+++ b/2019/ruby/day_07.rb
@@ -0,0 +1,12 @@
+require_relative "computer"
+
+program = ARGF.read
+
+puts (0..4).to_a.permutation.map {|phase_settings|
+ amplifiers = Array.new(5) { Computer.from(program) }
+ amplifiers.zip(phase_settings).inject(?0) {|i, (a, ps)|
+ output = StringIO.new
+ a.run(StringIO.new("#{ps}\n#{i}"), output)
+ output.string
+ }.to_i
+}.max