diff --git a/OUTPUT b/OUTPUT index a1d1da8..5bbbb55 100644 --- a/OUTPUT +++ b/OUTPUT @@ -414,8 +414,12 @@ ex2-c : res=1680 +++++++++++++++++ ex1 ex1.bash : res=650217205854 - time: 0:01.76 real, 1.74 user, 0.01 sys - context-switch: 5+1, page-faults: 0+188 + time: 0:01.71 real, 1.70 user, 0.00 sys + context-switch: 39+1, page-faults: 0+191 + +ex1-c : res=650217205854 + time: 0:00.00 real, 0.00 user, 0.00 sys + context-switch: 0+1, page-faults: 0+73 +++++++++++++++++ ex2 ex2.bash : res=20394514442037 diff --git a/day18/Makefile b/day18/Makefile index a1d3261..8689c77 100644 --- a/day18/Makefile +++ b/day18/Makefile @@ -15,9 +15,9 @@ output: compile: ex1-c ex2-c -ex1: +ex1: ex1-c @$(TIME) ex1.bash < $(INPUT) 2>&1 - @#$(TIME) ex1-c 2020 < $(INPUT) 2>&1 + @$(TIME) ex1-c 2020 < $(INPUT) 2>&1 ex2: @$(TIME) ex2.bash < $(INPUT) 2>&1 diff --git a/day18/OUTPUT b/day18/OUTPUT index 5a84b39..74e98a7 100644 --- a/day18/OUTPUT +++ b/day18/OUTPUT @@ -1,8 +1,12 @@ ex1.bash : res=650217205854 - time: 0:01.76 real, 1.74 user, 0.01 sys - context-switch: 5+1, page-faults: 0+188 + time: 0:01.71 real, 1.70 user, 0.00 sys + context-switch: 39+1, page-faults: 0+191 + +ex1-c : res=650217205854 + time: 0:00.00 real, 0.00 user, 0.00 sys + context-switch: 0+1, page-faults: 0+73 ex2.bash : res=20394514442037 - time: 0:01.54 real, 1.53 user, 0.01 sys - context-switch: 42+1, page-faults: 0+196 + time: 0:01.61 real, 1.55 user, 0.00 sys + context-switch: 4+2, page-faults: 0+195 diff --git a/day18/ex1-c.c b/day18/ex1-c.c index 3f6ddfb..87fffe7 100644 --- a/day18/ex1-c.c +++ b/day18/ex1-c.c @@ -16,20 +16,16 @@ static long eval_expr(); static char *saveptr=NULL; -static long get_tok() //, char **saveptr, long *res) +static long get_tok() { char *p, c; long val=0; - //printf("%s(%p, %p)\n", __func__, ptr, *saveptr); p=saveptr; - //printf("%s: str=[%s]\n", __func__, p); while (!val) { c=*p; - //printf(" %s: c=[%c] str=[%s]\n", __func__, c, p); switch (c) { case ' ': - //case '\n': break; case '(': val=T_SUB; @@ -39,6 +35,7 @@ static long get_tok() //, char **saveptr, long *res) break; case ')': case '\n': + case '\0': val=T_END; break; case '*': @@ -53,9 +50,7 @@ static long get_tok() //, char **saveptr, long *res) break; } while (DIGIT(c)) { - //printf(" int parse: c=[%c] val=%d\n", c, val); val=(val*10 + c - '0'); - //printf(" -> val=%d\n", val); p++; c=*p; } @@ -65,35 +60,8 @@ static long get_tok() //, char **saveptr, long *res) p++; } saveptr=p; - //printf("%s END: str=[%s] val=%ld p=[%s]\n", __func__, p, val, *saveptr); return val; } -static char* debug_tok(long tok) -{ - static char res[32]; - - switch (tok) { - case T_END: - sprintf (res, "T_END"); - break; - case T_PLUS: - sprintf (res, "T_PLUS"); - break; - case T_MULT: - sprintf (res, "T_MULT"); - break; - case T_ERR: - sprintf (res, "T_ERR"); - break; - case T_SUB: - sprintf (res, "T_SUB"); - break; - default: - sprintf (res, "TNUM[%ld]", tok); - break; - } - return res; -} static long eval_expr() { @@ -102,12 +70,9 @@ static long eval_expr() res=get_tok(); left=res; - printf("--->EVAL TOK=: %ld tag=%s \n", res, debug_tok(res)); while (res!=T_ERR && res!=T_END) { switch (res) { case T_END: - //printf ("RETURNING: %ld\n", left); - //return left; goto end; break; case T_PLUS: @@ -116,14 +81,9 @@ static long eval_expr() break; case T_ERR: left=res; - //return T_ERR; goto end; break; - //case T_SUB: - //sprintf (res, "T_SUB"); - //break; default: - //printf ("DEFAULT(left=%ld, res=%ld)\n" , left, res); switch (op) { case T_PLUS: left+=res; @@ -132,17 +92,11 @@ static long eval_expr() left*=res; break; } - printf ("DEFAULT(left=%ld, res=%ld) - " , left, res); - printf ("New left: %ld\n", left); break; } res=get_tok(); - printf("get_tok: %ld tag=%s \n", res, debug_tok(res)); - // printf("get_tok: %ld tag=%s \n", res, debug_tok(res)); - } end: - printf ("RETURNING: %ld\n", left); return left; } @@ -154,14 +108,9 @@ int main(ac, av) long res=0, tmp; while (fgets(line, sizeof line, stdin)) { - //*(line+strlen(line)-1)=0; saveptr=line; - //printf("get_tok: %ld tag=%s \n", res, debug_tok(res)); tmp=eval_expr(); - printf("EXPR=%s\n", debug_tok(tmp)); res+=tmp; - //} while (res!=T_ERR && res!=T_END); - //res+=build_tree(line, &pnext); } printf("%s : res=%ld\n", *av, res); exit (0);