1 divert(-1)dnl -*- m4 -*-
2 # Usage: m4 [-Dfile=day1.input] day1.m4
4 include(`common.m4')ifelse(common(1), `ok', `',
5 `errprint(`Missing common initialization
8 define(`input', translit(include(defn(`file')), nl))
9 define(`wrap', `substr(`$1', $2)substr(`$1', 0, $2)')
11 define(`get', `patsubst(`$1', `.', `pushdef(`$2', \&)')')
13 define(`split', `ifelse($1, 1, `pushdef(`$3', `$2')', `$0(eval($1/2),
14 substr(`$2', 0, eval($1/2)), `$3')$0(eval($1 - $1/2), substr(`$2',
15 eval($1/2)), `$3')')')
16 define(`get', `split(len(`$1'), `$1', `$2')')
18 get(defn(`input'), `a')
19 get(wrap(defn(`input'), 1), `b')
20 get(defn(`input'), `c')
21 get(wrap(defn(`input'), eval(len(defn(`input'))/2)), `d')
22 define(`compare', `eval(_$0($@))')
23 define(`_compare', `ifdef(`$1', `ifelse($1, $2, +$1)popdef(`$1')popdef(
25 define(`part1', compare(`a', `b'))
26 define(`part2', compare(`c', `d'))