-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathproblem18.mk
executable file
·27 lines (17 loc) · 1.54 KB
/
problem18.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# -*- Makefile-GMake -*-
data=75;00;00;00;00;00;00;00;00;00;00;00;00;00;00 95;64;00;00;00;00;00;00;00;00;00;00;00;00;00 17;47;82;00;00;00;00;00;00;00;00;00;00;00;00 18;35;87;10;00;00;00;00;00;00;00;00;00;00;00 20;04;82;47;65;00;00;00;00;00;00;00;00;00;00 19;01;23;75;03;34;00;00;00;00;00;00;00;00;00 88;02;77;73;07;63;67;00;00;00;00;00;00;00;00 99;65;04;28;06;16;70;92;00;00;00;00;00;00;00 41;41;26;56;83;40;80;70;33;00;00;00;00;00;00 41;48;72;33;47;32;37;16;94;29;00;00;00;00;00 53;71;44;65;25;43;91;52;97;51;14;00;00;00;00 70;11;33;28;77;73;17;78;39;68;17;57;00;00;00 91;71;52;38;17;14;91;43;58;50;27;29;48;00;00 63;66;04;68;89;53;67;30;73;16;69;87;40;31;00 04;62;98;27;23;09;70;98;73;93;38;53;60;04;23
get=$(word $2,$(subst ;,$(SP),$(word $1,$(data))))
_add=$1 $2
add=$(call to_num,$(call from_num,$1) $(call from_num,$2))
_max=$(if $(word $(call to_num,$1),$2),$2,$1)
to_num=$(words $1)
_from_num=$(if $(word $1,$2),$2,$(call _from_num,$1,x $2))
from_num=$(if $(subst 0,,$1),$(call _from_num,$1,),)
rows=14 13 12 11 10 9 8 7 6 5 4 3 2 1
cols=1 2 3 4 5 6 7 8 9 10 11 12 13 14
define SP
endef
collection=$(foreach var,$(subst ;,$(SP),$(word $(words $(data)),$(data))),$(subst $(SP),;,$(call from_num,$(var))))
recurse=$(foreach Y,$(rows),$(eval collection=$(foreach X,$(cols),$(subst $(SP),;,$(call _add,$(call from_num,$(call get,$(Y),$(X))),$(call _max,$(subst ;, ,$(word $(X),$(collection))),$(subst ;, ,$(word $(call add,$(X),1),$(collection)))))))))
$(recurse)$(info $(call to_num,$(subst ;,$(SP),$(word 1,$(collection)))))
all: ;