From fe8e661b1fa8ea3ee4594b05ef28511e49e3cf27 Mon Sep 17 00:00:00 2001 From: g3po Date: Sun, 1 Dec 2024 12:58:11 +0100 Subject: [PATCH] feat: day 1 first part done --- cmd/01/01.go | 12 + go.mod | 3 + inputs/01_1.txt | 1000 +++++++++++++++++++++++++++++++++++++ inputs/01_2.txt | 0 internal/common/common.go | 35 ++ internal/day01/handle.go | 35 ++ 6 files changed, 1085 insertions(+) create mode 100644 cmd/01/01.go create mode 100644 go.mod create mode 100644 inputs/01_1.txt create mode 100644 inputs/01_2.txt create mode 100644 internal/common/common.go create mode 100644 internal/day01/handle.go diff --git a/cmd/01/01.go b/cmd/01/01.go new file mode 100644 index 0000000..4a6cfe7 --- /dev/null +++ b/cmd/01/01.go @@ -0,0 +1,12 @@ +package main + +import ( + "aoc2024/internal/common" + "aoc2024/internal/day01" +) + +func main() { + input := common.LoadInputs("01_1.txt") + result := day01.Handle(input) + println(result) +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..26cc35c --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module aoc2024 + +go 1.23.3 diff --git a/inputs/01_1.txt b/inputs/01_1.txt new file mode 100644 index 0000000..00c0045 --- /dev/null +++ b/inputs/01_1.txt @@ -0,0 +1,1000 @@ +40885 43247 +14780 86274 +35132 49508 +87895 32621 +66398 24390 +52630 25877 +45307 76591 +95628 97627 +72163 78355 +98522 95603 +57216 46881 +12008 48861 +38298 46535 +71855 82832 +92585 80435 +84001 97081 +78292 93078 +45636 33525 +76512 39046 +38323 22697 +83810 44855 +72603 28080 +24058 37268 +84303 57220 +59027 24106 +83282 84119 +61006 11658 +48062 35044 +32563 46719 +55138 30334 +10567 37567 +81222 61384 +13268 78355 +30412 81803 +74112 64130 +23816 43397 +10379 78355 +22512 21557 +21238 37493 +48732 74561 +71895 26129 +56261 18604 +17877 18949 +70389 94076 +80057 96329 +21557 18949 +12217 25877 +26078 55331 +77271 25331 +47793 96985 +12269 13064 +62657 84119 +96321 84119 +82752 89583 +81963 70388 +90356 21557 +12989 37248 +31629 14924 +84196 25877 +99279 89358 +83388 93359 +87044 17718 +63169 87744 +18604 74439 +36258 46049 +77508 84042 +40422 54372 +19555 18949 +91277 84290 +35969 94076 +15013 80200 +62843 25877 +24017 65701 +12515 64862 +30232 64130 +29869 21557 +82872 89105 +95672 80363 +24933 38916 +34243 89505 +68462 52549 +96776 57706 +53204 61533 +47848 29624 +64295 38621 +43397 81963 +33348 65619 +42797 79314 +46970 55790 +64130 36712 +78973 18682 +11811 89105 +70144 72795 +60439 99936 +33188 44855 +44794 63445 +64487 74453 +29210 56570 +85284 64877 +15941 54838 +12638 59602 +71556 43397 +37118 89105 +40251 92731 +96915 38715 +74031 77797 +82730 55500 +75744 46765 +68296 18604 +21074 65320 +42344 33525 +51236 29049 +35237 37858 +34979 31877 +67772 36971 +70033 11658 +92368 72885 +23124 19427 +30156 71641 +98873 91217 +88742 92389 +53071 21977 +42296 13098 +38666 73919 +57537 62354 +64018 92354 +67363 36755 +80697 38916 +26673 18949 +89179 89105 +54756 55505 +95654 54756 +89583 20247 +99104 78355 +79209 18604 +46486 87051 +72428 36242 +10807 52070 +89298 46971 +50792 28232 +20641 70188 +90989 94076 +77243 46765 +87396 20705 +37135 70494 +52276 87895 +22392 92389 +87930 51527 +74396 79256 +41186 56338 +85460 20553 +54443 72978 +96972 83495 +97212 95603 +45317 16267 +66712 18861 +49480 94076 +27742 60961 +52974 33525 +61612 71105 +66454 96813 +38784 38916 +23687 55494 +63118 78733 +72636 46049 +24692 91487 +54819 19994 +62251 21557 +45283 71423 +64825 38193 +84476 61929 +13775 47012 +81961 46807 +67639 57706 +94076 46330 +54505 94523 +29135 56680 +37829 64021 +55481 66745 +93407 99911 +27387 59602 +16316 46049 +52989 32947 +30300 90834 +96691 88496 +50902 87895 +83296 87895 +72410 35220 +51363 34458 +91717 10796 +64537 12657 +88755 11658 +45699 50898 +30771 82731 +63430 51105 +50823 21043 +82701 49653 +97163 46049 +48484 71098 +81052 84119 +23703 34678 +30764 15014 +29297 68139 +59207 60019 +66528 91452 +55532 54756 +25453 69548 +59653 25877 +90287 47410 +48075 26955 +78969 18604 +55265 76729 +86321 24731 +96233 97949 +31974 83219 +27966 94794 +80442 46568 +21740 92389 +98826 78355 +26698 82227 +76170 87054 +42337 21885 +81201 38916 +19761 15098 +84205 13064 +13613 23769 +88615 45110 +13523 64130 +38319 83138 +23343 75063 +63668 80130 +28390 39710 +75452 95254 +64133 11658 +32729 59602 +27597 43397 +14645 61228 +53895 83392 +60500 25974 +32543 84119 +92447 45477 +49617 85739 +75583 80029 +56258 27759 +99839 40669 +72815 78733 +38916 36352 +51214 18604 +47885 98104 +32642 94800 +73000 59347 +16754 83263 +90536 48052 +79852 84119 +13650 33525 +55116 59736 +90651 29522 +66518 18949 +34334 33835 +27778 94076 +78355 89436 +91829 43098 +64666 25877 +76956 92389 +96508 56920 +65975 69579 +10219 77527 +68098 18604 +64683 56823 +39480 45980 +67400 49455 +25362 77706 +59884 83985 +89331 32583 +17464 92389 +46765 79772 +80429 70686 +75020 33562 +17587 86747 +22495 53411 +39536 92389 +71776 36731 +45502 51921 +63998 36899 +89415 59602 +69064 25877 +41093 30360 +48759 58701 +54045 40775 +50518 21557 +95603 31315 +67892 92389 +86428 63327 +85370 50557 +41708 38916 +92731 62284 +10822 36755 +78716 46049 +51330 27663 +17767 20695 +64635 34897 +24939 54756 +19247 49834 +48407 21557 +58280 10118 +22150 38916 +94724 98669 +41156 52398 +12933 13064 +14798 94877 +96578 75715 +16390 33406 +83613 17013 +26427 92731 +86261 57616 +55500 95467 +22438 78668 +28148 57578 +74628 89298 +69431 36154 +84934 57706 +78222 88948 +40203 44855 +95824 81963 +87612 37822 +86008 14536 +34950 13064 +79865 28147 +17977 45817 +41655 11658 +80291 99017 +18341 49398 +20326 21330 +88558 84119 +77515 92389 +53170 16659 +65402 40633 +86348 92731 +62880 33525 +43085 23662 +26255 84119 +68679 78355 +20680 89105 +41869 90570 +36755 87895 +88224 99558 +31011 70779 +48194 89571 +24295 81053 +33935 59602 +53641 16580 +65434 12017 +52986 92389 +50983 18949 +75500 42852 +66784 37272 +92828 31527 +35072 64837 +80004 30334 +59855 55500 +41236 29683 +33734 55674 +39326 79934 +89736 66991 +29674 36755 +13988 89105 +25452 36949 +25830 90250 +30749 97379 +55595 73711 +80015 78733 +46482 35803 +22441 70976 +83981 65606 +88886 41409 +80574 18142 +12249 13064 +50289 95603 +79419 54756 +15661 72521 +80673 84119 +69043 94076 +28503 21557 +64430 59602 +30967 11658 +97752 13064 +75830 37442 +77618 93363 +65582 30567 +85245 49428 +97479 94076 +25364 88853 +67585 33525 +98910 21883 +35979 89105 +52886 87287 +17863 78355 +22714 81064 +34811 59602 +38601 46049 +66998 65637 +31071 78733 +20567 46049 +40407 94076 +12892 11405 +31776 38172 +26514 39922 +39642 66587 +25678 34984 +19056 25293 +87532 64307 +64371 85073 +10968 67935 +65069 16722 +93669 55573 +60859 67382 +62237 18346 +61226 94909 +81848 38240 +82676 20061 +54249 87895 +87292 39960 +42644 92389 +16350 16618 +99118 21557 +51272 43033 +38402 98892 +85461 54756 +61362 96724 +24044 33525 +98345 37921 +67157 45435 +17552 44855 +81992 59236 +11264 13064 +72774 64292 +17886 11658 +20209 49320 +24857 44622 +99609 30334 +18885 67872 +80153 64130 +27830 46505 +37359 59634 +44934 44855 +14379 43397 +66228 26867 +20491 81979 +86485 84119 +58166 56484 +73309 32741 +10925 94076 +49366 54756 +98878 28287 +14322 57798 +47069 76103 +55454 91571 +45958 68493 +55575 11658 +16363 27741 +58187 40905 +23393 15695 +59560 94076 +89253 84932 +12730 46049 +95981 65450 +70509 23086 +98199 11658 +68591 95603 +35805 88443 +18949 92731 +88496 87718 +56554 38916 +88620 87391 +25248 23555 +19568 10760 +51184 21360 +58905 59602 +28442 33525 +39611 59602 +36193 47764 +78412 25877 +74747 63838 +22062 89105 +31290 87895 +66038 30334 +43742 71616 +51315 89583 +62161 94076 +66298 72033 +36504 56312 +89120 44193 +44855 36463 +40309 89105 +67018 84119 +17084 78355 +33056 43397 +94747 55560 +48638 89583 +58066 88496 +87610 37187 +29519 33525 +81807 52362 +82071 40364 +83446 37822 +81783 36755 +55551 13064 +42209 92731 +92668 87895 +39922 95544 +76542 13064 +10262 71080 +67785 93885 +11516 92389 +27577 44855 +54442 57706 +51045 84160 +59565 34872 +39633 42239 +46072 12710 +30120 46765 +59077 81963 +84068 87895 +60948 32043 +95681 13560 +72549 82551 +70229 21557 +36283 27626 +22094 92731 +59880 29771 +80666 82984 +37383 86982 +72308 89583 +33417 59602 +73406 18827 +63702 55500 +79774 88496 +97747 39685 +62678 50117 +78866 89105 +69149 96648 +29042 87895 +90227 88789 +87641 55500 +63192 55500 +30083 48350 +85297 38819 +84747 87895 +62515 18170 +66600 65778 +46177 37822 +58444 78355 +52094 37822 +53041 18604 +83139 37732 +75245 86956 +65199 81963 +67759 34172 +24523 46765 +75526 13064 +95112 57292 +16812 69210 +27150 54561 +27889 51717 +52492 55821 +32298 94076 +26294 59602 +88528 11658 +81091 89583 +87724 27555 +70541 21557 +57373 59602 +78806 84119 +74832 78733 +11140 97263 +62816 74748 +32877 29296 +10238 86451 +31062 73826 +51197 46049 +52200 49056 +41732 90778 +65795 13064 +90342 78355 +34815 76310 +26516 36763 +17103 90361 +40355 34228 +50437 69070 +84732 40165 +48130 78355 +93840 88496 +14080 11658 +84434 89298 +13007 29744 +43180 24165 +33073 33525 +10295 94076 +93767 23698 +71093 45135 +67993 54756 +49864 61081 +60508 46765 +34881 98619 +93568 30507 +98353 38149 +61161 92731 +31392 69457 +48181 52523 +46328 19551 +96120 49917 +37307 66109 +97434 18949 +18083 46765 +22829 30863 +54346 17712 +72465 43084 +85457 31308 +39615 57706 +88086 47808 +87853 78355 +65205 59304 +63806 98367 +16130 46049 +93811 76839 +11658 58781 +11059 13064 +30334 21557 +98075 75251 +38840 42057 +16869 43570 +48134 94076 +86863 33525 +57110 90741 +42166 11661 +68342 64879 +77189 49516 +63900 92731 +22149 25877 +89606 26251 +52446 78355 +27625 36637 +71459 91162 +19948 54756 +97897 81963 +85920 11679 +55822 51743 +99753 87895 +27995 30208 +13429 71381 +60106 16565 +53834 84119 +93853 37169 +53323 59480 +33029 92389 +80026 92731 +89105 37822 +11275 38916 +82101 88746 +48838 44974 +51083 77339 +87508 78733 +37822 54756 +87603 71023 +77306 79170 +83607 64349 +83628 76824 +12915 31734 +77700 18949 +17702 92664 +50702 21297 +45775 62545 +81452 37912 +94769 46049 +13620 16941 +94683 25877 +82623 92731 +80395 61300 +10653 38916 +56540 38167 +79668 89105 +38566 17462 +91843 87895 +78605 21767 +67485 91900 +47946 89583 +54429 22347 +63188 18604 +85345 43397 +38114 81963 +27218 46765 +72837 46049 +36077 60086 +88380 68655 +39742 29860 +17501 26973 +29661 54756 +51541 20932 +28729 94983 +26871 70376 +98273 15417 +82624 64992 +98186 80150 +27968 36679 +46837 35204 +25813 36755 +68485 11658 +14834 94076 +22454 76789 +37887 32688 +98524 51577 +84451 89105 +99009 38916 +38532 89298 +12678 18949 +25877 18949 +23896 23826 +12218 72862 +34248 79137 +51047 37761 +97852 42343 +16247 22628 +15050 44855 +13038 64072 +39868 66349 +40990 18604 +28143 27197 +11020 73243 +71945 29713 +22240 89105 +27820 92731 +29887 22203 +56300 87573 +49237 46049 +49919 57706 +11718 26784 +63374 25533 +60444 96604 +12093 15962 +18306 92731 +82153 95299 +19454 57706 +44998 92389 +45293 18949 +68856 30470 +11652 46833 +30844 70059 +43444 43397 +28164 57706 +87763 46049 +94693 41449 +89550 39922 +79299 30437 +43134 86312 +67305 73204 +27615 17932 +85654 49561 +79020 32416 +78421 77300 +70200 87895 +45245 31951 +64748 52679 +40947 36086 +19515 60372 +67789 18949 +87852 43899 +25001 84119 +40289 18604 +59127 18882 +33525 81963 +16309 35229 +78462 79899 +19556 90831 +61608 94076 +54207 36755 +55989 70595 +42913 67767 +67418 71203 +17039 75627 +40677 57706 +31180 78733 +62301 46064 +70449 21986 +15052 98462 +43937 89583 +79748 31183 +18003 27572 +87092 74102 +87409 25877 +26143 49593 +61212 44855 +43152 76536 +12649 82906 +63812 29471 +78144 75384 +59517 52147 +15233 38916 +73570 69462 +48245 46049 +15819 65861 +89028 87895 +92052 92731 +23310 84119 +62520 69403 +36709 39760 +36430 55500 +25597 32313 +71964 92206 +83244 18271 +36627 89298 +70665 38916 +49870 84119 +22588 63437 +68848 30220 +82588 39922 +63625 61633 +21187 48646 +29737 24993 +69239 11916 +11889 89298 +73088 84119 +78733 59383 +31265 88496 +88211 48581 +87455 42448 +11960 25087 +53972 58504 +16265 25841 +13251 56027 +73138 21076 +28359 59093 +33177 54756 +47196 57143 +80349 25682 +95415 11742 +15655 99423 +66525 76330 +83450 94076 +95823 96837 +43757 13064 +34705 40310 +90783 78355 +25428 28621 +46367 63456 +18089 38916 +76473 30769 +11910 36020 +43638 26539 +75625 38379 +62348 97177 +82387 48449 +44037 36755 +84511 39170 +75679 53432 +39351 67137 +66054 64647 +15588 98396 +65735 27809 +37902 69851 +77961 21699 +15735 18604 +77113 87895 +91902 92605 +57057 22257 +63906 95907 +82051 92731 +42181 38916 +16732 71090 +17701 51743 +25457 55500 +13393 54756 +96544 91431 +38792 38916 +94574 78355 +68775 98785 +93232 92389 +61662 54374 +54708 86765 +79658 84119 +49112 10069 +95167 25895 +76188 33198 +45398 84855 +57706 84119 +12662 81867 +69016 54756 +52910 69110 +12999 35674 +82487 11783 +60875 78355 +40312 74151 +52594 93840 +56685 41957 +96212 62251 +68811 59602 +23542 21557 +96807 71740 +64831 21557 +90696 39123 +38101 89105 +48154 93393 +13362 54756 +95198 25877 +96581 94076 +31691 86075 +28300 39152 +27811 48895 +67518 77140 +80733 18949 +90602 19561 +15775 77709 +23653 95732 +58159 37822 +74420 85001 +94548 50484 +42953 44855 +13547 95603 +84993 54756 +65944 54951 +99745 88496 +13181 18949 +59275 46765 +28719 70279 +59602 13064 +28875 13064 +97957 99852 +64524 78355 +57293 54756 +93579 96608 +10508 18949 +61695 46765 +51942 30334 +93397 25877 +92389 37401 +47272 52436 +87034 89105 +45142 33525 +75524 34213 +14318 46049 +33072 22919 +20324 68087 +93889 57763 +46049 43397 +47403 69469 +18848 46049 +32268 87797 +30141 82280 +28160 27404 +84119 17978 +13064 31603 +85278 92731 +18995 42077 +58994 91117 +40648 50594 +70979 48461 +32475 64802 +25216 71018 +20315 87895 +82394 46049 +44063 75255 +23454 70789 +59598 78733 +77905 43405 +53440 80075 +79083 94076 +57022 43326 +54297 32463 +10686 46049 +19336 98633 +23358 75943 +23651 54756 +43246 53725 +51993 78355 +52484 56220 +91569 81079 +36966 32813 +98090 36755 +57712 98202 +41880 92731 +28125 63190 +95710 21557 +22924 87895 +65478 18949 +16351 29022 +59838 84119 +77564 57175 +53670 94076 +67248 24236 +51743 92731 +21296 43397 +70800 59771 +52036 13051 +18593 83332 +83855 43397 +20306 54756 +58385 43502 +68684 75847 +98153 38453 +67237 72168 +25854 59466 diff --git a/inputs/01_2.txt b/inputs/01_2.txt new file mode 100644 index 0000000..e69de29 diff --git a/internal/common/common.go b/internal/common/common.go new file mode 100644 index 0000000..586be3c --- /dev/null +++ b/internal/common/common.go @@ -0,0 +1,35 @@ +package common + +import ( + "fmt" + "log" + "os" + "strconv" + "strings" +) + +func Must[T any](obj T, err error) T { + if err != nil { + log.Fatal(err) + } + return obj +} + +func LoadInputs(input string) []string { + fmt.Println("Opening file...") + bytes := Must(os.ReadFile("././inputs/" + input)) + content := strings.Split(string(bytes), "\n") + return content[:len(content)-1] +} + +func SumIntArr(arr []int) int { + sum := 0 + for _, v := range arr { + sum += v + } + return sum +} + +func StrToInt(str string) int { + return Must(strconv.Atoi(str)) +} diff --git a/internal/day01/handle.go b/internal/day01/handle.go new file mode 100644 index 0000000..350061c --- /dev/null +++ b/internal/day01/handle.go @@ -0,0 +1,35 @@ +package day01 + +import ( + "math" + "sort" + "strings" + + "aoc2024/internal/common" +) + +func Handle(input []string) int { + list1 := make([]int, len(input)) + list2 := make([]int, len(input)) + distance := 0 + + for i, line := range input { + cols := strings.Split(line, " ") + list1[i] = common.StrToInt(cols[0]) + list2[i] = common.StrToInt(cols[1]) + } + + sort.Slice(list1, func(i, j int) bool { + return list1[i] < list1[j] + }) + + sort.Slice(list2, func(i, j int) bool { + return list2[i] < list2[j] + }) + + for i, v := range list1 { + distance = distance + int((math.Abs(float64(v - list2[i])))) + } + + return distance +}