day 21 preliminary refactoring
[aoc_eblake.git] / 2015 / day11.m4
blob17de4efc35126d4e7c12e01ee87324decfe4340d
1 divert(-1)dnl -*- m4 -*-
2 # Usage: m4 [-Dstart=XXX] [-Dfile=day11.input] day11.m4
4 include(`common.m4')ifelse(common(11), `ok', `',
5 `errprint(`Missing common initialization
6 ')m4exit(1)')
8 ifdef(`start', `', `define(`start', translit(include(defn(`file')), nl))')
10 # Verify the first four letters fail all rules, the fourth letter is x,
11 # and the fifth letter < x.  Then the answer is trivial.
12 define(`prep', `define(eval(9 + $1, 36)`_', incr($1))')
13 forloop_arg(1, 26, `prep')
14 define(`h_', i_)define(`k_', l_)define(`n_', o_)
15 define(`fail', `errprintn(`input in unexpected form')m4exit(1)')
16 define(`check', `ifelse(`$1', translit(`$1', `ilo'), `_$0(substr(`$1', 0, 1),
17   substr(`$1', 1, 1), substr(`$1', 2, 1), substr(`$1', 3, 1), substr(`$1', 4,
18   1))', `fail')')
19 define(`_check', `ifelse(`$1', `$2', `fail', `$2', `$3', `fail', `$3', `$4',
20   `fail', eval($2_ + 1 == $3_), 1, `fail', eval($5_ >= $4_), 1, `fail',
21   `$4', x, `define(`part1', `$1$2$3xxyzz')define(`part2',
22   `$1$2'eval(9 + $3_, 36)`aabcc')', `fail')')
23 check(start)
25 divert`'part1
26 part2