2017
parent
123ab1927c
commit
bac4e71c33
@ -1,11 +1,9 @@
|
|||||||
#lang br/quicklang
|
#lang br/quicklang
|
||||||
(require "helper.rkt")
|
(require "../helper.rkt")
|
||||||
|
|
||||||
(module+ reader (provide read-syntax))
|
(provide read-syntax)
|
||||||
(define (read-syntax path port)
|
(define (read-syntax path port)
|
||||||
(strip-context (with-pattern ([DATUMS (port->datums port)])
|
(strip-context #`(module mod "main.rkt" #,@(port->datums port))))
|
||||||
#'(module d1 aoc-racket/2017/d1
|
|
||||||
. DATUMS))))
|
|
||||||
|
|
||||||
(provide (rename-out [#%mb #%module-begin]))
|
(provide (rename-out [#%mb #%module-begin]))
|
||||||
(define-macro (#%mb STARS NUMBER ...)
|
(define-macro (#%mb STARS NUMBER ...)
|
@ -1,2 +1,2 @@
|
|||||||
#lang aoc-racket/2017/d1 ★
|
#lang reader "main.rkt" ★
|
||||||
9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349
|
9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349
|
@ -1,2 +1,2 @@
|
|||||||
#lang aoc-racket/2017/d1 ★★
|
#lang reader "main.rkt" ★★
|
||||||
9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349
|
9513446799636685297929646689682997114316733445451534532351778534251427172168183621874641711534917291674333857423799375512628489423332297538215855176592633692631974822259161766238385922277893623911332569448978771948316155868781496698895492971356383996932885518732997624253678694279666572149831616312497994856288871586777793459926952491318336997159553714584541897294117487641872629796825583725975692264125865827534677223541484795877371955124463989228886498682421539667224963783616245646832154384756663251487668681425754536722827563651327524674183443696227523828832466473538347472991998913211857749878157579176457395375632995576569388455888156465451723693767887681392547189273391948632726499868313747261828186732986628365773728583387184112323696592536446536231376615949825166773536471531487969852535699774113163667286537193767515119362865141925612849443983484245268194842563154567638354645735331855896155142741664246715666899824364722914296492444672653852387389477634257768229772399416521198625393426443499223611843766134883441223328256883497423324753229392393974622181429913535973327323952241674979677481518733692544535323219895684629719868384266425386835539719237716339198485163916562434854579365958111931354576991558771236977242668756782139961638347251644828724786827751748399123668854393894787851872256667336215726674348886747128237416273154988619267824361227888751562445622387695218161341884756795223464751862965655559143779425283154533252573949165492138175581615176611845489857169132936848668646319955661492488428427435269169173654812114842568381636982389224236455633316898178163297452453296667661849622174541778669494388167451186352488555379581934999276412919598411422973399319799937518713422398874326665375216437246445791623283898584648278989674418242112957668397484671119761553847275799873495363759266296477844157237423239163559391553961176475377151369399646747881452252547741718734949967752564774161341784833521492494243662658471121369649641815562327698395293573991648351369767162642763475561544795982183714447737149239846151871434656618825566387329765118727515699213962477996399781652131918996434125559698427945714572488376342126989157872118279163127742349
|
@ -1,6 +0,0 @@
|
|||||||
#lang reader "day1.rkt" first
|
|
||||||
|
|
||||||
1122
|
|
||||||
1111
|
|
||||||
1234
|
|
||||||
91212129
|
|
@ -1,7 +0,0 @@
|
|||||||
#lang reader "day1.rkt" second
|
|
||||||
|
|
||||||
1212
|
|
||||||
1221
|
|
||||||
123425
|
|
||||||
123123
|
|
||||||
12131415
|
|
@ -0,0 +1,5 @@
|
|||||||
|
#lang reader "main.rkt" ★
|
||||||
|
1122
|
||||||
|
1111
|
||||||
|
1234
|
||||||
|
91212129
|
@ -0,0 +1,7 @@
|
|||||||
|
#lang reader "main.rkt" ★★
|
||||||
|
|
||||||
|
1212
|
||||||
|
1221
|
||||||
|
123425
|
||||||
|
123123
|
||||||
|
12131415
|
@ -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)))
|
@ -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
|
@ -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
|
@ -0,0 +1,4 @@
|
|||||||
|
#lang reader "main.rkt" ★
|
||||||
|
5 1 9 5
|
||||||
|
7 5 3
|
||||||
|
2 4 6 8
|
@ -0,0 +1,4 @@
|
|||||||
|
#lang reader "main.rkt" ★★
|
||||||
|
5 9 2 8
|
||||||
|
9 4 7 3
|
||||||
|
3 8 6 5
|
Reference in New Issue