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