diff --git a/2017/d1.rkt b/2017/d1/main.rkt similarity index 68% rename from 2017/d1.rkt rename to 2017/d1/main.rkt index e938ccb..b53eed1 100644 --- a/2017/d1.rkt +++ b/2017/d1/main.rkt @@ -1,11 +1,9 @@ #lang br/quicklang -(require "helper.rkt") +(require "../helper.rkt") -(module+ reader (provide read-syntax)) +(provide read-syntax) (define (read-syntax path port) - (strip-context (with-pattern ([DATUMS (port->datums port)]) - #'(module d1 aoc-racket/2017/d1 - . DATUMS)))) + (strip-context #`(module mod "main.rkt" #,@(port->datums port)))) (provide (rename-out [#%mb #%module-begin])) (define-macro (#%mb STARS NUMBER ...) diff --git a/2017/d1/star1.rkt b/2017/d1/star1.rkt index 7dfbfc8..5a5e7f2 100644 --- a/2017/d1/star1.rkt +++ b/2017/d1/star1.rkt @@ -1,2 +1,2 @@ -#lang aoc-racket/2017/d1 ★ +#lang reader "main.rkt" ★ 9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349 \ No newline at end of file diff --git a/2017/d1/star2.rkt b/2017/d1/star2.rkt index 4cab9c5..7f48402 100644 --- a/2017/d1/star2.rkt +++ b/2017/d1/star2.rkt @@ -1,2 +1,2 @@ -#lang aoc-racket/2017/d1 ★★ +#lang reader "main.rkt" ★★ 9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349 \ No newline at end of file diff --git a/2017/d1/t1.rkt b/2017/d1/t1.rkt deleted file mode 100644 index 8093e99..0000000 --- a/2017/d1/t1.rkt +++ /dev/null @@ -1,6 +0,0 @@ -#lang reader "day1.rkt" first - -1122 -1111 -1234 -91212129 \ No newline at end of file diff --git a/2017/d1/t2.rkt b/2017/d1/t2.rkt deleted file mode 100644 index 02455e8..0000000 --- a/2017/d1/t2.rkt +++ /dev/null @@ -1,7 +0,0 @@ -#lang reader "day1.rkt" second - -1212 -1221 -123425 -123123 -12131415 \ No newline at end of file diff --git a/2017/d1/test1.rkt b/2017/d1/test1.rkt new file mode 100644 index 0000000..11ded6b --- /dev/null +++ b/2017/d1/test1.rkt @@ -0,0 +1,5 @@ +#lang reader "main.rkt" ★ +1122 +1111 +1234 +91212129 \ No newline at end of file diff --git a/2017/d1/test2.rkt b/2017/d1/test2.rkt new file mode 100644 index 0000000..92037de --- /dev/null +++ b/2017/d1/test2.rkt @@ -0,0 +1,7 @@ +#lang reader "main.rkt" ★★ + +1212 +1221 +123425 +123123 +12131415 \ No newline at end of file diff --git a/2017/d2/main.rkt b/2017/d2/main.rkt new file mode 100644 index 0000000..faf1d2b --- /dev/null +++ b/2017/d2/main.rkt @@ -0,0 +1,24 @@ +#lang br/quicklang +(require "../helper.rkt") + +(provide read-syntax) +(define (read-syntax path port) + (strip-context #`(module mod "main.rkt" + #,@(for/list ([line (in-lines port)]) + (with-input-from-string line (λ () + (for/list ([datums (in-port)]) + datums))))))) + +(provide (rename-out [#%mb #%module-begin])) +(define-macro (#%mb (STARS) (NUMBER ...) ...) + #'(#%module-begin (checksum 'STARS '((NUMBER ...) ...)))) + +(define (checksum stars intss) + (define (max-min-diff ints) (- (apply max ints) (apply min ints))) + (define (no-remainder ints) + (for*/first ([duo (in-combinations ints 2)] + [result (in-value (apply / (sort duo >)))] + #:when (integer? result)) + result)) + (define row-proc (if (eq? stars '★) max-min-diff no-remainder)) + (apply + (map row-proc intss))) diff --git a/2017/d2/star1.rkt b/2017/d2/star1.rkt new file mode 100644 index 0000000..d9e3ba6 --- /dev/null +++ b/2017/d2/star1.rkt @@ -0,0 +1,17 @@ +#lang reader "main.rkt" ★ +1919 2959 82 507 3219 239 3494 1440 3107 259 3544 683 207 562 276 2963 +587 878 229 2465 2575 1367 2017 154 152 157 2420 2480 138 2512 2605 876 +744 6916 1853 1044 2831 4797 213 4874 187 6051 6086 7768 5571 6203 247 285 +1210 1207 1130 116 1141 563 1056 155 227 1085 697 735 192 1236 1065 156 +682 883 187 307 269 673 290 693 199 132 505 206 231 200 760 612 +1520 95 1664 1256 685 1446 253 88 92 313 754 1402 734 716 342 107 +146 1169 159 3045 163 3192 1543 312 161 3504 3346 3231 771 3430 3355 3537 +177 2129 3507 3635 2588 3735 3130 980 324 266 1130 3753 175 229 517 3893 +4532 164 191 5169 4960 3349 3784 3130 5348 5036 2110 151 5356 193 1380 3580 +2544 3199 3284 3009 3400 953 3344 3513 102 1532 161 143 2172 2845 136 2092 +194 5189 3610 4019 210 256 5178 4485 5815 5329 5457 248 5204 4863 5880 3754 +3140 4431 4534 4782 3043 209 216 5209 174 161 3313 5046 1160 160 4036 111 +2533 140 4383 1581 139 141 2151 2104 2753 4524 4712 866 3338 2189 116 4677 +1240 45 254 1008 1186 306 633 1232 1457 808 248 1166 775 1418 1175 287 +851 132 939 1563 539 1351 1147 117 1484 100 123 490 152 798 1476 543 +1158 2832 697 113 121 397 1508 118 2181 2122 809 2917 134 2824 3154 2791 \ No newline at end of file diff --git a/2017/d2/star2.rkt b/2017/d2/star2.rkt new file mode 100644 index 0000000..b3906bb --- /dev/null +++ b/2017/d2/star2.rkt @@ -0,0 +1,17 @@ +#lang reader "main.rkt" ★★ +1919 2959 82 507 3219 239 3494 1440 3107 259 3544 683 207 562 276 2963 +587 878 229 2465 2575 1367 2017 154 152 157 2420 2480 138 2512 2605 876 +744 6916 1853 1044 2831 4797 213 4874 187 6051 6086 7768 5571 6203 247 285 +1210 1207 1130 116 1141 563 1056 155 227 1085 697 735 192 1236 1065 156 +682 883 187 307 269 673 290 693 199 132 505 206 231 200 760 612 +1520 95 1664 1256 685 1446 253 88 92 313 754 1402 734 716 342 107 +146 1169 159 3045 163 3192 1543 312 161 3504 3346 3231 771 3430 3355 3537 +177 2129 3507 3635 2588 3735 3130 980 324 266 1130 3753 175 229 517 3893 +4532 164 191 5169 4960 3349 3784 3130 5348 5036 2110 151 5356 193 1380 3580 +2544 3199 3284 3009 3400 953 3344 3513 102 1532 161 143 2172 2845 136 2092 +194 5189 3610 4019 210 256 5178 4485 5815 5329 5457 248 5204 4863 5880 3754 +3140 4431 4534 4782 3043 209 216 5209 174 161 3313 5046 1160 160 4036 111 +2533 140 4383 1581 139 141 2151 2104 2753 4524 4712 866 3338 2189 116 4677 +1240 45 254 1008 1186 306 633 1232 1457 808 248 1166 775 1418 1175 287 +851 132 939 1563 539 1351 1147 117 1484 100 123 490 152 798 1476 543 +1158 2832 697 113 121 397 1508 118 2181 2122 809 2917 134 2824 3154 2791 \ No newline at end of file diff --git a/2017/d2/test1.rkt b/2017/d2/test1.rkt new file mode 100644 index 0000000..bc4fcdc --- /dev/null +++ b/2017/d2/test1.rkt @@ -0,0 +1,4 @@ +#lang reader "main.rkt" ★ +5 1 9 5 +7 5 3 +2 4 6 8 \ No newline at end of file diff --git a/2017/d2/test2.rkt b/2017/d2/test2.rkt new file mode 100644 index 0000000..819b1e4 --- /dev/null +++ b/2017/d2/test2.rkt @@ -0,0 +1,4 @@ +#lang reader "main.rkt" ★★ +5 9 2 8 +9 4 7 3 +3 8 6 5 \ No newline at end of file diff --git a/2017/helper.rkt b/2017/helper.rkt index 8568cf6..7951452 100644 --- a/2017/helper.rkt +++ b/2017/helper.rkt @@ -2,6 +2,8 @@ (require syntax/strip-context sugar/list) (provide (all-defined-out) (all-from-out syntax/strip-context sugar/list)) +(define ★ '★) (define ★★ '★★) + (define (port->datums port) (for/list ([datum (in-port read port)]) datum))