day 6 fix bug
[aoc_eblake.git] / 2022 / day25.m4
blobf721fe36cae6ad9e6270d6b39494bfba1f44d444
1 divert(-1)dnl -*- m4 -*-
2 # Usage: m4 [-Dfile=day25.input] day25.m4
4 include(`common.m4')ifelse(common(25), `ok', `',
5 `errprint(`Missing common initialization
6 ')m4exit(1)')
8 define(`input', translit(include(defn(`file')), `-=012'nl, `43567;'))
9 define(`accum')
10 define(`_add', `add(`$1', `$2', eval($3/5-1))eval($3%5+3)')
11 define(`add', `ifelse(`$1$2$3', 0, `', `$1', `', `$0(5, `$2', `$3')',
12   `$2', `', `$0(`$1', 5, `$3')', `_$0(substr(`$1', 0, decr(len(`$1'))),
13   substr(`$2', 0, decr(len(`$2'))), ($3+substr(`$1', decr(len(`$1')))+substr(
14   `$2', decr(len(`$2')))-3))')')
15 define(`do', `define(`accum', add(accum, `$1'))')
17 ifdef(`__gnu__', `
18   patsubst(defn(`input'), `\([^;]*\);', `do(`\1')')
19 ', `
20   define(`_chew', `do(substr(`$1', 0, index(`$1', `;')))define(
21     `tail', substr(`$1', incr(index(`$1', `;'))))ifelse(index(defn(`tail'),
22     `;'), -1, `', `$0(defn(`tail'))')')
23   define(`chew', `ifelse(eval($1 < 40), 1, `_$0(`$2')', `$0(eval($1/2),
24     substr(`$2', 0, eval($1/2)))$0(eval(len(defn(`tail')) + $1 - $1/2),
25     defn(`tail')substr(`$2', eval($1/2)))')')
26   chew(len(defn(`input')), defn(`input'))
28 define(`part1', translit(accum, `43567', `-=012'))
30 divert`'part1
31 no part2