day 16 part 2 wrong
[aoc_eblake.git] / 2016 / day12.m4
blob962b03c0986f82dd6a883a8f5f9dd7c7e9765139
1 divert(-1)dnl -*- m4 -*-
2 # Usage: m4 [-Dfile=day12.input] day12.m4
4 include(`common.m4')ifelse(common(12), `ok', `',
5 `errprint(`Missing common initialization
6 ')m4exit(1)')
8 define(`input', translit((include(defn(`file'))), nl`,()', `;'))
9 define(`cnt', 0)
10 define(`_inc_', ```$1''')
11 define(`line', `_$0(translit(`$1', ` ', `,'))')
12 define(`_line', `define(`i'cnt, `$1_(`$2', `$3')')ifelse(`$1$3', `jnz-2',
13   `pushdef(`i'cnt, `hck_('first(`_'defn(`i'decr(decr(cnt))))`, `$2')')')define(
14   `cnt', incr(cnt))')
15 ifdef(`__gnu__', `
16   patsubst(defn(`input'), `\([^;]*\);', `line(`\1')')
17 ', `
18   define(`_chew', `line(substr(`$1', 0, index(`$1', `;')))define(`tail',
19     substr(`$1', incr(index(`$1', `;'))))ifelse(index(defn(`tail'), `;'), -1,
20     `', `$0(defn(`tail'))')')
21   define(`chew', `ifelse(eval($1 < 20), 1, `_$0(`$2')', `$0(eval($1/2),
22     substr(`$2', 0, eval($1/2)))$0(eval(len(defn(`tail')) + $1 - $1/2),
23     defn(`tail')substr(`$2', eval($1/2)))')')
24   chew(len(defn(`input')), defn(`input'))
27 define(`r', `ifdef(`r$1', `r$1', `$1')')
28 define(`cpy_', `define(`r$2', r(`$1'))1')
29 define(`inc_', `define(`r$1', incr(r$1))1')
30 define(`dec_', `define(`r$1', decr(r$1))1')
31 define(`jnz_', `ifelse(r(`$1'), 0, 1, $2)')
32 define(`hck_', `define(`r$1', eval(r$1 + r$2))define(`r$2', 0)1')
33 define(`run', `ifdef(`i'pc, `_$0(pc)$0`'')')
34 define(`_run', `define(`pc', eval(pc + i$1()))')
36 define(`ra', 0)define(`rb', 0)define(`rc', 0)define(`rd', 0)define(`pc', 0)
37 run()
38 define(`part1', ra)
39 define(`ra', 0)define(`rb', 0)define(`rc', 1)define(`rd', 0)define(`pc', 0)
40 run()
41 define(`part2', ra)
43 divert`'part1
44 part2