/Task/Anagrams/M4/anagrams.m4
m4 | 46 lines | 46 code | 0 blank | 0 comment | 0 complexity | 22fe061053c70aebe3df14d01a1b8fa2 MD5 | raw file
- divert(-1)
- changequote(`[',`]')
- define([for],
- [ifelse($#,0,[[$0]],
- [ifelse(eval($2<=$3),1,
- [pushdef([$1],$2)$4[]popdef([$1])$0([$1],incr($2),$3,[$4])])])])
- define([_bar],include(t.txt))
- define([eachlineA],
- [ifelse(eval($2>0),1,
- [$3(substr([$1],0,$2))[]eachline(substr([$1],incr($2)),[$3])])])
- define([eachline],[eachlineA([$1],index($1,[
- ]),[$2])])
- define([removefirst],
- [substr([$1],0,$2)[]substr([$1],incr($2))])
- define([checkfirst],
- [ifelse(eval(index([$2],substr([$1],0,1))<0),1,
- 0,
- [ispermutation(substr([$1],1),
- removefirst([$2],index([$2],substr([$1],0,1))))])])
- define([ispermutation],
- [ifelse([$1],[$2],1,
- eval(len([$1])!=len([$2])),1,0,
- len([$1]),0,0,
- [checkfirst([$1],[$2])])])
- define([_set],[define($1<$2>,$3)])
- define([_get],[defn([$1<$2>])])
- define([_max],1)
- define([_n],0)
- define([matchj],
- [_set([count],$2,incr(_get([count],$2)))[]ifelse(eval(_get([count],$2)>_max),
- 1,[define([_max],incr(_max))])[]_set([list],$2,[_get([list],$2) $1])])
- define([checkwordj],
- [ifelse(ispermutation([$1],_get([word],$2)),1,[matchj([$1],$2)],
- [addwordj([$1],incr($2))])])
- define([_append],
- [_set([word],_n,[$1])[]_set([count],_n,1)[]_set([list],_n,
- [$1 ])[]define([_n],incr(_n))])
- define([addwordj],
- [ifelse($2,_n,[_append([$1])],[checkwordj([$1],$2)])])
- define([addword],
- [addwordj([$1],0)])
- divert
- eachline(_bar,[addword])
- _max
- for([x],1,_n,[ifelse(_get([count],x),_max,[_get([list],x)
- ])])