diff --git a/2024/ruby/day_01.rb b/2024/ruby/day_01.rb
new file mode 100644
index 0000000..546d620
--- /dev/null
+++ b/2024/ruby/day_01.rb
@@ -0,0 +1,1014 @@
+input = DATA.read.chomp
+ .lines
+ .map { _1.split.map(&:to_i) }
+ .transpose
+ .map(&:sort)
+
+a, b = input
+
+# pp a.zip(b).map { _1 - _2 }.map(&:abs).sum
+
+b = b.tally
+pp a.sum { _1 * b.fetch(_1, 0) }
+
+__END__
+84283 63343
+35360 98209
+17841 84541
+22035 44413
+43645 22440
+45290 95042
+47251 69434
+39300 96178
+19278 89783
+85842 65775
+35833 86545
+83505 46651
+84748 99338
+89475 33222
+42161 58577
+44380 60478
+71528 39698
+70514 65226
+44413 43676
+33787 32152
+90737 63686
+37294 68183
+75263 59626
+60662 72213
+84705 69756
+21217 99901
+72906 34754
+93885 69920
+95413 90232
+15097 99343
+51861 30403
+86779 81128
+89053 71770
+91473 84748
+42848 83319
+75389 16660
+79784 77290
+93069 79793
+47264 51397
+27695 54288
+92063 39301
+39085 15346
+51201 25788
+17981 36723
+32685 56814
+98625 47590
+69815 20602
+93402 99803
+72880 15499
+97907 62268
+76481 85794
+44842 69492
+80295 16660
+97958 94756
+89545 16660
+73090 77911
+72433 16911
+85972 27192
+10582 69368
+22334 16852
+43360 63474
+79393 86545
+42302 14040
+61177 58936
+49655 42875
+72005 33787
+58727 43007
+37514 33044
+99443 33020
+52137 58953
+49038 71779
+94756 37855
+62268 44413
+27702 33097
+98521 65775
+61583 12043
+22777 65011
+18614 58936
+38328 73771
+15249 75263
+33863 40144
+46651 46651
+61084 82666
+39251 68710
+22781 42030
+53976 41887
+35530 66749
+25493 10759
+20353 17588
+84109 65785
+83893 32822
+30896 10671
+97083 33787
+73752 61585
+67790 86677
+79260 34669
+65897 82748
+44296 15919
+21934 96178
+77571 39195
+56142 75263
+57117 97137
+23301 98209
+73163 86545
+91882 82221
+95331 31680
+59289 77212
+15754 71947
+46398 88874
+10667 15893
+69601 15499
+11225 22506
+98793 43676
+97146 65775
+86898 27456
+50178 43676
+19563 96178
+37236 83319
+48110 15099
+87813 83628
+45147 28949
+18308 15320
+83455 62844
+31167 94756
+57734 78110
+28433 71843
+17114 50003
+30689 83319
+32142 84973
+75022 97137
+37954 58936
+87682 71077
+75831 51397
+15774 31580
+97448 70574
+11672 91230
+65732 47962
+42222 62092
+80590 69230
+58007 43676
+51361 81128
+77212 95485
+97079 80445
+14347 51648
+60311 82950
+91345 94033
+98757 43676
+17921 10573
+66116 44413
+51094 90107
+67373 80341
+79628 16066
+69987 96086
+27839 76671
+18904 76136
+87664 15499
+34757 65775
+59509 77212
+36746 29953
+49422 90054
+15204 94756
+76707 10470
+57263 81128
+24221 15499
+66460 34853
+26979 24071
+50113 51397
+27576 18881
+10024 58690
+94266 44338
+53098 15499
+49708 26678
+45448 14024
+71075 86545
+70967 16660
+79261 17794
+10368 47000
+52272 44413
+99474 63493
+62001 62268
+13025 58936
+44750 31131
+53413 78110
+29540 86516
+67424 93231
+19550 58936
+47390 36675
+26625 78110
+53218 44473
+96391 67378
+99990 86545
+15308 36723
+65730 71355
+65789 52609
+87805 42937
+29236 78110
+31771 94756
+18987 59217
+64300 10605
+78147 86545
+48116 86545
+92646 31914
+65185 75151
+19530 78110
+52051 95575
+85748 46024
+79421 44413
+80422 93619
+29790 89448
+55576 47590
+49121 38714
+72333 55404
+65315 65775
+90550 75308
+31131 70078
+24074 84512
+25162 11398
+75109 71691
+43749 47992
+75832 80252
+65214 63054
+39525 97845
+63454 51633
+51736 56796
+35556 54493
+21880 78110
+65295 85023
+92624 63420
+40519 60621
+17223 26035
+58997 82029
+96291 43676
+18878 17802
+83923 86545
+39873 52247
+11656 18538
+70458 98474
+84033 62268
+39535 40947
+32254 83944
+61992 45922
+29791 65458
+54348 50197
+19270 33788
+85744 13744
+96599 86043
+30579 51397
+45856 97022
+50586 39670
+23436 21616
+60158 69962
+60361 46651
+78825 65775
+10426 94756
+96035 97582
+15499 52076
+20954 57704
+22388 51397
+81163 58840
+91634 62284
+32022 60129
+91628 83319
+62766 39021
+69120 52720
+90633 86545
+10409 56735
+12777 48223
+34714 75263
+79836 42421
+10520 75263
+62340 75043
+39720 26790
+46519 39888
+61520 65775
+33304 22157
+36117 47033
+70466 26469
+64757 58936
+21216 65775
+18545 47590
+93089 12789
+93798 86967
+82130 93561
+25802 82666
+84789 53152
+40909 51397
+71607 63580
+58121 46248
+96176 83150
+57256 56877
+45369 81128
+14089 80671
+62274 58936
+93696 30843
+87893 11107
+70203 33787
+64881 41883
+25012 88519
+61533 26411
+42375 15214
+71157 31131
+83004 53943
+91731 20072
+80380 32606
+84931 93116
+84992 82666
+18938 85274
+53302 66304
+54031 25703
+53733 82087
+70053 16035
+94922 46651
+51039 15775
+95907 25691
+48755 86545
+71863 52366
+26925 57806
+78898 70700
+42515 82666
+73641 13915
+76761 68975
+81003 64780
+78110 93231
+43324 32347
+21609 82998
+82606 47590
+81882 81455
+33483 15499
+94856 96178
+83072 91213
+95776 15752
+49704 67234
+38311 59510
+18526 73415
+34486 49323
+86291 95736
+48231 48723
+58843 94756
+39909 96229
+48028 97137
+56310 29503
+99185 24905
+17336 82666
+92522 85585
+13402 73819
+32705 81018
+48232 69309
+57780 67505
+81213 58936
+98451 82666
+99334 65775
+20346 83118
+23437 66474
+10188 47428
+36257 54877
+56471 83319
+16660 96178
+67004 82666
+42043 25942
+73986 23575
+22940 75135
+14788 90530
+17351 83319
+93467 47590
+45821 68349
+50930 64681
+97634 35360
+43212 31098
+74266 69116
+54839 31433
+21639 25809
+46195 44054
+51737 84748
+42702 86545
+33691 77212
+27068 16406
+82599 15400
+39389 67976
+20089 57521
+43676 38333
+40624 36299
+69489 65775
+57102 86545
+85599 98399
+28855 77212
+61910 71149
+72866 85822
+89253 93951
+92040 90428
+79472 18069
+86424 58936
+37352 44413
+85210 94311
+89903 78875
+80026 60474
+88961 99820
+38159 81128
+35620 38529
+93003 52573
+48646 58936
+44325 13961
+82076 24493
+74069 81128
+18067 28571
+99684 10225
+21031 82452
+90638 86545
+57199 31313
+82205 13207
+71149 73214
+58191 81342
+47303 65775
+36022 37220
+72656 49204
+55308 53561
+19095 65493
+46635 71555
+15506 64319
+40226 49581
+25646 79607
+44326 44382
+74259 78110
+83125 44570
+85377 51736
+49474 81128
+77096 66424
+32334 82666
+88697 91300
+13865 11138
+48113 75493
+15017 81128
+61694 93132
+27654 65809
+79058 86545
+32035 84748
+20212 22750
+51434 35768
+89681 75874
+38356 91593
+40535 30523
+35913 51397
+20493 78110
+65172 84035
+20026 74404
+74410 30968
+63206 31719
+39064 41786
+57312 85504
+42601 93207
+56746 31131
+13866 83100
+56073 86545
+89828 68239
+43617 80074
+68234 40950
+17714 96178
+91242 93460
+61907 51622
+45542 54328
+56287 98209
+33780 54835
+81704 17337
+95069 45562
+54245 83519
+10776 92714
+15551 83089
+47590 46303
+71220 47329
+20160 28184
+93991 88224
+59450 97215
+71333 84428
+42520 48130
+54366 15499
+31338 44103
+94941 86108
+13396 81924
+74187 93231
+10131 47816
+34774 44413
+36723 91465
+45677 34269
+13499 35048
+15009 58120
+84895 90143
+74165 83319
+18259 46651
+98209 87849
+80104 96178
+69709 96178
+68814 62370
+97541 29548
+73729 39436
+72978 62854
+58000 84748
+63119 81674
+40369 44413
+90150 95171
+52608 92615
+71077 38291
+31624 93044
+38760 77212
+91176 58936
+63143 40887
+91823 16660
+34818 44413
+59892 11840
+17484 36429
+30905 54199
+32038 17281
+36181 79577
+61442 58936
+52676 92055
+84219 94756
+66449 58936
+22863 73911
+23017 89669
+79892 94756
+82803 51397
+83319 65016
+30234 42381
+73499 45602
+46440 44587
+95631 44461
+81128 76437
+74448 46651
+14447 52123
+32611 24331
+57781 22177
+64820 65775
+68420 84266
+47754 67988
+34335 71149
+29717 64219
+89191 64088
+82795 57333
+16549 22484
+82556 77514
+99163 23617
+18471 93880
+56195 44413
+89300 85985
+46990 17063
+81806 15499
+38774 57907
+75955 45074
+56634 53662
+14693 31131
+53016 52394
+73961 91020
+62726 10077
+73112 92012
+95820 81782
+89033 43179
+18786 68422
+37161 54313
+65250 96178
+37464 43676
+86725 79195
+85011 26319
+67737 69409
+98362 54308
+34884 44086
+32918 45910
+44619 52487
+80495 81128
+55837 51397
+60689 40038
+44176 54195
+39854 12679
+13045 94621
+40466 56205
+97137 77870
+19527 69865
+88017 39180
+31622 21522
+79812 11165
+55320 85476
+99675 95829
+10226 39512
+58609 56835
+92126 77212
+85290 36723
+79783 51199
+93581 47590
+90551 41001
+40558 11266
+39089 24707
+32385 66290
+16747 34912
+20505 78110
+70730 52705
+48459 15541
+66724 82666
+26340 71149
+11972 70352
+85523 91638
+76588 87532
+15882 85803
+84892 71074
+17238 46651
+72970 40619
+63431 71149
+90427 85393
+57232 69012
+64933 35643
+56557 86545
+89980 84682
+39968 59407
+22733 20816
+64872 58936
+58936 26119
+75725 37733
+28054 15499
+72081 31664
+25950 98957
+35455 33324
+61813 15499
+41704 25493
+79271 86494
+23953 51653
+46535 41106
+63102 96797
+30834 94721
+64012 91509
+68305 51458
+94295 72833
+40622 63182
+91004 79623
+64037 88188
+11981 71149
+94012 17064
+78178 71465
+61342 12008
+46974 58318
+57688 78663
+64308 23440
+44044 46651
+36812 12527
+46898 96178
+37454 45987
+96884 43676
+52528 43676
+56661 72213
+91311 58936
+94931 38918
+87647 17588
+57203 46651
+21346 42051
+61629 21742
+93631 48556
+81359 34333
+66314 90524
+13411 62864
+15431 82666
+62759 80050
+84813 65775
+71791 51397
+83838 16358
+90129 99706
+98160 31885
+33794 77212
+71088 93454
+85754 75521
+85337 36180
+54712 43676
+43618 58936
+25861 51397
+59485 84700
+20950 98209
+59143 36723
+19018 96178
+99973 62268
+35822 38826
+31306 99043
+92941 31131
+92804 77212
+62182 15499
+93200 39106
+79238 66201
+56028 97137
+26131 41721
+55412 86233
+40092 64847
+89193 97749
+84584 44413
+58395 69675
+70934 42497
+27303 24086
+41447 95939
+15725 64142
+69760 58936
+81266 53614
+95326 57234
+89236 97137
+45408 99439
+65803 58102
+23823 89352
+82448 83319
+12317 15499
+63704 31229
+31591 46651
+60656 40668
+84397 86629
+15943 71628
+69553 40846
+67670 20397
+29623 41118
+45656 11366
+57563 57937
+35401 33787
+29524 92772
+10799 77212
+20503 81128
+31145 97137
+24662 17588
+88787 42052
+77284 27806
+81111 13760
+96401 77212
+45881 84748
+14096 91121
+31716 44830
+96178 97137
+11460 79257
+22663 64393
+17066 53398
+48248 17099
+47906 13089
+60675 18687
+14382 86545
+62222 70385
+99668 63170
+16029 71024
+20810 82413
+11971 63222
+70446 98209
+95100 19344
+81776 14882
+56409 90152
+78955 66877
+15972 35794
+82762 57101
+40585 43676
+82715 32513
+13035 12929
+41208 43676
+75405 51397
+52968 37848
+89777 77408
+47910 41390
+17844 92716
+78842 71149
+96933 78110
+84401 86308
+22335 83319
+38772 39043
+10235 91837
+64002 91515
+97099 72526
+19165 32320
+94851 53321
+11044 81516
+30088 31131
+92285 19663
+90624 43676
+54999 90850
+56563 61111
+93006 42621
+77028 44413
+63496 93231
+59288 16304
+19260 82666
+65456 78110
+76020 47590
+71510 78110
+38373 15499
+95329 77350
+81785 15499
+73967 65024
+55970 81128
+75253 51397
+67687 97112
+26178 22355
+31644 43676
+85675 51397
+98065 65775
+47206 22445
+68588 67760
+81859 34895
+81781 96369
+12100 17237
+76959 12327
+62721 92743
+47728 82465
+80148 57620
+36073 81128
+77828 43217
+60402 51397
+20533 67838
+67535 65775
+86024 93819
+45988 74424
+79733 90048
+36916 67049
+91726 78110
+89614 77956
+91991 61361
+48407 44413
+41683 34105
+61197 72068
+23055 75738
+76099 31131
+34782 29960
+79495 96116
+56038 77059
+75701 79362
+90211 35325
+91105 59877
+26571 55619
+70643 23825
+96461 86872
+97211 33461
+83364 41646
+37258 39006
+76258 43478
+77897 78110
+90589 15499
+53899 94756
+59814 91161
+99348 15499
+45978 88916
+21550 44413
+28503 44413
+70361 93856
+38176 77212
+27681 42058
+34616 32695
+63530 77048
+93477 33487
+38551 85570
+30281 56360
+85761 86914
+54185 81927
+34284 21499
+90875 28296
+50159 22467
+73017 44413
+70427 75581
+13241 73319
+43718 84796
+58491 55625
+61676 44413
+59141 99602
+68941 47529
+99683 74769
+11312 96178
+12988 13264
+58625 54979
+38011 19401
+31122 43676
+72187 60980
+83040 16660
+35538 72268
+26926 14779
+20473 71077
+65791 97137
+90431 75263
+44240 65302
+68127 31131
+88606 59555
+82666 84748
+63367 65186
+66772 36723
+34590 91525
+10183 17103
+54013 72306
+88038 86803
+85275 51830
+29557 85444
+91185 61242
+91026 98854
+47846 50418
+58439 13040
+17800 79381
+50614 23120
+20747 99140
+50825 19555
+92963 46049
+86545 64971
+32892 59315
+41415 49777
+52966 15575
+94229 46570
+24717 15057
+90893 73249
+91788 31131
+20609 58936
+83204 92333
+25338 93231
+51397 58936
+93636 88577
+37898 88541
+93231 74087
+74840 87061
+50972 56483
+24441 62016
+45678 16300
+74739 43676
+40860 67689
+30257 10504
+62026 74316
+55422 82666
+78640 31557
+34047 41209
+72688 25384
+71214 58936
+29061 25473
+81733 25169
+30705 54797
+45282 97408
+70052 68168
+85605 83319
+67848 15499
+29579 11173
+21750 37393
+44657 35203
+14712 43246
+66229 51397
+69289 43240
+74346 78110
+63305 48302
+35229 43676
+99323 96098
+17588 81128
+17774 30312
+89787 71712
+41204 73470
+62131 77212
+43849 47590
+39529 83224
+40983 34788
+24893 43702
+45386 94505
+56318 41455
+68530 55855
+25873 42309
+94040 79923
+36153 86545
+88010 54142
+79130 78110
+71226 10679
+29354 70963
+87872 74238
+27909 65520
+99432 27102
+10868 48012
+26181 51794
+11684 81810
+93130 78110
+63372 55575
+78345 69499
+75999 96178
+87508 35360
+79511 85378
+51818 64013
+79942 38589
+84855 88979
+87913 96178
+47101 12601
+50727 16660
+20430 78110
+74052 10988
+63972 58139
+32279 32116
+83960 82666
+57325 44413
+91674 17561
+78735 86390
+72213 15499
+65775 74982
+78046 31131
+92992 19498
+61673 58879
+90012 91669
+73742 23296
+64602 10252
+34277 19600
+38771 62538
+83906 75263
+54798 39169
+48992 86743
+39017 27160
+17400 97272
+48587 46651
+37271 78110
+59764 98477
+63559 55088
+21472 92869
+70180 11171