diff options
| author | omagdy <omar.professional8777@gmail.com> | 2024-12-05 14:41:58 +0200 |
|---|---|---|
| committer | omagdy <omar.professional8777@gmail.com> | 2024-12-05 14:41:58 +0200 |
| commit | d5816aaccf73f7ed9577ccc544e89a73a0128386 (patch) | |
| tree | e5b8d57c3f74bd9691ab78c5e58245a8637f1dd6 /2024 | |
| parent | 8bf0fd29f7cd29c2933774b02694d8f172626ea1 (diff) | |
| download | aoc-d5816aaccf73f7ed9577ccc544e89a73a0128386.tar.xz aoc-d5816aaccf73f7ed9577ccc544e89a73a0128386.zip | |
Day 5 done.
Diffstat (limited to '2024')
| -rw-r--r-- | 2024/go/input/day5.prod | 1386 | ||||
| -rw-r--r-- | 2024/go/input/day5.test | 28 | ||||
| -rw-r--r-- | 2024/go/src/day5/main.go | 179 | ||||
| -rw-r--r-- | 2024/go/src/log.txt | 196 |
4 files changed, 1593 insertions, 196 deletions
diff --git a/2024/go/input/day5.prod b/2024/go/input/day5.prod new file mode 100644 index 0000000..0f16ea5 --- /dev/null +++ b/2024/go/input/day5.prod @@ -0,0 +1,1386 @@ +57|32 +67|77 +67|23 +54|27 +54|35 +54|99 +27|63 +27|83 +27|14 +27|47 +83|96 +83|25 +83|45 +83|33 +83|82 +46|81 +46|67 +46|27 +46|72 +46|21 +46|73 +85|54 +85|99 +85|98 +85|28 +85|53 +85|27 +85|63 +76|69 +76|21 +76|54 +76|48 +76|92 +76|81 +76|62 +76|23 +51|75 +51|68 +51|25 +51|72 +51|62 +51|96 +51|21 +51|11 +51|27 +24|77 +24|63 +24|76 +24|72 +24|51 +24|14 +24|39 +24|18 +24|62 +24|67 +77|53 +77|57 +77|75 +77|36 +77|11 +77|23 +77|69 +77|96 +77|85 +77|52 +77|81 +45|23 +45|73 +45|54 +45|81 +45|36 +45|27 +45|65 +45|96 +45|76 +45|33 +45|52 +45|46 +11|61 +11|19 +11|39 +11|94 +11|98 +11|54 +11|56 +11|92 +11|24 +11|27 +11|43 +11|69 +11|28 +18|43 +18|76 +18|47 +18|72 +18|39 +18|25 +18|63 +18|14 +18|62 +18|32 +18|67 +18|94 +18|96 +18|77 +33|77 +33|36 +33|54 +33|73 +33|96 +33|75 +33|28 +33|23 +33|11 +33|81 +33|68 +33|65 +33|46 +33|52 +33|85 +36|69 +36|65 +36|52 +36|75 +36|48 +36|76 +36|54 +36|19 +36|68 +36|81 +36|57 +36|73 +36|56 +36|62 +36|21 +36|92 +52|73 +52|48 +52|85 +52|83 +52|23 +52|27 +52|57 +52|11 +52|31 +52|92 +52|28 +52|19 +52|54 +52|75 +52|99 +52|65 +52|24 +63|33 +63|65 +63|32 +63|35 +63|52 +63|51 +63|62 +63|45 +63|72 +63|82 +63|46 +63|96 +63|77 +63|47 +63|67 +63|23 +63|36 +63|14 +73|27 +73|99 +73|21 +73|63 +73|92 +73|98 +73|83 +73|85 +73|69 +73|39 +73|54 +73|11 +73|53 +73|32 +73|61 +73|19 +73|18 +73|57 +73|48 +19|24 +19|47 +19|82 +19|32 +19|46 +19|39 +19|92 +19|14 +19|33 +19|69 +19|83 +19|94 +19|48 +19|18 +19|57 +19|61 +19|51 +19|99 +19|56 +19|63 +99|72 +99|13 +99|14 +99|96 +99|82 +99|76 +99|35 +99|18 +99|61 +99|46 +99|39 +99|36 +99|33 +99|77 +99|51 +99|67 +99|47 +99|43 +99|94 +99|63 +99|24 +47|72 +47|52 +47|75 +47|65 +47|14 +47|96 +47|46 +47|11 +47|33 +47|85 +47|73 +47|67 +47|51 +47|82 +47|81 +47|13 +47|25 +47|77 +47|76 +47|36 +47|23 +47|62 +35|72 +35|65 +35|81 +35|47 +35|36 +35|52 +35|75 +35|62 +35|45 +35|96 +35|33 +35|46 +35|67 +35|13 +35|77 +35|76 +35|85 +35|23 +35|73 +35|51 +35|25 +35|14 +35|68 +94|13 +94|47 +94|68 +94|65 +94|82 +94|51 +94|36 +94|43 +94|67 +94|76 +94|46 +94|96 +94|35 +94|45 +94|81 +94|33 +94|72 +94|62 +94|14 +94|23 +94|25 +94|77 +94|52 +94|73 +69|82 +69|83 +69|61 +69|43 +69|35 +69|46 +69|63 +69|25 +69|67 +69|14 +69|47 +69|33 +69|24 +69|32 +69|56 +69|39 +69|72 +69|51 +69|94 +69|92 +69|48 +69|99 +69|45 +69|18 +96|62 +96|75 +96|73 +96|85 +96|57 +96|65 +96|69 +96|31 +96|23 +96|76 +96|19 +96|36 +96|81 +96|11 +96|53 +96|28 +96|27 +96|56 +96|68 +96|52 +96|21 +96|48 +96|98 +96|54 +61|13 +61|52 +61|62 +61|67 +61|35 +61|51 +61|82 +61|39 +61|36 +61|77 +61|45 +61|63 +61|32 +61|76 +61|14 +61|72 +61|94 +61|47 +61|46 +61|43 +61|33 +61|18 +61|96 +61|25 +68|21 +68|98 +68|18 +68|83 +68|57 +68|28 +68|73 +68|53 +68|99 +68|19 +68|69 +68|63 +68|11 +68|92 +68|85 +68|27 +68|48 +68|39 +68|61 +68|75 +68|56 +68|54 +68|24 +68|31 +53|82 +53|47 +53|69 +53|24 +53|32 +53|61 +53|63 +53|31 +53|39 +53|14 +53|92 +53|18 +53|98 +53|56 +53|83 +53|19 +53|99 +53|33 +53|94 +53|57 +53|35 +53|48 +53|45 +53|43 +23|24 +23|21 +23|28 +23|65 +23|73 +23|48 +23|98 +23|75 +23|31 +23|92 +23|19 +23|69 +23|56 +23|68 +23|53 +23|85 +23|57 +23|99 +23|27 +23|83 +23|81 +23|61 +23|11 +23|54 +21|98 +21|92 +21|31 +21|48 +21|43 +21|57 +21|35 +21|69 +21|56 +21|82 +21|39 +21|63 +21|94 +21|61 +21|53 +21|47 +21|28 +21|19 +21|24 +21|27 +21|83 +21|18 +21|99 +21|32 +72|11 +72|53 +72|76 +72|52 +72|85 +72|68 +72|13 +72|19 +72|27 +72|54 +72|23 +72|57 +72|36 +72|31 +72|21 +72|28 +72|73 +72|77 +72|98 +72|96 +72|81 +72|75 +72|65 +72|62 +14|72 +14|73 +14|77 +14|76 +14|52 +14|25 +14|11 +14|96 +14|51 +14|65 +14|67 +14|62 +14|13 +14|36 +14|21 +14|75 +14|68 +14|33 +14|81 +14|23 +14|46 +14|85 +14|45 +14|54 +98|43 +98|56 +98|47 +98|61 +98|24 +98|39 +98|69 +98|63 +98|32 +98|57 +98|51 +98|33 +98|83 +98|18 +98|35 +98|82 +98|48 +98|94 +98|99 +98|92 +98|19 +98|46 +98|45 +98|14 +82|96 +82|81 +82|23 +82|14 +82|13 +82|76 +82|73 +82|68 +82|77 +82|75 +82|33 +82|65 +82|11 +82|72 +82|36 +82|46 +82|67 +82|52 +82|51 +82|25 +82|54 +82|85 +82|45 +82|62 +13|68 +13|81 +13|73 +13|65 +13|54 +13|57 +13|52 +13|28 +13|62 +13|76 +13|23 +13|75 +13|36 +13|53 +13|21 +13|56 +13|69 +13|98 +13|31 +13|96 +13|27 +13|85 +13|11 +13|19 +65|98 +65|24 +65|81 +65|73 +65|31 +65|48 +65|28 +65|11 +65|53 +65|99 +65|27 +65|19 +65|18 +65|92 +65|85 +65|21 +65|61 +65|54 +65|83 +65|69 +65|56 +65|75 +65|68 +65|57 +39|25 +39|96 +39|47 +39|65 +39|35 +39|33 +39|72 +39|36 +39|52 +39|77 +39|94 +39|45 +39|23 +39|13 +39|46 +39|76 +39|14 +39|82 +39|62 +39|32 +39|51 +39|67 +39|43 +39|63 +62|85 +62|28 +62|99 +62|23 +62|53 +62|19 +62|31 +62|81 +62|57 +62|54 +62|21 +62|48 +62|65 +62|83 +62|98 +62|75 +62|11 +62|52 +62|69 +62|56 +62|92 +62|27 +62|68 +62|73 +81|75 +81|28 +81|57 +81|56 +81|53 +81|48 +81|85 +81|11 +81|21 +81|92 +81|99 +81|68 +81|27 +81|24 +81|98 +81|61 +81|39 +81|31 +81|54 +81|83 +81|73 +81|18 +81|19 +81|69 +56|25 +56|35 +56|82 +56|32 +56|94 +56|67 +56|99 +56|33 +56|48 +56|18 +56|24 +56|47 +56|46 +56|39 +56|83 +56|72 +56|45 +56|61 +56|63 +56|77 +56|51 +56|43 +56|14 +56|92 +43|62 +43|72 +43|73 +43|51 +43|96 +43|35 +43|45 +43|33 +43|52 +43|67 +43|65 +43|46 +43|23 +43|68 +43|76 +43|14 +43|13 +43|82 +43|47 +43|81 +43|85 +43|25 +43|36 +43|77 +48|63 +48|33 +48|14 +48|32 +48|61 +48|18 +48|83 +48|43 +48|24 +48|45 +48|72 +48|13 +48|92 +48|51 +48|67 +48|47 +48|35 +48|99 +48|82 +48|94 +48|25 +48|77 +48|39 +48|46 +28|98 +28|14 +28|53 +28|56 +28|45 +28|24 +28|47 +28|69 +28|99 +28|82 +28|61 +28|39 +28|43 +28|18 +28|63 +28|31 +28|35 +28|32 +28|83 +28|92 +28|48 +28|94 +28|57 +28|19 +25|77 +25|28 +25|19 +25|75 +25|27 +25|76 +25|21 +25|31 +25|98 +25|23 +25|72 +25|54 +25|96 +25|85 +25|52 +25|81 +25|53 +25|62 +25|13 +25|68 +25|36 +25|11 +25|65 +25|73 +75|28 +75|53 +75|83 +75|69 +75|11 +75|99 +75|24 +75|31 +75|56 +75|21 +75|98 +75|54 +75|19 +75|32 +75|94 +75|61 +75|43 +75|18 +75|39 +75|48 +75|63 +75|92 +75|27 +75|57 +92|47 +92|25 +92|35 +92|83 +92|77 +92|67 +92|72 +92|51 +92|46 +92|24 +92|99 +92|32 +92|13 +92|82 +92|18 +92|63 +92|61 +92|33 +92|96 +92|94 +92|39 +92|43 +92|45 +92|14 +31|24 +31|35 +31|63 +31|83 +31|39 +31|57 +31|45 +31|94 +31|32 +31|43 +31|48 +31|18 +31|82 +31|56 +31|14 +31|98 +31|99 +31|69 +31|33 +31|47 +31|46 +31|92 +31|19 +31|61 +32|76 +32|65 +32|25 +32|33 +32|67 +32|68 +32|13 +32|82 +32|96 +32|47 +32|23 +32|52 +32|14 +32|72 +32|51 +32|94 +32|77 +32|43 +32|81 +32|46 +32|35 +32|36 +32|62 +32|45 +57|92 +57|45 +57|14 +57|63 +57|18 +57|33 +57|82 +57|47 +57|83 +57|99 +57|94 +57|35 +57|56 +57|25 +57|43 +57|69 +57|46 +57|61 +57|39 +57|51 +57|48 +57|24 +57|67 +67|25 +67|53 +67|65 +67|98 +67|27 +67|62 +67|13 +67|31 +67|75 +67|52 +67|72 +67|36 +67|11 +67|54 +67|73 +67|21 +67|81 +67|28 +67|76 +67|96 +67|85 +67|68 +54|56 +54|31 +54|69 +54|57 +54|98 +54|94 +54|61 +54|24 +54|92 +54|47 +54|53 +54|43 +54|19 +54|28 +54|18 +54|83 +54|32 +54|63 +54|21 +54|39 +54|48 +27|19 +27|24 +27|94 +27|35 +27|18 +27|56 +27|31 +27|99 +27|43 +27|82 +27|57 +27|39 +27|32 +27|98 +27|53 +27|28 +27|92 +27|48 +27|69 +27|61 +83|18 +83|67 +83|61 +83|13 +83|14 +83|94 +83|36 +83|72 +83|24 +83|39 +83|77 +83|35 +83|99 +83|43 +83|32 +83|51 +83|46 +83|63 +83|47 +46|25 +46|52 +46|36 +46|68 +46|13 +46|76 +46|96 +46|77 +46|11 +46|51 +46|75 +46|85 +46|28 +46|54 +46|23 +46|65 +46|62 +46|53 +85|94 +85|11 +85|21 +85|57 +85|69 +85|56 +85|24 +85|18 +85|31 +85|39 +85|92 +85|32 +85|83 +85|19 +85|48 +85|61 +85|75 +76|98 +76|52 +76|53 +76|85 +76|57 +76|68 +76|56 +76|28 +76|83 +76|19 +76|11 +76|65 +76|75 +76|31 +76|73 +76|27 +51|54 +51|36 +51|77 +51|52 +51|28 +51|23 +51|67 +51|13 +51|31 +51|76 +51|85 +51|81 +51|65 +51|53 +51|73 +24|94 +24|33 +24|25 +24|96 +24|32 +24|43 +24|35 +24|61 +24|13 +24|45 +24|82 +24|36 +24|46 +24|47 +77|31 +77|21 +77|76 +77|65 +77|98 +77|27 +77|54 +77|73 +77|28 +77|13 +77|19 +77|62 +77|68 +45|13 +45|51 +45|77 +45|68 +45|62 +45|72 +45|11 +45|75 +45|85 +45|67 +45|25 +45|21 +11|63 +11|21 +11|83 +11|35 +11|32 +11|53 +11|48 +11|57 +11|31 +11|99 +11|18 +18|35 +18|23 +18|33 +18|82 +18|51 +18|45 +18|13 +18|36 +18|52 +18|46 +33|13 +33|51 +33|21 +33|25 +33|72 +33|62 +33|67 +33|76 +33|27 +36|53 +36|27 +36|23 +36|98 +36|28 +36|85 +36|11 +36|31 +52|69 +52|53 +52|98 +52|21 +52|68 +52|81 +52|56 +63|13 +63|81 +63|43 +63|94 +63|76 +63|25 +73|28 +73|24 +73|75 +73|56 +73|31 +19|43 +19|67 +19|45 +19|35 +99|25 +99|45 +99|32 +47|68 +47|45 +35|82 + +46,51,67,25,72,77,13,96,36,76,52,23,65,81,68,73,85,75,11,54,21,27,28 +68,73,85,75,11,54,21,28,31,19,57,69,56,48,92,83,99,24,61,18,39 +83,99,24,61,63,32,94,35,47,82,14,45,33,46,51,67,25,72,77,13,96 +19,81,75,36,27,96,11 +75,11,54,21,28,31,98,19,56,92,83,99,24,18,63,32,94 +62,23,85,75,27,31,19,48,83 +23,65,81,68,73,85,11,54,27,31,98,19,57,48,92,83,24 +61,39,63,32,43,35,47,45,33,46,67,72,77,96,36 +27,28,53,31,98,19,57,69,56,48,92,83,99,24,61,18,39,63,32,94,35,47,82 +57,54,31,27,28,21,68,48,23,53,19 +18,39,63,32,94,43,35,47,82,14,33,46,51,67,25,72,77,13,96,36,76,62,52 +28,69,76,56,23,21,98,68,96,65,75,11,36,54,27,53,19,85,73,57,62 +14,46,96,73,75 +96,36,76,62,23,81,68,73,85,75,11,54,27,53,31,98,57,69,56 +98,57,56,48,92,83,99,24,18,39,94,43,82,14,45,33,46 +57,83,39,53,99,85,19,18,56 +68,85,27,28,56,83,61,18,39 +31,98,19,57,69,56,48,92,83,99,24,61,18,39,32,94,43,35,47,82,14,45,33 +62,39,13,43,72,36,82,45,61 +81,68,73,85,75,11,54,21,27,28,53,31,98,19,69,56,48,92,83,99,24,61,18 +61,18,45,56,83,47,43,63,35,39,69,92,25 +73,53,81,28,19,52,31,57,62,83,68,92,85,23,48 +52,23,65,81,68,73,85,75,11,54,21,27,28,53,31,98,19,69,56,48,92,83,99 +62,68,36,72,54,11,75,67,65 +24,39,63,32,47,14,45,33,46,67,25,77,96,36,76 +27,57,28,19,61,56,83,54,63,69,39,53,32,31,11 +43,14,46,51,72,77,36,65,81,68,73 +51,85,81,46,35,47,68,33,82,76,25,62,67,52,23 +69,24,83,92,53,99,21,56,18,31,11,43,63,57,94,98,61,39,28,19,48,32,54 +75,27,31,98,19,56,48,92,94 +47,45,33,51,72,77,36,76,62,52,65,81,68 +32,35,47,82,14,51,67,25,72,13,96,62,52,23,81 +19,31,54,81,76,56,52,65,21,28,73,36,75,68,96,11,53,27,23,69,98,57,62 +65,81,68,73,85,54,21,27,28,31,98,19,57,69,56,48,92,83,99,24,61 +83,99,61,94,82,14,33,46,51,67,25 +36,76,65,68,54,21,53,19,48 +23,65,81,11,83 +33,67,96,36,68,85,54,21,27 +54,18,24,39,21,98,63,27,92,83,31,61,48,75,57,28,69,85,73,19,11 +54,21,28,57,69,56,92,99,24,61,18,39,32,43,35 +39,63,32,94,35,47,46,51,67,72,77,13,96,76,62,52,23 +68,65,31,54,25,36,73,85,27,28,67 +13,67,68,81,96 +81,73,75,11,54,27,53,31,98,19,57,56,48,92,24,61,18 +92,54,24,32,28,19,53,39,35 +63,92,13,99,83,45,51 +85,11,54,21,28,53,31,98,56,24,61,18,32 +19,56,48,83,63,46,51 +75,11,21,27,28,53,31,19,57,92,83,99,24,61,18,39,63,32,94 +46,65,82,94,68,23,36,72,45,47,52,33,51,62,13 +56,48,92,83,99,24,61,39,63,32,94,43,35,47,82,14,33,46,51,67,72 +67,25,72,77,13,96,36,76,52,23,65,81,68,73,85,75,11,54,21,27,28,53,31 +83,57,31,54,21,92,28,85,63,53,48,39,73 +85,82,62,52,45,46,68,25,33 +25,27,21,68,98,72,81,23,13 +13,96,62,23,65,81,85,75,11 +98,57,11,73,99,52,48,65,28,75,19,85,69,92,83,81,56,21,31,68,27 +27,28,53,19,57,69,56,99,61,18,39,32,82 +53,21,48,54,28,68,36,73,85,76,23,31,98,11,81,56,52,57,69 +54,21,27,28,98,57,69,48,92,83,99,24,61,18,63,43,35 +23,65,81,68,27,57,24 +85,75,11,54,21,27,28,53,31,98,19,57,69,56,48,92,83,24,61,18,39,63,32 +54,53,27,11,56,39,68 +63,53,61,19,57,82,27 +14,76,51,43,46,82,67,45,52,35,96,94,33,81,47,13,65,36,77,62,23 +62,23,51,82,94,52,45,33,36,63,77,32,13,35,47,65,72,46,14,25,67,43,96 +92,83,99,24,61,18,39,32,94,43,35,47,82,14,45,33,46,51,67,25,72 +68,85,11,54,21,27,19,57,69,56,99,24,18 +48,18,83,46,82,77,67,72,24 +32,43,82,33,46,67,96,36,76 +28,65,11,68,54,27,23,56,98,92,19 +48,45,18,19,61,43,31,35,98,47,63,53,83,82,39,14,24,69,32,57,99 +92,83,99,24,18,39,32,94,35,82,51,72,13 +98,11,36,56,53,57,52,96,69,65,68 +33,77,96,76,62,52,23,65,68,75,54,21,27 +92,83,99,24,61,18,39,63,32,94,35,47,82,14,45,33,46,51,67,25,72,77,13 +33,67,13,96,62,65,73,85,27 +76,98,28,85,21 +75,28,31,98,57,92,99 +85,75,11,54,21,27,53,31,98,19,57,69,56,48,92,83,99,24,61,18,39,63,32 +72,76,62,65,81,75,11,21,53 +85,81,31,69,13,53,75,54,27,98,19,57,65 +94,35,47,82,14,45,33,46,51,67,25,72,77,13,96,36,76,62,52,23,65,81,68 +53,19,13,73,28,72,54,36,65,98,75 +76,11,62,68,53,77,65,54,28,75,52,85,21 +83,24,57,54,43,69,11 +23,82,35,52,43,39,13,77,47,63,96 +43,35,82,14,45,33,46,51,67,25,72,77,13,96,36,76,62,52,23,65,81,68,73 +36,19,13,98,65,76,23,81,28,72,11 +31,48,24,27,57,98,28,56,54,35,19 +21,13,85,31,27,57,36,68,81,54,76,96,73,77,23,52,62,11,75,19,98,65,53 +21,27,98,69,83,24,18,63,32,94,43,35,47 +56,99,69,48,54 +11,23,36,77,81,65,28,62,68,52,27,75,96,46,67 +83,24,61,18,63,94,43,35,47,82,14,46,51,67,25,77,96 +94,39,82,69,99,47,63,57,92,32,98,56,18,35,14,48,43,19,28 +72,76,96,67,65,73,82,68,35,52,85 +63,14,33,46,51,67,72 +63,32,94,43,35,82,14,46,51,72,77,96,36,76,62,23,65 +57,69,48,92,83,99,24,18,39,63,32,94,35,14,45,51,67 +57,99,61,39,47,82,46,51,67 +76,62,52,23,65,81,68,73,85,75,54,27,28,53,31,98,19,57,69,48,92 +75,36,21,85,46,28,27 +45,33,35,96,51,72,36,23,52,47,25,94,81,82,62,13,32,76,14 +11,54,21,28,53,98,19,57,69,56,92,83,99,24,61,39,32,94,43 +25,33,24,77,13,61,51,47,39,82,46,14,18,96,35,67,94,63,36,45,43,99,32 +85,13,68,53,27,36,69,57,52,11,96 +77,13,96,36,76,52,23,65,81,73,85,75,11,54,98,19,57 +47,67,72,13,62,52,68 +45,33,77,76,73 +39,92,18,35,72,13,61,82,77,32,51,14,46,47,45,25,63 +98,52,11,21,54,75,31,53,36,85,77,27,68,72,73,19,23,81,65 +45,25,82,11,68,52,85,75,23,46,51,96,77,67,72 +76,47,72,63,67,33,62,46,32,61,25,77,18,14,96,94,36,35,39,43,13 +76,62,52,65,81,21,28 +69,56,48,92,83,99,24,61,39,32,94,43,35,47,82,45,33,46,51,67,25 +85,81,23,77,54,72,51,76,36,75,21,68,11,67,28,13,65 +73,21,68,45,11,85,23,33,81,36,46 +67,24,45,83,32,39,61 +28,51,67,46,76,96,11,21,73,27,62,25,65,85,52 +13,36,52,23,81,54,31,57,69 +21,27,28,53,98,19,69,56,48,92,24,18,94,35,47 +24,18,39,63,32,94,35,47,82,14,45,33,46,67,25,72,77,13,96,36,76 +51,36,76,62,11,27,53 +81,68,73,54,21,28,53,98,57,69,48,92,83,99,24,61,18 +46,33,98,19,69,61,14,45,47,24,48,82,99,57,63,94,39,83,56 +28,57,92,83,24,39,63,35,14 +65,73,85,75,11,54,28,24,61 +48,92,83,99,24,61,47,72,77 +82,25,83,61,77,39,63,45,99 +36,76,65,73,54,56,48 +19,83,24,18,39,63,32,94,43,35,82,14,33,46,51 +11,21,53,69,56,48,83,32,43 +32,45,25,94,99,63,47,48,82,77,14 +32,57,46,33,24,14,69,83,82,51,39,92,99,63,61,48,67,47,18 +48,57,11,92,65,53,61,75,21,56,83,73,54,68,27,69,31,24,98,28,19,81,99 +31,75,83,62,57,68,52,23,56,73,48 +45,92,94,61,32,13,18 +46,27,76,52,62,68,36,33,54,21,72,96,51 +19,57,69,56,48,92,99,24,61,18,39,63,32,94,43,35,47,82,14,45,33,46,51 +69,83,99,24,61,39,63,94,35,82,45,33,51,67,25 +53,31,69,63,83,54,85,21,18,28,92,27,57,98,48,24,56,75,32,39,99,61,19 +81,82,35,72,96,68,36,46,13,62,14,73,76,25,33,52,43,67,45 +69,56,48,61,35,82,14,45,25 +76,23,81,11,21,28,19,57,48 +73,75,11,21,27,53,98,19,57,69,56,83,99,24,61,18,39 +18,39,63,32,94,43,35,47,82,14,45,46,51,67,25,72,77,13,36,62,52 +94,69,99,56,43,46,61,63,67,82,35,47,32,83,18,39,48,92,51,24,45,33,25 +27,56,81,11,53,18,68,69,48 +61,35,13,94,77,47,51,99,63,18,36,67,24,45,46,43,72,32,33,96,14,39,25 +32,57,28,53,99,27,18,75,48,85,83 +32,43,47,14,51,67,25,13,36,76,52 +73,75,54,21,53,98,19,48,83,99,61 +76,52,81,68,28 +75,98,56,83,39 +43,33,36,67,62,72,18,94,77,45,35,82,32,61,76,96,14 +54,21,27,53,98,69,56,92,83,99,18,39,63,32,94,43,35 +53,75,56,21,99,85,83,19,92,73,48,28,31,23,11,57,81 +21,28,53,98,69,24,63 +48,99,43,94,92,53,82,69,27,56,39,32,35 +24,18,39,94,43,35,47,82,14,45,33,46,51,67,25,13,96,36,76 +65,14,25,77,54,33,23,52,96,13,11,68,73 +92,57,94,53,19,63,98,47,99,18,61,39,82,14,24,35,69,28,83,56,32,48,43 +94,39,48,83,99,53,69,31,14,28,98,82,32,18,24,35,63,56,47,61,92,19,57 +25,72,77,13,96,36,76,62,52,23,65,81,68,73,85,75,11,54,27,28,53,31,98 +36,76,62,52,23,65,81,73,75,11,54,53,98,19,57 +56,48,35,43,45,18,72,63,83 +68,62,31,67,73,72,23,13,81,76,36 +21,28,98,57,39,54,19,61,18,92,83,24,11,63,69,43,94 +25,13,96,76,62,52,81,73,85,75,11,54,27,31,98 +62,65,81,68,73,75,54,27,28,57,69,92,83 +45,47,62,35,46,32,82,14,96,52,39,67,94,33,25,77,36,72,13,51,43,18,63 +36,82,67,96,35,62,94,43,61,13,46,51,47,77,18,76,39,25,63,14,33,45,32 +19,57,69,56,48,83,99,24,61,18,39,63,94,43,47,82,14,45,33,46,51 +28,81,75,11,72,98,62,68,65,52,19 +82,33,65,76,51,45,72,36,96,77,63,32,13,94,47 +48,83,99,63,43,35,77 +21,27,28,53,31,19,57,69,56,48,92,83,99,24,61,18,39,63,32,94,43,35,47 +35,25,36,47,18,24,14,77,99,45,96 +96,11,23,13,85,76,73,33,65,21,67,52,36,81,25,27,62 +82,45,33,67,62,65,73 +14,36,61,94,43 +76,27,92,28,75,52,69 +31,56,28,68,73,69,57,53,21,23,11,65,76,62,48,75,54,19,98,92,27,52,85 +36,76,52,23,65,81,68,73,85,75,11,54,21,27,28,53,31,98,19,57,69,56,48 +99,61,18,43,53,45,47,83,24,94,63,92,56,57,82,69,14 +82,94,57,14,83,32,46,35,98,99,45 +53,98,19,57,69,56,48,92,24,39,63,32,94,43,35,47,82,14,45 +35,82,14,45,33,46,25,72,77,96,23,65,85 +98,92,81,53,85,76,48,27,62 +98,57,92,99,18,39,43,47,82,14,45,33,46 +28,53,31,98,57,69,48,83,99,24,61,18,39,63,32,43,35,47,82 +24,61,39,63,32,35,46,51,67,36,76 +99,98,33,18,82,48,24,45,35,32,19 +62,52,23,81,68,73,85,75,11,54,21,53,98,19,57,56,48,92,83 +73,28,53,19,56,99,24 +81,45,82,14,43,73,46,47,33,68,77,96,25,51,13,35,23,52,62 +65,28,61,83,99,92,98 +83,99,94,43,47,67,96 +82,14,46,51,67,77,96,76,23,85,75 +45,46,51,81,75 +94,43,35,47,82,14,45,46,67,72,13,96,36,52,65 +81,77,11,28,31,68,85,54,76,65,62,36,75,21,57,19,98,27,52,23,96 +83,54,21,18,39,68,53 +33,18,69,51,24,94,14,19,48 +32,36,94,13,67,51,35,46,62,96,63,77,72,52,76,82,23 +76,62,52,23,65,81,68,73,85,11,27,28,98,57,48 +69,56,48,92,24,18,39,94,43,35,82,45,33,67,25 +46,51,67,25,72,77,13,96,76,62,52,23,68,73,85,75,11,54,21,27,28 diff --git a/2024/go/input/day5.test b/2024/go/input/day5.test new file mode 100644 index 0000000..9d146d6 --- /dev/null +++ b/2024/go/input/day5.test @@ -0,0 +1,28 @@ +47|53 +97|13 +97|61 +97|47 +75|29 +61|13 +75|53 +29|13 +97|29 +53|29 +61|53 +97|53 +61|29 +47|13 +75|47 +97|75 +47|61 +75|61 +47|29 +75|13 +53|13 + +75,47,61,53,29 +97,61,53,29,13 +75,29,13 +75,97,47,61,53 +61,13,29 +97,13,75,29,47 diff --git a/2024/go/src/day5/main.go b/2024/go/src/day5/main.go new file mode 100644 index 0000000..57b0de0 --- /dev/null +++ b/2024/go/src/day5/main.go @@ -0,0 +1,179 @@ +package main + +import ( + "fmt" + "os" + "slices" + "sort" + "strconv" + "strings" +) + +type Section struct { + pageOrderingRules [][2]int + updates [][]int +} + +func (s Section) String() string { + var builder strings.Builder + + // Format pageOrderingRules + builder.WriteString("Page Ordering Rules: [") + for i, rule := range s.pageOrderingRules { + if i > 0 { + builder.WriteString(", ") + } + builder.WriteString(fmt.Sprintf("[%d, %d]", rule[0], rule[1])) + } + builder.WriteString("]\n") + + // Format updates + builder.WriteString("Updates: [") + for i, update := range s.updates { + if i > 0 { + builder.WriteString(", ") + } + builder.WriteString("[") + for j, val := range update { + if j > 0 { + builder.WriteString(", ") + } + builder.WriteString(fmt.Sprintf("%d", val)) + } + builder.WriteString("]") + } + builder.WriteString("]") + + return builder.String() +} + +func FileRead(path string) string { + file, err := os.ReadFile(path) + if err != nil { + fmt.Println("Couldn't Read file: ", err) + } + return string(file) + +} + +func parseInput(data string) Section { + section := strings.Split(data, "\n\n") + first_section := strings.Split(section[0], "\n") + second_section := strings.Split(section[1], "\n") + var pageOrderingRules [][2]int + var updates [][]int + for _, rule := range first_section { + pages := strings.Split(rule, "|") + pageOne, _ := strconv.Atoi(pages[0]) + pageTwo, _ := strconv.Atoi(pages[1]) + arr := [2]int{pageOne, pageTwo} + pageOrderingRules = append(pageOrderingRules, arr) + } + for _, line := range second_section { + line := strings.Split(line, ",") + var update []int + for _, ele := range line { + ele, _ := strconv.Atoi(ele) + update = append(update, ele) + } + updates = append(updates, update) + } + return Section{ + pageOrderingRules: pageOrderingRules, + updates: updates, + } + +} + +func filter_relevant_rules(s *Section, update *[]int) [][2]int { + var filtered_rules [][2]int + for _, rule := range s.pageOrderingRules { + if slices.Contains(*update, rule[0]) && slices.Contains(*update, rule[1]) { + filtered_rules = append(filtered_rules, rule) + } + } + return filtered_rules +} + +func makeProperList(items [][2]int) []int { + counter := make(map[int]int) + + for _, item := range items { + counter[item[0]]++ + if _, exists := counter[item[1]]; !exists { + counter[item[1]] = 0 + } + } + + var sorted [][2]int + + for val, fq := range counter { + arr := [2]int{fq, val} + sorted = append(sorted, arr) + } + + sort.Slice(sorted, func(i, j int) bool { + return sorted[i][0] > sorted[j][0] + }) + + var properList []int + + for _, x := range sorted { + if len(x) == 0 { + break + } + properList = append(properList, x[1]) + } + + return properList +} + +func solve_part_one(data string) int { + section := parseInput(data) + ans := 0 + for _, update := range section.updates { + filtered_rules := filter_relevant_rules(§ion, &update) + properList := makeProperList(filtered_rules) + flag := true + for i := range properList { + if properList[i] != update[i] { + flag = false + break + } + } + if flag { + ans += update[len(update)/2] + } + } + return ans +} + +func solve_part_two(data string) int { + section := parseInput(data) + ans := 0 + for _, update := range section.updates { + filtered_rules := filter_relevant_rules(§ion, &update) + properList := makeProperList(filtered_rules) + flag := true + for i := range properList { + if properList[i] != update[i] { + flag = false + break + } + } + if !flag { + ans += properList[len(properList)/2] + } + } + return ans +} + +func main() { + test := FileRead("../input/day5.test") + prod := FileRead("../input/day5.prod") + + fmt.Println("Part_1 test: ", solve_part_one(test)) + fmt.Println("Part_1 prod: ", solve_part_one(prod)) + fmt.Println("Part_2 test: ", solve_part_two(test)) + fmt.Println("Part_2 prod: ", solve_part_two(prod)) +} diff --git a/2024/go/src/log.txt b/2024/go/src/log.txt deleted file mode 100644 index d1c7708..0000000 --- a/2024/go/src/log.txt +++ /dev/null @@ -1,196 +0,0 @@ -MMM -MSA -AMX - -MSA -AMX -MSA - -AMX -MSA -XMA - -MSA -XMA |
