From 6166869fbb3254c4d8fa6eb844e5988c33a39608 Mon Sep 17 00:00:00 2001 From: Nat Lasseter Date: Sat, 23 Dec 2017 11:33:21 +0000 Subject: Day23 Part1 --- day23/input | 32 ++++++++++++++++++++++++++++++++ day23/part1 | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 day23/input create mode 100755 day23/part1 (limited to 'day23') diff --git a/day23/input b/day23/input new file mode 100644 index 0000000..9d29443 --- /dev/null +++ b/day23/input @@ -0,0 +1,32 @@ +set b 99 +set c b +jnz a 2 +jnz 1 5 +mul b 100 +sub b -100000 +set c b +sub c -17000 +set f 1 +set d 2 +set e 2 +set g d +mul g e +sub g b +jnz g 2 +set f 0 +sub e -1 +set g e +sub g b +jnz g -8 +sub d -1 +set g d +sub g b +jnz g -13 +jnz f 2 +sub h -1 +set g b +sub g c +jnz g 2 +jnz 1 3 +sub b -17 +jnz 1 -23 diff --git a/day23/part1 b/day23/part1 new file mode 100755 index 0000000..8f61d32 --- /dev/null +++ b/day23/part1 @@ -0,0 +1,36 @@ +#!/usr/bin/env ruby + +def valof(reg_file, reg_or_int) + if reg_or_int >= 'a' && reg_or_int <= 'z' then + return reg_file[reg_or_int] || 0 + end + return reg_or_int.to_i +end + +input = $stdin.readlines.map(&:chomp) + +reg = {} +pc = 0 +muls = 0 + +loop do + break if pc < 0 || pc >= input.length + istr = input[pc].split + case istr[0] + when 'set' + reg[istr[1]] = valof(reg, istr[2]) + when 'sub' + reg[istr[1]] = valof(reg, istr[1]) - valof(reg, istr[2]) + when 'mul' + reg[istr[1]] = valof(reg, istr[1]) * valof(reg, istr[2]) + muls += 1 + when 'jnz' + if valof(reg, istr[1]) != 0 then + pc += valof(reg, istr[2]) + pc -= 1 + end + end + pc += 1 +end + +puts muls -- cgit v1.2.3