summary refs log tree commit diff
diff options
context:
space:
mode:
authorCrazazy2024-12-01 11:20:14 +0100
committerErik Oosting2024-12-01 12:01:06 +0100
commit9f4a26f9188f74aa6869583ab991b4b8eccbb0b7 (patch)
treef5ab9f0bb6840bc9f91ca5a0bc4bb937481e02b9
initial commit
why does this take so long ;_;
-rw-r--r--.gitignore1
-rw-r--r--aoc-2024.ipkg7
-rw-r--r--data/day1.txt1001
-rw-r--r--src/Day1.idr30
4 files changed, 1039 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..84c048a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/build/
diff --git a/aoc-2024.ipkg b/aoc-2024.ipkg
new file mode 100644
index 0000000..c38e564
--- /dev/null
+++ b/aoc-2024.ipkg
@@ -0,0 +1,7 @@
+package aoc
+modules =
+    Day1
+depends = contrib
+sourcedir = "src"
+main = Day1
+executable = day1
diff --git a/data/day1.txt b/data/day1.txt
new file mode 100644
index 0000000..bca7012
--- /dev/null
+++ b/data/day1.txt
@@ -0,0 +1,1001 @@
+63721   98916
+83871   23584
+55026   62690
+21948   69139
+11201   33499
+96077   62705
+41231   87261
+71203   13285
+53280   86974
+31172   11658
+56516   98916
+59380   19138
+96772   61094
+63969   69126
+20073   82512
+20834   38571
+92030   96010
+84089   39901
+18339   22036
+28056   25937
+75715   99430
+70846   98374
+56817   62289
+97037   22364
+32411   51681
+41809   98156
+76944   37563
+58189   69139
+21939   82512
+45097   86974
+62705   26019
+95791   61094
+31801   84428
+69238   88614
+39850   13908
+26002   39901
+64599   33304
+44590   98374
+78335   51888
+82512   52047
+57887   78631
+27860   51468
+72024   12311
+47520   51468
+97347   59780
+13728   65706
+52302   74556
+33471   98916
+14163   40376
+20346   83807
+80912   17961
+95998   65684
+32219   24194
+46236   13285
+98428   88835
+40577   61608
+91716   98121
+60156   70703
+54527   51961
+42782   12309
+42240   83795
+15918   50087
+42622   14360
+22114   99603
+87281   54967
+91581   99603
+52780   23792
+46822   82512
+30877   29405
+33424   11774
+32272   82512
+78679   62052
+36612   29914
+42681   61094
+48481   52039
+69769   62690
+64189   40376
+54255   66788
+54850   66572
+12528   22130
+86174   40376
+65976   80500
+63915   28775
+66788   83807
+83422   66572
+90402   99603
+85348   80418
+14682   98916
+45822   28775
+13157   20346
+38402   31258
+80935   10753
+65070   20317
+32676   34871
+31427   15594
+42781   47864
+55644   44957
+30989   42965
+38756   62052
+39293   97881
+30968   62690
+56882   29405
+65462   68541
+76422   50715
+34547   24194
+72282   62690
+92342   42296
+25897   20849
+14452   82122
+75858   15046
+75577   85634
+20594   77936
+39912   68541
+69139   31502
+64342   61039
+71898   31258
+53098   20346
+39892   37035
+10887   98374
+97900   94957
+67382   97046
+10705   40376
+68234   89731
+51652   54595
+51440   62705
+97584   97240
+21827   63629
+96359   84707
+15434   61734
+93030   97129
+56574   67650
+24020   67035
+23745   68753
+40655   66572
+97113   16063
+81714   15465
+27278   54255
+36489   66572
+30802   98374
+26081   72575
+61525   18852
+82667   66788
+73634   90961
+64265   61589
+21183   62690
+77550   68541
+29208   12408
+54092   85880
+40518   54255
+89148   50707
+50039   64048
+38834   73718
+62607   75650
+15015   78049
+97975   29405
+92080   42574
+83720   22415
+93384   69139
+40696   44729
+97526   23792
+61734   92736
+38878   98762
+20162   77446
+77727   69139
+27458   18662
+36125   20197
+75944   18725
+86346   22364
+44849   75485
+65394   60670
+39257   34871
+17370   35661
+61046   66572
+73445   78735
+23792   95066
+33670   28775
+31800   69139
+37622   60352
+34456   98916
+82819   39901
+36275   77446
+71616   33673
+14730   28900
+62052   60624
+55307   34871
+75279   74526
+89572   31258
+66278   27816
+84982   57963
+99221   19953
+86616   56531
+31692   98916
+51468   24249
+48579   38018
+52462   97340
+80487   28775
+99371   35813
+70905   66987
+39381   33563
+62589   23792
+24144   83850
+16708   29405
+43869   28900
+39310   53542
+85314   15046
+95478   28900
+61190   98374
+21175   82122
+13285   72243
+99081   70483
+10815   39901
+93293   86144
+95585   98933
+65731   50087
+99562   23792
+93416   66572
+49380   22364
+95099   29405
+94262   62052
+50620   98916
+16427   34871
+18103   13285
+17044   86336
+35640   61734
+27106   34871
+99272   28807
+68345   44179
+47215   14224
+99510   34186
+59344   66788
+56087   23535
+54047   80026
+18016   63772
+72531   71440
+59402   40376
+92026   34871
+56899   79559
+45736   36788
+43217   91863
+77064   98157
+56018   20317
+76327   28900
+72821   19407
+63500   62937
+68547   66572
+42193   37130
+81823   22364
+72027   82450
+59894   57408
+22894   26775
+49624   34871
+85677   13285
+59165   28469
+15814   98374
+18197   93778
+48375   14885
+94778   98916
+86385   97997
+41779   73577
+52971   34871
+91842   61256
+22568   61256
+14237   54358
+76119   55268
+54946   28775
+71933   65810
+86928   24194
+10238   98916
+80990   69427
+28001   39901
+47286   32918
+70609   66079
+15760   36747
+36567   94015
+11786   34931
+18890   78631
+46903   39901
+50399   74710
+89746   66572
+31258   50430
+49217   99603
+71388   98374
+65381   63073
+26294   20317
+97188   98374
+36571   22130
+68437   35813
+40142   31258
+51693   29405
+29472   67550
+85983   99480
+83807   38797
+36204   40376
+22611   40376
+66861   24683
+86715   62690
+24390   12106
+78554   74773
+16233   91468
+46647   17362
+18129   98916
+74379   24194
+39901   94180
+28130   89936
+15255   53500
+90359   98374
+36114   24194
+69761   78631
+40961   96415
+32323   35661
+72742   53446
+18224   51468
+79717   66788
+63337   62052
+83257   77446
+70340   20417
+37092   23073
+11465   91804
+93712   51468
+70424   20346
+79670   47774
+53326   99603
+61413   35813
+28509   77446
+10392   51646
+20411   79767
+10834   34900
+46987   77824
+84749   14347
+64003   60388
+37510   23792
+67074   15046
+86583   22130
+74774   17706
+27254   32069
+24780   62690
+74592   66572
+19956   50397
+87787   78631
+27551   86335
+27313   62690
+11764   13285
+16566   68541
+52387   43204
+32314   30981
+50548   23792
+66572   98374
+23813   14490
+10031   73014
+98916   99603
+85669   51468
+41290   31893
+79434   77446
+41146   75460
+21093   31258
+22150   39901
+77726   76376
+86750   35661
+52067   34432
+22075   52433
+80197   29405
+43183   40376
+48981   51468
+49114   65262
+17821   83795
+66079   72103
+61094   54261
+22863   86785
+79221   35813
+37160   86690
+43323   60348
+27816   98916
+23797   13285
+52087   83795
+69710   62690
+37097   62690
+58946   35813
+25528   78631
+95945   39426
+10344   83292
+25204   22035
+20851   44476
+49675   18087
+60917   98916
+38511   66788
+50625   13566
+92213   42204
+14434   35517
+16747   79017
+98256   82122
+13429   23798
+10505   22364
+56299   51468
+11971   98374
+82974   95791
+71227   93187
+17329   20899
+86233   48880
+64887   13285
+67572   72363
+42339   16540
+37301   88128
+99216   13285
+21173   13285
+39433   80508
+56739   98916
+19158   66788
+99366   97494
+78631   76828
+64445   49058
+84071   27319
+76591   94653
+72285   39901
+86827   68541
+97195   50087
+94820   39901
+51240   66572
+19704   13285
+82252   54471
+90511   81325
+39890   82624
+28900   23792
+89837   29405
+27432   20051
+12464   68541
+51911   49067
+70069   51468
+38185   96194
+61979   61734
+44809   34871
+50816   74433
+88128   62052
+68302   11847
+65790   14562
+18639   61545
+43973   50325
+32245   71996
+32770   78631
+80007   24194
+81848   17710
+48925   27816
+36951   78631
+44300   83864
+39815   88563
+33287   87639
+81599   40376
+83780   34010
+76105   37309
+66186   57599
+30330   15408
+85410   76902
+32775   62690
+96368   35661
+36267   31258
+63258   50558
+29106   28298
+82546   62690
+11099   61734
+78293   25816
+96305   15046
+29590   35661
+62248   69139
+28271   78631
+28395   61256
+64484   97925
+25386   35813
+27975   55981
+62690   55244
+36937   36761
+14288   78631
+58395   15040
+71622   20346
+29580   10650
+19543   29405
+91211   62052
+67129   23792
+71075   89904
+35814   78631
+24320   66399
+68616   62052
+81607   13285
+16440   69113
+20317   34871
+34990   86694
+46814   17420
+48773   18642
+16983   12462
+76286   22364
+43760   50461
+89012   98374
+76734   83795
+82889   81347
+94844   83039
+87086   42228
+79066   34871
+60930   62690
+14671   98362
+15046   98916
+23105   64417
+15963   26384
+17578   66788
+19749   35813
+73717   77781
+55768   78631
+81328   86974
+98374   30582
+74371   98916
+62198   66788
+18216   29620
+83718   35167
+97216   66806
+21853   23792
+95659   45644
+54690   19553
+99854   54434
+60953   82122
+29405   20346
+77446   61734
+74477   61881
+59384   34871
+22201   82512
+41680   22364
+70388   33526
+79474   35813
+95676   61734
+81066   86974
+50184   69139
+92334   73193
+63301   74886
+88694   25546
+29122   40376
+35513   61734
+34871   51468
+27159   78631
+92093   22364
+97523   46887
+75320   75413
+50553   66788
+69335   39901
+31428   36441
+63138   38796
+65691   66589
+18442   61734
+95290   40828
+30463   84566
+13760   20346
+63642   38111
+38068   99603
+88985   51468
+86911   13890
+81763   98405
+60314   34871
+79229   98374
+54222   37457
+41191   35661
+94686   14344
+48723   40376
+53331   51468
+82320   32023
+13879   64243
+77615   78631
+21373   81177
+99603   28900
+74982   17203
+61957   82512
+49736   29405
+71158   16258
+46734   68257
+91305   13285
+15307   77446
+88888   75540
+96953   82122
+73049   34871
+25806   66509
+28775   22364
+88849   84256
+73085   31258
+82002   45833
+92219   61094
+94438   62690
+74931   10907
+19013   56348
+61330   51468
+45424   32416
+85351   51468
+43176   78631
+92511   31258
+74316   50766
+52865   80456
+90670   19338
+60903   50287
+13027   23792
+70012   37373
+28645   95137
+29890   52066
+90210   22364
+83928   91550
+84224   95653
+52748   22364
+25385   89306
+29258   61754
+22425   81852
+83606   23792
+86286   33987
+78304   78631
+46454   77446
+68130   78631
+84341   34871
+32536   98374
+46176   51468
+18381   52328
+74842   12157
+99320   34871
+36587   51215
+65504   11768
+62256   20755
+62433   28900
+18797   64268
+46028   56766
+34433   39901
+55237   69139
+67094   83807
+59294   29927
+18052   66788
+37438   65122
+89900   22130
+86138   66808
+17409   61734
+41410   77446
+36675   98987
+93185   40326
+68737   97123
+12420   28900
+28431   13285
+79903   61734
+85029   49719
+87114   38161
+10277   97814
+91030   77446
+60032   40376
+26941   71642
+40711   62052
+66007   98916
+36232   22130
+77300   66788
+82122   74191
+93403   86974
+10869   26173
+32606   39901
+36002   90403
+37936   61256
+36223   14536
+90084   98370
+13588   29405
+92588   23792
+76528   68541
+91855   98758
+65053   77446
+31950   15046
+20160   83646
+98329   13285
+59162   20346
+78821   86974
+73311   15046
+83143   14519
+61256   47938
+68103   43062
+62427   72651
+50329   77446
+93857   91804
+50509   31563
+12726   98916
+91094   51468
+62068   97829
+88270   51468
+98814   42679
+96608   66788
+21920   22364
+85592   59267
+56819   39901
+60434   69139
+68767   20590
+23123   31258
+64662   78921
+26559   45234
+72799   82122
+83414   62705
+35661   22364
+22499   53665
+90831   52136
+31956   56969
+53393   20346
+30160   91715
+40872   68541
+96530   20724
+73972   46762
+23784   77789
+51604   14275
+24516   33815
+51694   36170
+54999   40276
+71340   77446
+33559   50566
+97770   86974
+57181   98916
+11456   95791
+43991   35813
+39647   99603
+31291   48238
+24411   66572
+50087   15046
+36907   81744
+84965   43494
+80699   26639
+70287   28114
+30928   62052
+29829   27652
+45493   29405
+96002   68340
+86510   83248
+58569   14674
+95602   83044
+60548   62973
+87844   29873
+64650   24194
+91993   61256
+25193   12039
+93597   69445
+44397   75998
+16429   68541
+36998   98916
+46382   35813
+73943   56489
+18980   38254
+52184   29113
+27861   53315
+78208   52158
+39137   95325
+71411   96871
+11297   50795
+24795   10762
+45672   85223
+20458   45112
+68342   86974
+48555   68541
+14057   89657
+45348   83795
+69091   85340
+32017   91553
+47365   29405
+69846   42783
+42794   66079
+55767   35661
+79443   18679
+97731   28900
+78728   46714
+51662   61502
+86974   40376
+66784   69988
+21713   26696
+67541   89573
+63234   48739
+75844   11283
+72169   63197
+68116   27816
+39756   58055
+49060   52912
+86033   20346
+77374   32945
+54054   15032
+10242   66300
+39964   39901
+16823   98374
+35949   64043
+45790   71364
+85734   62690
+39953   67342
+19397   36827
+30706   47034
+62392   27816
+36736   76359
+41284   27040
+91564   18615
+27419   49560
+35658   83795
+88035   27816
+58920   61094
+24194   53105
+41569   61734
+88977   67702
+59178   31337
+91804   24194
+68538   51029
+45699   22539
+64646   39901
+49570   66788
+42702   66572
+10875   16521
+54579   34871
+30993   82512
+46568   99603
+36007   61734
+41554   40376
+28737   86974
+47642   54509
+95772   28900
+91043   31258
+84273   98374
+75931   71232
+40158   35777
+40376   95791
+52356   68460
+63119   77046
+85547   24461
+48564   15619
+61344   14922
+20517   68541
+69816   52014
+33687   82149
+39886   57790
+85582   77421
+16170   48400
+32839   24194
+59842   14809
+40767   22364
+14572   86974
+94812   29405
+29781   20317
+25093   51468
+22523   15286
+69772   49833
+24511   89853
+95422   63827
+18619   62557
+71465   56921
+80392   23792
+75031   22130
+88990   61046
+62453   63513
+10363   61094
+33426   40376
+34338   98916
+19106   22364
+16632   21897
+93602   80485
+70657   83807
+87290   93753
+48905   69139
+19137   58766
+74790   78631
+17479   66515
+59784   40376
+35921   69139
+63281   99603
+49035   54255
+42278   49216
+88656   61094
+18166   68541
+15171   27816
+25018   66572
+58709   66788
+26678   52650
+51627   82122
+71638   28900
+52703   93929
+54658   29405
+63402   77446
+62250   36480
+20727   96945
+66177   13629
+11052   95791
+16012   70360
+14890   58523
+68314   61256
+27581   61256
+68541   66572
+96645   99603
+79922   66079
+45897   37920
+46727   62690
+92327   50087
+97244   19990
+97604   92430
+10996   21728
+54944   66788
+51431   75661
+44593   70853
+57290   22130
+44100   51468
+88066   95791
+64545   62690
+15185   98374
+81005   83795
+24581   59570
+18803   39901
+31017   35731
+52752   16550
+55973   83795
+41888   77446
+54026   23792
+45685   23792
+39267   15380
+74192   99479
+48209   75402
+43467   78806
+83468   68541
+22364   44940
+22179   52910
+61634   23792
+45998   72739
+41096   35813
+17074   39901
+34245   99603
+38149   66572
+87211   34871
+39320   39901
+35813   69139
+72525   29405
+17308   20346
+26336   35661
+16331   31258
+18176   61256
+28796   86974
+91989   40376
+76266   72180
+79522   97407
+46148   98374
+91891   90085
+29539   88770
+97919   99153
+14625   62052
+33094   31225
+75423   62690
+64206   66079
+91522   17031
+36889   86974
+98905   35912
+67253   22364
+86480   62690
+47746   68541
+54727   40171
+39202   68929
+83795   17632
+19065   77446
+73523   79097
+63938   59651
+64774   22364
+86179   83795
+19996   75565
+49609   66760
+22417   31817
+90246   15046
+25158   27060
+27237   61256
+20154   11191
+80548   61256
+83429   39901
+82411   39901
+36646   99815
+89469   34241
+69714   73572
+17832   65920
+98578   62023
+26264   78372
+23951   10088
+91003   39552
+14615   99603
+78726   83194
+31384   44477
+22130   45848
+83121   81284
+87043   42282
+25669   40376
+61080   98374
+29216   68226
+19808   31190
+12025   77446
+49018   46070
+71086   35813
+26776   48041
+94075   35661
+51192   34871
+18698   61094
+77232   66079
+18652   44005
+47380   86974
+91250   69139
+54224   23792
+22462   23279
+96949   25734
+18113   60075
+76499   35842
+13733   89585
+47074   51199
+30881   61256
+41926   82925
+51892   88913
+56351   49034
+39241   85194
+43972   20620
+
diff --git a/src/Day1.idr b/src/Day1.idr
new file mode 100644
index 0000000..12e9217
--- /dev/null
+++ b/src/Day1.idr
@@ -0,0 +1,30 @@
+module Day1
+
+import System
+import System.File
+import Data.String
+import Text.Parser
+
+parsePair : String -> Maybe (Int, Int)
+parsePair pair = do
+  num1 <- parseInteger (fst p1)
+  num2 <- parseInteger (snd p2)
+  pure (num1, num2) where
+  p1 = span (/= ' ') pair
+  p2 = span (== ' ') (snd p1)
+
+parseStr : String -> List (Int, Int)
+parseStr str = do
+  nums <- lines str
+  maybe [] pure (parsePair nums)
+  
+transposePairs : List (a, b) -> (List a, List b)
+transposePairs [] = ([], [])
+transposePairs (x :: xs) = ((fst x) :: (fst rest), (snd x) :: (snd rest)) where
+  rest = transposePairs xs
+
+main : IO ()
+main = do
+  estr <- readFile "data/day1.txt"
+  str <- either (die . show) pure estr
+  putStrLn $ show $ transposePairs $ parseStr str