From 9ad233e4d967f7c134a1d6c50965bcdb722432ab Mon Sep 17 00:00:00 2001
From: Thomas Voss <mail@thomasvoss.com>
Date: Sun, 1 Dec 2024 17:21:32 +0100
Subject: Add solutions for 2024 day 1

---
 2024/01/input        | 1000 ++++++++++++++++++++++++++++++++++++++++++++++++++
 2024/01/puzzle-1.awk |   18 +
 2024/01/puzzle-2.awk |   12 +
 3 files changed, 1030 insertions(+)
 create mode 100644 2024/01/input
 create mode 100755 2024/01/puzzle-1.awk
 create mode 100755 2024/01/puzzle-2.awk

diff --git a/2024/01/input b/2024/01/input
new file mode 100644
index 0000000..515f1a2
--- /dev/null
+++ b/2024/01/input
@@ -0,0 +1,1000 @@
+18102   93258
+34171   50404
+48236   60718
+10441   41669
+63428   45329
+42451   56834
+74881   39407
+32801   36101
+52771   79895
+41513   78731
+81076   52363
+87623   35520
+15259   96330
+57319   78241
+42758   41144
+80744   20357
+28199   55267
+22505   35520
+74707   74819
+67725   96130
+13883   35520
+87486   55267
+25070   30977
+10199   74819
+91803   75066
+60122   78266
+17884   61488
+41073   81666
+24778   15223
+46587   87276
+75477   82771
+78585   59630
+23143   20028
+67975   13674
+33304   70802
+19939   50051
+35520   52616
+73263   19938
+89352   99541
+65187   80938
+41347   35520
+64416   57744
+86648   22827
+91435   47131
+96712   38412
+89053   76476
+68596   31155
+22661   30518
+87094   22104
+10403   46003
+41029   68410
+62486   54054
+24752   47138
+59331   80259
+83839   84471
+19771   87508
+68258   73947
+69907   93126
+36611   87565
+69633   35520
+19461   20361
+43869   86799
+88115   13167
+27925   21142
+75724   33150
+14715   66772
+46237   88588
+22390   57154
+90584   66789
+89982   55267
+98196   93258
+83394   28441
+68840   50490
+21728   36730
+83742   60945
+43346   38412
+79097   84471
+13016   35520
+28401   41164
+18245   81634
+99352   39461
+33202   36444
+88303   14489
+95205   90462
+80929   97718
+18847   78535
+36538   10273
+40204   76019
+52395   80344
+62145   55267
+29945   74391
+99218   14416
+92009   42686
+83998   36730
+50338   81796
+43724   90026
+86537   33172
+89079   44444
+32728   41669
+60742   67245
+35894   42369
+66329   16357
+42434   19057
+65046   13593
+41778   42363
+62183   46290
+37564   10310
+46436   94358
+58111   74819
+13914   85272
+67992   46429
+42766   46993
+97620   79909
+12930   36101
+14208   62020
+41890   36730
+81680   21444
+84864   64563
+29905   72690
+35753   52398
+73868   35520
+17253   29006
+72538   88588
+77189   89503
+81736   18206
+33322   31658
+48157   79144
+28398   45304
+51735   83365
+42009   59880
+25466   41416
+52459   99199
+57747   36730
+12226   12617
+41445   33884
+15088   42664
+21076   99403
+24923   36730
+47057   87695
+14281   76662
+58163   75603
+41046   88588
+25315   52616
+88847   31193
+25550   35520
+37785   54965
+42166   81663
+36739   55267
+13289   58788
+95744   62866
+23230   41669
+89299   88513
+94591   57796
+19517   78347
+38689   71550
+55241   41669
+80752   85442
+24799   84471
+13063   55267
+27395   80539
+78086   41669
+49641   13167
+60112   63395
+57026   15781
+34007   29172
+49274   72405
+14926   96924
+54717   58045
+16315   22728
+90753   82631
+99446   13167
+51171   81263
+65577   51430
+59152   40932
+98558   41284
+60772   88588
+89469   93258
+78257   51498
+17794   63128
+17963   99564
+10250   12980
+11455   64655
+89464   78241
+68825   20389
+18793   81458
+78236   41669
+54490   94531
+16188   51392
+17889   41669
+88466   55267
+30083   84471
+83012   57306
+70675   81796
+13694   84854
+58909   38592
+40234   94238
+51671   81883
+91196   49891
+86378   92193
+81435   83848
+52846   38940
+96254   85424
+28810   35155
+57295   68573
+56262   94606
+70230   29354
+22599   10175
+42130   30343
+52701   99403
+62915   12166
+76676   88588
+92756   55926
+85607   84471
+59730   67890
+32152   56550
+83584   12212
+91305   52052
+92411   62866
+30000   24317
+48046   39809
+53235   93258
+58381   30343
+81243   39857
+46414   37480
+14203   19491
+94671   53889
+25932   74714
+15761   95661
+41032   87276
+95383   12977
+63041   37164
+62397   38420
+31632   80344
+73259   63756
+39665   53750
+80475   32801
+71036   88588
+72272   79144
+60444   94808
+62938   98520
+91946   39934
+65936   81849
+46418   56506
+75068   97162
+39001   52616
+41161   30343
+15026   35598
+42469   41669
+56940   80344
+14981   79323
+18795   70311
+51498   79144
+18298   39857
+57977   95908
+99404   90175
+16709   94746
+52847   17022
+19595   32739
+75552   54475
+56206   73676
+21473   79204
+92226   37522
+77631   41409
+32460   39212
+68228   89367
+93156   51665
+43009   54778
+14468   63363
+38918   43492
+63144   83443
+64474   99403
+59151   68155
+74740   84352
+46043   66174
+19176   79144
+80639   36730
+12346   18866
+32789   35520
+30312   13167
+90241   34021
+61418   95707
+52839   52960
+59507   11557
+51774   80344
+72851   31658
+21231   52129
+17825   67968
+48685   80344
+90363   14286
+32135   81656
+89692   93229
+71792   84471
+24754   91630
+15559   17945
+73777   62866
+73826   93258
+61029   10131
+21893   79844
+72680   80344
+54635   80344
+46537   96585
+28015   51978
+80768   99403
+52593   31658
+15701   83366
+97543   45838
+33327   55267
+60326   10669
+71666   68499
+68900   91751
+27686   40337
+39616   62866
+51033   37907
+25015   14676
+41682   19585
+79008   36730
+49472   47063
+98674   62202
+33282   84471
+59585   75619
+86450   58477
+14432   87276
+67623   18866
+84033   69700
+13957   40073
+55400   21005
+13167   36730
+34835   15933
+71718   58623
+95411   97681
+57118   94831
+41944   62866
+88120   62866
+11752   32137
+85462   36211
+85424   46228
+79713   80344
+16019   62866
+17655   38412
+26672   17352
+82553   76385
+23188   71537
+56490   39857
+46951   13167
+85961   13877
+51560   77830
+94957   52616
+27650   74995
+70629   73120
+25129   32171
+62148   48774
+44331   87276
+69734   37018
+21661   51261
+13612   82993
+90689   13167
+92312   86533
+98598   80344
+68752   41669
+30190   35520
+36730   50595
+52267   64296
+59707   65310
+80349   62885
+63683   45682
+74727   82966
+86012   81529
+39964   88805
+16119   69720
+33146   70138
+90376   97651
+22904   98429
+87159   29634
+23078   18154
+23361   32845
+71970   63128
+10411   92866
+31178   88588
+50980   27848
+45078   77661
+91447   42358
+71418   32868
+76636   78241
+30598   93258
+28434   38738
+40660   79275
+62848   99403
+28084   38612
+12699   59071
+59263   81796
+26439   62866
+17391   78241
+93530   45014
+45542   97173
+69388   13423
+80066   28361
+63149   95510
+27861   81796
+62609   28829
+78241   64755
+98783   53082
+21987   31658
+31758   18211
+21749   79144
+70377   52464
+65877   97679
+74993   57174
+53846   78241
+67812   39783
+32323   63362
+18461   91739
+38165   31920
+80422   39857
+43219   31658
+84785   30343
+54985   88562
+18275   62866
+54638   78780
+76547   55267
+15874   41010
+86965   36101
+97038   74819
+13828   44487
+21733   79144
+84471   16719
+26596   15857
+16529   28650
+25443   35348
+15059   43502
+81770   36730
+81309   78241
+35589   69602
+94630   35179
+53197   76827
+29523   66364
+46055   30993
+85203   60814
+39329   53071
+18663   32233
+50108   99922
+41019   98673
+89169   76809
+93556   52782
+69891   54164
+40270   51225
+82965   46304
+22455   40010
+41669   32801
+71630   15002
+48390   61558
+44783   78241
+59867   32801
+36112   31658
+81101   91237
+54551   96109
+20993   92021
+50680   38412
+63128   84471
+94509   80344
+10577   99239
+25724   84471
+17317   20799
+39300   76645
+76421   67643
+43817   20959
+75711   58027
+34480   35520
+64585   64739
+64685   99403
+43062   58999
+81760   88588
+63083   40045
+39425   36730
+17622   80859
+64617   36051
+59190   85424
+81175   97509
+93869   51498
+62866   61413
+26396   71626
+87276   98001
+79144   48463
+23812   31658
+31923   47911
+87102   81796
+40295   85346
+92002   66371
+62557   65288
+73197   53046
+68891   80787
+39756   37172
+19915   60878
+43089   32558
+30343   31658
+50332   66707
+26000   58109
+67720   82142
+41227   56943
+97647   47831
+76020   38412
+40485   84471
+16962   53016
+30066   28740
+31118   54102
+41928   99913
+82656   38412
+94155   34933
+52515   48131
+48519   45948
+64922   51902
+73451   81796
+31917   93734
+96992   56765
+60790   48526
+68218   75199
+80344   59642
+94057   47998
+74830   99403
+70462   56217
+76371   18624
+56899   90796
+92898   66333
+34979   72161
+37736   80344
+41607   32801
+48181   41716
+72333   26215
+13666   78112
+91781   85424
+77373   83784
+94719   94693
+65491   41669
+88464   47980
+98595   56821
+16665   57249
+42861   81712
+38767   65492
+31642   39581
+54565   86820
+51346   74706
+38258   81796
+35980   77859
+13015   61175
+79811   14561
+29887   12736
+48972   31658
+43907   40337
+15478   45373
+97895   52030
+93779   15247
+19906   88588
+69778   98196
+66203   63897
+91035   39857
+27450   63128
+11710   77533
+61760   31658
+50614   74819
+89099   87276
+75125   46470
+55904   39857
+76167   37911
+94908   47677
+58478   18866
+20475   37504
+21737   13167
+90464   99403
+12941   84669
+48793   62866
+60186   84471
+11894   39857
+55293   21637
+33993   76974
+47080   64256
+73306   62866
+95473   74936
+35272   59929
+20187   36730
+48764   59657
+65430   16092
+79522   28419
+98586   21238
+11131   97814
+15190   32801
+14978   39857
+83286   78490
+40748   81839
+25325   20040
+24813   58230
+52110   79030
+75599   95523
+23138   63833
+63416   65152
+13853   98184
+60874   80344
+32281   88588
+80353   72102
+24683   84471
+42421   38412
+75909   86850
+22940   36074
+80544   96507
+62292   58866
+98462   38182
+46560   56050
+87289   79144
+88955   15573
+70992   25439
+81256   38412
+28446   29484
+83121   95224
+16108   74352
+34016   37646
+55211   29561
+20806   87737
+17271   99403
+35249   76966
+25159   67894
+40337   58440
+60006   32338
+60866   38412
+66540   93258
+90000   58211
+57957   38113
+54883   80382
+65202   41669
+56318   22865
+43827   39813
+81395   40970
+69790   86084
+17754   55267
+92786   31658
+98085   88588
+50334   48963
+35482   58393
+32883   70992
+62378   14433
+99609   73135
+35356   36730
+78375   68903
+37024   13132
+24204   27308
+72637   38412
+17428   58766
+80886   18866
+66117   59583
+77402   72213
+66620   23574
+37470   26120
+56642   97207
+16039   99994
+23520   59100
+39995   75647
+31430   77373
+59277   16018
+77197   21617
+93312   84197
+81972   60483
+99910   79880
+83510   34604
+52934   99403
+60313   32544
+86206   62733
+32957   53708
+18748   59570
+34408   63137
+64561   95075
+89324   88588
+86562   99403
+34014   98669
+52477   54060
+82112   91468
+46837   51376
+42855   89033
+76285   10788
+48498   11016
+87628   95461
+25039   23870
+44726   84471
+36316   17593
+55475   12512
+40885   61324
+55982   41669
+28353   93258
+90070   87664
+92571   50972
+64040   77373
+66045   44321
+76075   47585
+69898   35520
+31897   78241
+45288   77373
+61402   40079
+43939   79476
+83915   87612
+51714   70302
+55728   61718
+19212   48853
+50471   15323
+11253   36730
+36282   61657
+99765   88588
+40255   84064
+65591   31658
+88588   30358
+53096   62672
+32485   52616
+90637   35520
+23957   55267
+15301   74819
+99304   38412
+42581   99633
+89403   78241
+88697   46405
+23646   81942
+82798   41669
+19417   72825
+99035   54991
+99372   77622
+49134   11067
+41732   49561
+69058   51302
+85817   52817
+80628   47979
+98869   18345
+21540   44446
+36075   62399
+74841   16533
+29826   68948
+74966   33155
+76789   33664
+42909   76884
+61686   93258
+65851   98787
+38529   64090
+64968   58698
+99647   70935
+49851   13167
+88523   38412
+92200   35520
+21926   55267
+85918   78241
+35092   80344
+39857   33948
+80393   59217
+97911   43227
+90571   35520
+48736   83686
+77924   63128
+18866   80344
+21299   74597
+81796   45742
+93562   96860
+89376   36730
+68027   75225
+13032   79144
+28892   57468
+96012   72691
+96357   90025
+93590   76769
+39169   81796
+69505   83140
+27406   79144
+45575   25412
+10640   69420
+42859   67773
+54319   76647
+36900   89641
+16622   73504
+55267   10781
+60719   75932
+63099   36730
+14798   31658
+89944   22601
+40221   55267
+75498   35601
+91475   36563
+23362   39524
+56739   81796
+57452   80344
+60950   97510
+78516   99403
+27941   62443
+27521   66529
+33707   88588
+93324   91799
+57954   78745
+10142   96525
+93400   79144
+10246   51708
+96780   80879
+90160   28886
+75452   68015
+51405   30788
+30558   43844
+80443   56573
+53073   55181
+23213   60714
+86395   98419
+26118   38412
+77828   81796
+83431   19529
+66085   56790
+87013   80344
+78095   27229
+92609   32801
+97658   96068
+97452   49425
+63195   95504
+22526   79144
+40153   79144
+77603   88145
+21804   26067
+70021   27010
+39030   20686
+44696   30343
+98142   54162
+18276   69052
+61036   14279
+89542   91528
+36218   99403
+59135   87980
+44366   61548
+73468   40559
+30939   26766
+66589   83054
+39929   63975
+25239   79144
+74819   40299
+77393   87276
+89793   74480
+70491   56646
+13636   99403
+58152   87276
+30693   19897
+31134   61607
+12324   35941
+67104   22474
+89552   84471
+96869   36730
+61641   42507
+92835   28786
+51442   41669
+40162   84338
+92491   16076
+11753   35520
+95247   79627
+11256   30343
+93258   41669
+24504   25813
+85713   41965
+19158   81796
+50458   41669
+48386   22205
+68720   90932
+36101   79144
+57165   78241
+22469   31658
+99737   14211
+58884   65158
+29461   98196
+86864   72295
+91962   77373
+93672   51538
+89453   83913
+86350   90636
+42288   98263
+17267   18583
+30518   55555
+76868   62866
+55662   44542
+31658   98196
+99589   31658
+64736   36101
+16281   62886
+32687   66131
+77273   83572
+52616   71835
+35719   12817
+87282   36101
+49495   17763
+41116   56436
+65977   31658
+87148   66523
+71950   99639
+93432   41570
+47256   24165
+60388   58593
+52721   87348
+46321   27970
+31533   64362
+82098   35520
+60520   98196
+62425   65803
+90692   57775
+29160   99403
+28072   65721
+29207   40337
+96928   11960
+88074   55022
+11262   31658
+70439   12630
+46426   40192
+97124   96336
+97733   79144
+60902   82128
+20406   18866
+49465   24075
+92723   84471
+82785   49899
+85690   84471
+46301   60801
+70543   39158
+77397   13167
+78434   89992
+43358   22650
+38412   60568
+54633   45527
+27215   93385
+98736   65619
+12981   48333
+79201   61358
+71849   25687
+27785   40337
+57013   13427
+99403   88588
+22632   26830
+12033   77373
+66675   16445
+23066   67354
+80100   31674
+77822   43658
+70694   18628
+38583   97566
+29014   39095
+71974   78640
+44442   94472
+89670   92693
+58205   52583
+26610   32340
+50111   36267
+81769   55267
+80727   15549
+54969   41669
+88744   81796
+66642   43640
+38035   81796
+86110   74184
+74806   38412
+26849   66673
+27007   93396
+80555   78794
+64197   32236
+88661   18331
+16011   32801
+18265   19847
+73365   46289
+71259   84471
+53163   80344
+67421   42238
+61567   39797
+78176   12791
+68680   99109
+83969   59805
+99427   65563
+64286   88588
+69259   49401
+65989   60112
+74866   55267
+91571   70365
+61137   72545
+86810   99342
+91215   74819
+57984   84471
+64054   45167
+25371   93258
+56931   97531
+42448   58600
+77910   41669
+27234   23987
+55971   67247
+53910   23754
+59015   16842
+36568   18866
+93228   92940
+38858   21883
+37570   41669
+43634   48654
+61671   36109
+14455   39324
+69564   61102
+75007   36730
+83030   35520
+27889   41669
+90946   41125
+12614   70263
+61381   18549
+90763   45873
+13117   44089
+13363   84471
\ No newline at end of file
diff --git a/2024/01/puzzle-1.awk b/2024/01/puzzle-1.awk
new file mode 100755
index 0000000..ff361aa
--- /dev/null
+++ b/2024/01/puzzle-1.awk
@@ -0,0 +1,18 @@
+#!/usr/bin/awk -f
+
+function abs(n) {
+	return n < 0 ? -n : n
+}
+
+{
+	xs[++i] = $1
+	ys[i]   = $2
+}
+
+END {
+	asort(xs)
+	asort(ys)
+	for (i in xs)
+		d += abs(xs[i] - ys[i])
+	print d
+}
\ No newline at end of file
diff --git a/2024/01/puzzle-2.awk b/2024/01/puzzle-2.awk
new file mode 100755
index 0000000..8400a16
--- /dev/null
+++ b/2024/01/puzzle-2.awk
@@ -0,0 +1,12 @@
+#!/usr/bin/awk -f
+
+{
+	xs[++i] = $1
+	ys[$2]++
+}
+
+END {
+	for (i in xs)
+		d += xs[i] * ys[xs[i]]
+	print d
+}
\ No newline at end of file
-- 
cgit v1.2.3