summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Lasseter <user@4574.co.uk>2024-12-02 13:50:18 +0000
committerNat Lasseter <user@4574.co.uk>2024-12-02 13:50:18 +0000
commitb975342263995c954354183d69a9d898bd38dc89 (patch)
tree2938ceb0cb9c47498550b0cc3a870d13eb0c8b67
[Day 01] Done
-rw-r--r--.gitignore4
-rw-r--r--day01/day01.hs21
-rw-r--r--day01/day01.input1000
3 files changed, 1025 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5315ce1
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+day*/*
+!day*/*.hs
+!day*/*.input
+*.sw*
diff --git a/day01/day01.hs b/day01/day01.hs
new file mode 100644
index 0000000..184f56b
--- /dev/null
+++ b/day01/day01.hs
@@ -0,0 +1,21 @@
+import Data.List
+import Data.List.Split
+
+part1 fst sec =
+ let
+ sfst = sort fst
+ ssec = sort sec
+ z = map (abs) $ zipWith (-) sfst ssec in
+ sum z
+
+part2 fst sec =
+ sum $ map (\x -> x * (length $ filter (== x) sec)) fst
+
+main = do
+ file <- readFile "day01.input"
+ let lns = lines file
+ let lsts = transpose $ map (splitOn " ") lns
+ let fst = map (read::String->Int) $ head lsts
+ let sec = map (read::String->Int) $ head $ reverse lsts
+ putStrLn ("Part 1: " ++ (show $ part1 fst sec))
+ putStrLn ("Part 2: " ++ (show $ part2 fst sec))
diff --git a/day01/day01.input b/day01/day01.input
new file mode 100644
index 0000000..e68b7bb
--- /dev/null
+++ b/day01/day01.input
@@ -0,0 +1,1000 @@
+60236 87497
+27507 18604
+69810 73952
+60448 56269
+92139 61722
+26802 60858
+77131 85480
+11665 30619
+15622 29287
+50472 55227
+31601 15873
+49999 20227
+87160 41386
+58198 25660
+73480 83349
+34374 31670
+56594 81327
+86225 89142
+41024 80952
+53973 84059
+21336 23710
+68229 32979
+31907 49347
+96121 92108
+91843 55227
+64469 46797
+24945 51234
+38171 20077
+85337 65084
+53614 29287
+33205 92108
+92278 65084
+12348 54841
+74217 64534
+31880 67672
+40671 61530
+97622 51354
+83858 54841
+54900 29287
+75694 32657
+12808 92108
+22110 45441
+24842 80522
+76019 85395
+29801 55227
+62119 24086
+84085 42315
+97633 50312
+55735 84085
+37423 24578
+21883 38297
+24725 85063
+94882 96754
+78917 23949
+38963 37984
+58484 54841
+25045 60224
+44549 68472
+96565 28888
+96544 13183
+56476 62216
+93786 36255
+47385 31017
+53003 74502
+34763 90916
+30965 15026
+33970 18604
+59311 87287
+46656 23655
+90690 94389
+90916 85428
+39888 99400
+80325 15572
+66759 90916
+69011 61530
+42661 76190
+62994 36115
+83076 85495
+22038 90916
+28058 16827
+43772 87497
+97469 84059
+73587 46618
+17373 28474
+67819 22858
+83212 71090
+31111 21853
+50655 80499
+46790 54841
+65893 85337
+32657 30300
+39263 63606
+34654 37756
+70982 97980
+47054 90916
+36308 85428
+78055 25699
+82921 57074
+22806 38778
+52324 18604
+69119 87497
+93821 85337
+72610 45392
+81035 32462
+83645 61530
+40083 12785
+65512 39639
+94178 32657
+94616 23243
+48110 85170
+48871 31323
+19056 85337
+41244 32657
+10055 57273
+11393 29287
+41282 89929
+44215 69138
+65273 49214
+51527 88002
+37756 20404
+62112 28474
+20891 84085
+77160 89946
+66205 46881
+48418 77312
+75464 55227
+61530 59969
+21267 29270
+37370 54841
+88644 90916
+78623 63606
+21706 46881
+44144 28524
+92794 62981
+73104 55227
+41050 17824
+18975 74502
+24323 55737
+65877 13086
+26231 46430
+50875 22462
+28235 13325
+19413 52280
+12895 20227
+99917 14861
+12606 85116
+17157 55498
+65577 49347
+83633 75113
+16385 85022
+13523 14114
+56269 63606
+21797 31017
+15276 42139
+60621 92519
+47097 50088
+93922 70323
+47866 84085
+12491 65028
+97496 99400
+50622 92695
+80936 57661
+90350 61530
+24297 31017
+17654 79327
+25402 46881
+22077 18604
+40903 54120
+50315 84991
+84107 90341
+82297 69059
+31420 92108
+32948 13185
+38573 48477
+41469 92536
+47687 67672
+75858 43056
+87492 55227
+43146 63726
+50630 30114
+69070 31922
+99400 80499
+95819 84085
+28688 85428
+34161 47281
+25281 43111
+72346 85337
+43428 65084
+35269 52541
+69977 15275
+21657 15308
+93149 28977
+26372 22264
+53919 26147
+83653 17007
+52437 55338
+58577 81095
+10669 78580
+48716 61530
+44555 54841
+26276 85428
+44928 27597
+78761 83134
+29197 63606
+10381 16778
+19398 74893
+88620 52809
+30433 65084
+80557 31629
+31479 12679
+50801 83534
+65484 55227
+12778 94213
+22907 98741
+27492 21018
+24335 55895
+92027 63071
+42748 38490
+39736 28474
+29251 15930
+18312 38297
+92108 36420
+56841 23667
+24134 80499
+30573 37975
+35062 82320
+10140 77160
+20132 75245
+34245 41016
+39368 39229
+83603 98755
+98047 98888
+96938 15597
+51784 58196
+70081 78652
+46881 49347
+24066 76805
+23023 84959
+89425 67672
+93763 73425
+86478 87497
+12302 87140
+73930 39280
+25718 63606
+90416 18604
+35786 14027
+93942 65398
+65754 86637
+11744 49347
+49585 93684
+15897 67695
+10695 39893
+96173 28474
+76947 29182
+48784 84085
+91121 20227
+49311 23670
+85372 15774
+16681 89841
+45260 90848
+35560 95034
+83401 21784
+12219 96734
+71067 55227
+99026 80166
+69983 15346
+83934 80058
+64979 12968
+41092 63606
+12308 40087
+75169 96117
+15784 77160
+38824 41537
+40870 85116
+19711 99400
+70507 14564
+94676 54768
+14777 80499
+40418 75245
+64438 83035
+57843 35948
+59713 80499
+34140 70427
+11775 32188
+34406 40942
+56896 74472
+86220 28474
+70476 71102
+96477 98192
+18922 51619
+59519 71811
+10789 47031
+86572 92108
+61550 75245
+84059 23351
+96041 23599
+10215 18375
+45040 17072
+58869 16995
+88390 93777
+91416 55497
+17847 55636
+76901 85287
+18097 38297
+96115 87497
+18055 61095
+45533 87184
+63882 29287
+73200 53074
+22109 89509
+83241 80499
+93489 64603
+56777 31017
+99138 62596
+58373 30342
+99202 25402
+58133 60035
+80500 90916
+73469 17731
+35801 99400
+91384 52122
+27573 24457
+28721 28503
+88538 26807
+92971 14100
+48598 63606
+61286 29287
+91745 56269
+34448 25850
+79106 49347
+34898 19376
+40111 67477
+93372 30265
+63851 32657
+59546 48474
+42335 84059
+36277 54841
+87127 99224
+81168 23408
+92976 92195
+98032 25026
+48696 29287
+20385 32499
+74076 65084
+92372 29299
+17059 74502
+42532 30262
+38449 11418
+43881 32657
+54403 63392
+94721 84085
+95152 51611
+51782 62179
+53025 55227
+36643 49347
+87706 65084
+12976 55227
+44534 26147
+30917 87497
+74502 61774
+67952 95476
+11806 29287
+90030 79066
+68902 98976
+68040 90916
+98301 41380
+36051 49347
+16026 69194
+67357 46509
+67306 73846
+82448 20227
+23641 85428
+84634 31017
+69185 43828
+46097 72892
+17794 26147
+43848 49347
+96312 56999
+56019 92546
+56919 86411
+40237 51598
+55120 87497
+92755 87497
+34906 32657
+54889 75245
+41064 62527
+65738 99349
+64355 75245
+52805 80499
+85428 46881
+37626 83414
+53792 34959
+54369 72387
+38094 68402
+99008 33894
+24058 29287
+18736 51209
+25865 80139
+63486 65084
+62108 92108
+65689 14359
+42333 10289
+69333 38259
+18491 62168
+47310 78249
+54570 84023
+20551 78951
+59475 12064
+50311 56215
+65474 70037
+85663 67672
+69259 33147
+83117 61530
+36840 85337
+34169 47016
+88946 97794
+18112 58674
+46551 38349
+82216 72623
+28051 67042
+92921 53931
+49329 21408
+72000 82465
+16291 64726
+89421 28474
+79147 20446
+10763 18604
+44616 79180
+42112 59021
+16110 11993
+95856 75245
+68250 47047
+73900 18604
+83070 70285
+45039 59298
+34384 91759
+69096 40774
+17871 54746
+12711 13323
+61219 85337
+62596 53507
+65641 61530
+44822 29849
+27694 41410
+18316 40475
+88264 27106
+24559 73846
+51165 95419
+41966 80890
+31980 27305
+18954 73225
+48469 99400
+21431 77160
+61521 58997
+91768 50704
+64691 54596
+26116 67672
+38956 90916
+26542 38297
+55188 23379
+59315 70559
+29191 25198
+66379 38297
+25324 66593
+40836 92108
+61397 12807
+33898 61530
+45415 28400
+33802 90916
+62390 21461
+59153 29287
+36034 30152
+98520 22569
+22195 88748
+33327 60661
+45322 26147
+96822 16363
+16125 34893
+87248 22080
+85116 74502
+46038 18604
+37571 85337
+58238 69159
+41500 16532
+83727 38297
+68575 54551
+31681 49347
+38631 22657
+23561 58198
+76931 45582
+28565 80499
+75538 41731
+53316 85116
+63565 16082
+43704 94497
+70404 44010
+30526 10924
+68736 25749
+66570 15277
+78906 63311
+97695 18604
+83519 65084
+41333 17910
+65117 58198
+83816 13162
+82827 99400
+38854 61353
+10453 97813
+39642 62478
+12432 75245
+73646 64603
+69031 52168
+87888 61523
+66253 60542
+50475 48019
+48201 29287
+76179 83869
+69129 16884
+25515 12228
+19375 84085
+66375 55218
+27327 63518
+58580 23667
+21807 37166
+40268 24090
+97745 23667
+32093 80017
+32735 15898
+38297 72737
+66743 99400
+83349 91011
+58316 49347
+72291 61430
+86837 75245
+73810 18232
+84307 18570
+61747 85337
+31550 89967
+47416 65879
+25093 48062
+65307 65580
+84094 89485
+52515 23667
+49044 38003
+78523 89584
+86184 32463
+35308 81918
+27716 92108
+97833 99584
+55235 33021
+92138 55227
+18414 92108
+66833 28474
+29162 83349
+46906 95696
+91988 73664
+56574 18604
+84481 40052
+92467 20808
+68595 18734
+54857 63112
+46447 89520
+38937 31017
+91755 49347
+69591 73958
+71215 56038
+37212 54841
+68160 93928
+50127 58436
+58834 79630
+64554 56269
+53994 58198
+71503 61530
+41132 89321
+73137 39227
+90473 36281
+34280 10905
+32327 73846
+56962 85428
+93849 17923
+91613 43897
+41600 82433
+68548 40140
+57540 69227
+27024 72558
+84038 29287
+68797 90123
+34585 80998
+17224 44725
+67565 65979
+53439 66006
+10746 34397
+60407 96273
+41402 44313
+74625 94199
+48717 97274
+43053 61530
+60079 92108
+51815 18591
+78297 94936
+75363 62686
+34845 85337
+52300 45188
+18321 54841
+30997 13211
+12201 27495
+57013 81991
+32067 85116
+98986 63998
+56366 80499
+88571 19705
+54841 23231
+21485 36499
+79031 67538
+92188 61530
+39376 16112
+49347 23042
+98452 63606
+52132 12521
+22842 28546
+35826 18604
+62218 99676
+14172 32657
+18364 55674
+49002 62596
+51392 45821
+66873 17929
+67156 74502
+28175 32657
+90671 77571
+84511 54841
+18862 18604
+76865 55383
+17699 69478
+79215 56269
+85442 92108
+10959 45021
+48776 77160
+14892 92936
+41140 55337
+84764 80499
+40023 75245
+67389 46881
+45778 36995
+21318 55227
+59744 75245
+67409 38297
+18164 29287
+61584 96614
+41358 38413
+61352 60463
+70015 35917
+39628 81795
+21915 18604
+16171 90414
+15423 55227
+36716 80499
+55056 90916
+63466 15943
+98203 73846
+99741 99459
+85505 38297
+25032 86060
+66980 54841
+98311 31229
+25350 69484
+83835 14362
+46839 78034
+18604 13604
+73846 50472
+18269 56269
+91727 56269
+68873 59307
+15175 87497
+77802 28474
+28913 82745
+22215 60110
+70059 61531
+36612 33386
+67672 88985
+78181 61530
+39317 18558
+77810 35422
+82429 21444
+76561 23667
+58649 38653
+25363 12807
+61473 87684
+36559 71640
+88918 85428
+74396 16237
+33853 55227
+54850 67672
+39779 28474
+64336 74608
+80980 29287
+45483 42757
+73198 85576
+63606 90916
+52630 16429
+35416 12807
+95544 99400
+44801 64603
+80281 80499
+52182 38598
+23258 51480
+42093 51758
+74897 94719
+98978 70168
+42208 87497
+32037 97893
+65966 61530
+77038 29502
+56448 77741
+83791 74727
+25720 31017
+24543 85306
+83743 51386
+83607 36001
+27371 85337
+96010 42013
+29241 74502
+96301 54841
+60646 92108
+56101 38297
+82779 81249
+16670 32639
+24164 52565
+28474 73988
+41717 29287
+55403 32986
+75739 96626
+55398 85116
+55227 55331
+46733 74502
+50659 81687
+25155 98435
+90938 67672
+90142 98291
+29740 71006
+95852 54841
+26912 47695
+41728 65084
+76264 55227
+81182 67672
+88932 55227
+15524 31186
+75333 51809
+98264 37756
+81912 95741
+62285 60469
+47664 93362
+60019 33153
+54501 98948
+46192 20511
+92628 85116
+58318 82669
+44457 87772
+32136 77838
+74012 58198
+20227 35179
+53716 67847
+53411 73846
+68876 49541
+70125 49347
+75562 11521
+72306 47501
+88484 92108
+70619 38297
+86166 36298
+18487 80499
+92524 87204
+52742 67742
+58671 24114
+90475 27557
+19915 80499
+76602 66482
+28497 44495
+41756 84884
+73642 48266
+11516 75245
+97800 63544
+89184 31017
+41929 71798
+61689 46881
+29287 41446
+39444 47202
+35248 23667
+94851 74119
+86784 88863
+74864 73704
+23002 61530
+75245 36530
+83133 55227
+95285 57184
+85832 28474
+95588 74502
+83915 11024
+71644 96251
+71313 18604
+73235 87497
+33469 49347
+21867 38297
+95267 57786
+89935 28171
+21251 12807
+25478 40283
+99474 11515
+80499 66656
+14837 84184
+64729 40572
+40809 32336
+33236 85592
+20441 71171
+64603 66164
+55291 76339
+28881 12197
+58350 51927
+96845 74322
+97597 82513
+62008 54841
+45790 16819
+77813 80499
+81381 17092
+65519 80499
+26031 96119
+16212 90916
+95140 18604
+10312 92108
+61438 19227
+95084 10260
+99043 72732
+89491 54841
+90269 76128
+48016 44722
+20288 67010
+41063 71020
+74315 22618
+99142 76172
+26666 18604
+45041 76748
+47713 89106
+80657 38823
+81404 85337
+47976 85029
+44477 92418
+55367 96148
+63834 14134
+23382 48292
+77597 33494
+55880 93836
+18367 49347
+82262 76051
+95008 56543
+22783 77168
+12807 87497
+28138 55227
+70523 80353
+74070 90870
+76864 65482
+69003 13575
+24843 29287
+69768 20648
+87497 67672
+18271 94218
+45836 28474
+97769 28474
+80076 65084
+72050 46881
+79328 59489
+37514 80499
+42555 32578
+20199 70816
+49460 73487
+90204 93607
+56298 25196
+99974 70377
+56276 28721
+89189 77206
+60768 80376
+21319 63606
+31997 50398
+32416 90916
+54694 22346
+35088 18897
+51752 26147
+55308 95249
+34420 18604
+23667 33821
+82510 99101
+60857 80499
+36607 87497
+49184 18604
+24850 69833
+74238 29287
+57022 18604
+19800 65084
+75401 99400
+69619 16727
+76302 81630
+26599 78516
+91798 49272
+44256 29287
+26147 51140
+49429 29968
+73408 67672
+22299 47662
+95945 46881
+64434 12499
+25710 19594
+33442 63606
+93780 22452
+79459 23892
+82288 56995
+72573 49347
+48719 58670
+32164 38484
+86403 10414
+38984 39863
+86164 79095
+92712 22911
+89181 49347
+87082 40962
+90401 93895
+52697 15438
+34642 38297
+64004 58198
+42756 66637
+89884 63606
+72848 84059
+81971 22307
+61080 37101
+52293 92108
+10451 93989
+85724 84085
+40006 98335
+34725 36933
+85585 99400
+31017 57385
+18673 92108
+63900 58933
+10042 23667
+89735 55825
+11855 90031
+23358 92108
+74765 61530
+18606 54841
+29355 37589
+48513 60953
+53374 55970
+71218 28711
+39215 18604
+35955 94504
+60316 77721
+82523 96106
+29011 56269
+82545 77160
+69538 64794
+21067 28474
+31600 29287
+48638 79513
+77490 38714
+27808 31017
+51472 96525
+59950 83349
+94201 58024
+74719 32598
+44779 24776
+79697 57387
+53766 37236
+79207 49094
+21981 85337
+70180 38991
+92776 26555
+62229 29287
+22837 90916
+47999 85425
+65084 67672
+24224 63606
+45488 92101
+93347 80499
+57265 69150
+35677 90916
+12235 90916
+23634 17105
+69570 77160
+10364 99400
+64953 58607
+94336 72861
+35805 46881
+54374 49061
+56695 28474
+67989 96030
+66652 99400
+98664 85337
+94703 85337
+34924 46881
+89844 36377
+43375 90916
+62268 92108