Code for the Advent of Code event
aoc
advent-of-code
1#!/usr/bin/env ruby
2# frozen_string_literal: true
3
4require_relative '../../../lib/aoc/intcode/cpu'
5
6PATH = ARGV.first || 'input'
7DEBUG = ENV.fetch('DEBUG', nil)
8
9script = <<~SCRIPT
10 NOT A J
11 NOT B T
12 AND D T
13 OR T J
14 NOT C T
15 OR T J
16 AND D J
17 WALK
18SCRIPT
19
20cpu = AoC::Intcode::CPU.new.print_output!(false).load!(PATH).input!(script)
21
22cpu.run!
23
24if cpu.output[-1] > 255
25 puts "Part 1: #{cpu.output[-1]}"
26else
27 puts cpu.output.map(&:chr).join
28end
29
30cpu.reset!
31
32script = <<~SCRIPT
33 NOT A J
34 NOT B T
35 AND D T
36 OR T J
37 NOT C T
38 OR T J
39 NOT A T
40 OR T J
41 AND H J
42 OR E J
43 AND D J
44 RUN
45SCRIPT
46
47cpu.input!(script).run!
48
49if cpu.output[-1] > 255
50 puts "Part 2: #{cpu.output[-1]}"
51else
52 puts cpu.output.map(&:chr).join
53end