init
This commit is contained in:
commit
ca9736d8ec
122 files changed
+28514
No files matched your search
@@ -0,0 +1,243 @@
|
||||
seeds: 1514493331 295250933 3793791524 105394212 828589016 654882197 658370118 49359719 4055197159 59237418 314462259 268880047 2249227634 74967914 2370414906 38444198 3291001718 85800943 2102534948 5923540
|
||||
|
||||
seed-to-soil map:
|
||||
3352941879 1247490906 129850502
|
||||
1738919961 2189748071 56658550
|
||||
1795578511 292133467 518088747
|
||||
1519757661 1666834550 130335907
|
||||
1650093568 133993362 88826393
|
||||
2813914030 2262539545 40894545
|
||||
2698412916 2661705133 115501114
|
||||
2854808575 810222214 437268692
|
||||
410530961 1545057218 121777332
|
||||
0 242661076 10731898
|
||||
532308293 2303434090 61476099
|
||||
3292077267 1797170457 2282798
|
||||
2313667258 0 133993362
|
||||
2447660620 2410952837 250752296
|
||||
3294360065 253392974 38740493
|
||||
10731898 1377341408 167715810
|
||||
1457582089 2364910189 46042648
|
||||
593784392 3009289500 824592362
|
||||
3333100558 222819755 19841321
|
||||
1418376754 1799453255 39205335
|
||||
1503624737 2246406621 16132924
|
||||
178447708 2777206247 232083253
|
||||
3482792381 1838658590 351089481
|
||||
|
||||
soil-to-fertilizer map:
|
||||
3513795976 4258851234 36116062
|
||||
3393453635 4148223693 110627541
|
||||
3504081176 3494735450 6350258
|
||||
2671742993 3596285367 235915393
|
||||
991290653 256764866 25867175
|
||||
2907658386 3330719253 68855819
|
||||
3336496635 4091266693 56957000
|
||||
3161141476 2536943456 80523019
|
||||
1961696534 304660310 29551079
|
||||
812996514 1560772632 178294139
|
||||
1562163347 2321959023 78904062
|
||||
31289107 1039870587 339682886
|
||||
1520029818 1928417376 42133529
|
||||
3510431434 3832200760 3364542
|
||||
3549912038 3272523584 58195669
|
||||
0 149071717 31289107
|
||||
3608107707 3501085708 5732766
|
||||
503523937 1739066771 189350605
|
||||
3071674583 3506818474 89466893
|
||||
3241664495 3996434553 94832140
|
||||
1708133363 454333361 253563171
|
||||
3813493721 3097084118 175439466
|
||||
1991247613 1970550905 351408118
|
||||
3613840473 2897430870 199653248
|
||||
2536943456 2762631333 134799537
|
||||
1641067409 244319429 12445437
|
||||
3994753216 3913095788 83338765
|
||||
2976514205 3399575072 95160378
|
||||
1354883134 0 143118415
|
||||
1349131883 2400863085 5751251
|
||||
1498001549 282632041 22028269
|
||||
2342655731 180360824 63958605
|
||||
370971993 1379553473 126598642
|
||||
4149802438 2617466475 145164858
|
||||
1017157828 707896532 331974055
|
||||
692874542 334211389 120121972
|
||||
497570635 143118415 5953302
|
||||
3988933187 3907275759 5820029
|
||||
4078091981 3835565302 71710457
|
||||
1653512846 1506152115 54620517
|
||||
|
||||
fertilizer-to-water map:
|
||||
3053686523 2028998994 1241280773
|
||||
1492748555 1562401968 269616514
|
||||
554432178 1000324407 562077561
|
||||
2944878746 3270279767 108807777
|
||||
2501520804 3379087544 52288887
|
||||
1762365069 20686928 69653413
|
||||
2028998994 3431376431 472521810
|
||||
1431309984 814973200 3653900
|
||||
409832614 0 20686928
|
||||
430519542 818627100 123912636
|
||||
1116509739 500172955 314800245
|
||||
2553809691 3903898241 391069055
|
||||
0 90340341 409832614
|
||||
1434963884 942539736 57784671
|
||||
|
||||
water-to-light map:
|
||||
2774754469 1598606098 15160294
|
||||
3832622498 1469118874 129487224
|
||||
4125818569 3997047227 169148727
|
||||
1108418694 1130695768 196125912
|
||||
637654660 517892123 26551592
|
||||
2519230072 3399515763 135968347
|
||||
2751000257 3126996880 23754212
|
||||
861800165 884077239 88532605
|
||||
1469118874 2566660966 63929427
|
||||
2789914763 3150751092 63425583
|
||||
2853340346 2561960449 4700517
|
||||
1692681911 3397592997 1922766
|
||||
2858040863 1773257241 287341147
|
||||
2655198419 2851614649 15098309
|
||||
950332770 972609844 158085924
|
||||
591049922 471287385 46604738
|
||||
3482333989 3849276196 108901632
|
||||
1694604677 1613766392 159490849
|
||||
3591235621 3958177828 38869399
|
||||
3630105020 4166195954 128771342
|
||||
3205039781 3535484110 277294208
|
||||
2706794606 2060598388 44205651
|
||||
386607659 544443715 110595292
|
||||
3962109722 2540862463 21097986
|
||||
697311924 0 92263281
|
||||
558450415 404456802 11447837
|
||||
2409200012 3214176675 110030060
|
||||
569898252 862925569 21151670
|
||||
1354525884 415904639 55382746
|
||||
789575205 790700609 72224960
|
||||
3832262624 2690248164 359874
|
||||
163757080 181606223 222850579
|
||||
1533048301 2967363270 159633610
|
||||
497202951 784452458 6248151
|
||||
2670296728 3812778318 36497878
|
||||
3145382010 2630590393 59657771
|
||||
1854095526 2104804039 436058424
|
||||
0 655039007 74414138
|
||||
2390804262 2690608038 18395750
|
||||
1304544606 1326821680 49981278
|
||||
3758876362 3324206735 73386262
|
||||
664206252 1376802958 33105672
|
||||
74414138 92263281 89342942
|
||||
3983207708 2709003788 142610861
|
||||
503451102 729453145 54999313
|
||||
2290153950 2866712958 100650312
|
||||
|
||||
light-to-temperature map:
|
||||
2054128675 422374783 216418447
|
||||
3729049939 3132111492 565917357
|
||||
524183620 1261361039 34450583
|
||||
723901655 638793230 74616934
|
||||
304496246 795175951 115896188
|
||||
1128506994 1008723417 50927515
|
||||
958650763 2074746732 3056214
|
||||
0 1224918384 36442655
|
||||
558634203 1059650932 165267452
|
||||
2052385426 713410164 1743249
|
||||
833053864 1953862956 120883776
|
||||
36442655 715153413 80022538
|
||||
1455705971 1506174459 386316618
|
||||
1842022589 1295811622 210362837
|
||||
2270547122 2077802946 24477429
|
||||
116465193 2102280375 188031053
|
||||
1179434509 945607414 63116003
|
||||
798518589 911072139 34535275
|
||||
3373647615 3893335786 195498774
|
||||
3696979816 3698028849 32070123
|
||||
1242550512 1892491077 43410067
|
||||
3051130577 2566857633 322517038
|
||||
3002478931 3844684140 48651646
|
||||
2311039190 3730098972 114585168
|
||||
2425624358 2311039190 187630064
|
||||
2819387158 2889374671 183091773
|
||||
1285960579 103791186 85466201
|
||||
1371426780 338095592 84279191
|
||||
1110545182 1935901144 17961812
|
||||
953937640 2290311428 4713123
|
||||
420392434 0 103791186
|
||||
961706977 189257387 148838205
|
||||
3637334768 3072466444 59645048
|
||||
3569146389 2498669254 68188379
|
||||
2613254422 4088834560 206132736
|
||||
|
||||
temperature-to-humidity map:
|
||||
2032423062 2486277941 26281270
|
||||
333062067 2316624216 6051173
|
||||
1716048249 1385455997 91409968
|
||||
460397469 2512559211 69041956
|
||||
25538975 668468772 15388105
|
||||
2090913379 324344034 71221218
|
||||
2804805674 3018690414 130533369
|
||||
529439425 908821722 476634275
|
||||
1106765273 448560048 219908724
|
||||
2162134597 1476865965 445565302
|
||||
0 395565252 25538975
|
||||
4004204691 4019550481 43244121
|
||||
2058704332 0 32209047
|
||||
1516375281 2116951248 199672968
|
||||
3888833667 2764269134 115371024
|
||||
40927080 32209047 292134987
|
||||
1490276549 2581601167 26098732
|
||||
1360818538 2322675389 129458011
|
||||
1006073700 2043715496 73235752
|
||||
1079309452 421104227 27455821
|
||||
1807458217 683856877 224964845
|
||||
339113240 1922431267 121284229
|
||||
4155917040 2879640158 139050256
|
||||
2764269134 4171262830 40536540
|
||||
4047448812 4062794602 108468228
|
||||
2935339043 3149223783 870326698
|
||||
1326673997 2452133400 34144541
|
||||
3805665741 4211799370 83167926
|
||||
|
||||
humidity-to-location map:
|
||||
3928575650 3147563455 98804874
|
||||
2357899446 2418187254 26586982
|
||||
449562184 2261875136 59054833
|
||||
308294839 60287808 141267345
|
||||
1872062279 1591999301 10857495
|
||||
1227084719 574109504 259895254
|
||||
1980177059 1765508840 13399403
|
||||
1162615704 1941046629 64469015
|
||||
2384486428 2654234915 114059261
|
||||
702311863 1515542756 40659242
|
||||
1993576462 2005515644 256359492
|
||||
3047301127 3246368329 27789688
|
||||
650396000 1713592977 51915863
|
||||
3701335066 3862068622 181049310
|
||||
1122863338 1673840611 39752366
|
||||
3075090815 4174917460 120049836
|
||||
3882384376 2778717800 46191274
|
||||
1626219043 201555153 245843236
|
||||
4027380524 3325898523 267586772
|
||||
3417979817 4043117932 13866284
|
||||
3281454033 2925002624 18592540
|
||||
110359150 1556201998 35797303
|
||||
2558833497 2444774236 209460679
|
||||
508617017 834004758 141778983
|
||||
1574315753 975783741 51903290
|
||||
2249935954 1027687031 107963492
|
||||
0 463750354 110359150
|
||||
2778717800 3593485295 268583327
|
||||
3195140651 2824909074 86313382
|
||||
3445626269 2943595164 203968291
|
||||
3324037823 4080975466 93941994
|
||||
742971105 1135650523 379892233
|
||||
146156453 1778908243 39038597
|
||||
3300046573 4056984216 23991250
|
||||
1503331938 1602856796 70983815
|
||||
185195050 1817946840 123099789
|
||||
3649594560 3274158017 21920411
|
||||
1486979973 447398389 16351965
|
||||
3671514971 3296078428 29820095
|
||||
2498545689 0 60287808
|
||||
3431846101 2911222456 13780168
|
||||
1882919774 2320929969 97257285
|
||||
@@ -0,0 +1,98 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
"fmt"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
type ConversionRange struct {
|
||||
source_start int
|
||||
source_end int
|
||||
target_start int
|
||||
target_end int
|
||||
translate int
|
||||
}
|
||||
|
||||
func convert(c *ConversionRange, num int) int {
|
||||
if num >= c.source_start && num <= c.source_end {
|
||||
return num + c.translate
|
||||
} else {
|
||||
return -1
|
||||
}
|
||||
}
|
||||
|
||||
func print(c ConversionRange) {
|
||||
fmt.Println()
|
||||
}
|
||||
|
||||
func main() {
|
||||
file, _ := os.Open("./test.text")
|
||||
defer file.Close()
|
||||
|
||||
scanner := bufio.NewScanner(file)
|
||||
var seed_to_soil []*ConversionRange
|
||||
|
||||
// Parse file
|
||||
index := 0
|
||||
s_to_s_mapping := false
|
||||
for scanner.Scan() {
|
||||
line := scanner.Text()
|
||||
|
||||
// Get starting seeds
|
||||
|
||||
if index == 0 {
|
||||
seeds_list := strings.Split(line, ": ")[1]
|
||||
seeds_value_list := strings.Split(seeds_list, " ")
|
||||
|
||||
var seeds []int
|
||||
|
||||
for _, seed := range seeds_value_list {
|
||||
seed_value, _ := strconv.Atoi(seed)
|
||||
seeds = append(seeds, seed_value)
|
||||
}
|
||||
|
||||
fmt.Println("Seeds: ", seeds)
|
||||
}
|
||||
|
||||
if line == "seed-to-soil map:" {
|
||||
s_to_s_mapping = true
|
||||
continue
|
||||
}
|
||||
|
||||
if s_to_s_mapping {
|
||||
if line == "" {
|
||||
s_to_s_mapping = false
|
||||
for _, r := range seed_to_soil {
|
||||
print(r)
|
||||
}
|
||||
continue
|
||||
} else {
|
||||
var r_values []int
|
||||
range_strings := strings.Split(line, " ")
|
||||
for _, r := range range_strings {
|
||||
r_value, _ := strconv.Atoi(r)
|
||||
r_values = append(r_values, r_value)
|
||||
}
|
||||
|
||||
var temp *ConversionRange
|
||||
temp = new(ConversionRange)
|
||||
|
||||
temp.target_start = r_values[0]
|
||||
temp.source_start = r_values[1]
|
||||
length := r_values[2]
|
||||
|
||||
temp.target_end = temp.target_start + length
|
||||
temp.source_end = temp.source_start + length
|
||||
temp.translate = temp.target_start - temp.target_end
|
||||
|
||||
seed_to_soil = append(seed_to_soil, temp)
|
||||
}
|
||||
}
|
||||
|
||||
index++
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
#!/bin/python3.12
|
||||
|
||||
FILE_PATH = "input.text"
|
||||
|
||||
class ConversionRange:
|
||||
target_start : int
|
||||
target_end : int
|
||||
source_start : int
|
||||
source_end : int
|
||||
translate : int
|
||||
|
||||
def __init__(self, target_start : int, source_start : int, length : int):
|
||||
self.target_start = target_start
|
||||
self.source_start = source_start
|
||||
self.target_end = self.target_start + length
|
||||
self.source_end = self.source_start + length
|
||||
self.translate = self.target_start - self.source_start
|
||||
|
||||
def __str__(self):
|
||||
print(f"Target start: {self.target_start}")
|
||||
print(f"Source start: {self.source_start}")
|
||||
print(f"Translate: {self.translate}")
|
||||
return ""
|
||||
|
||||
|
||||
|
||||
class Conversion:
|
||||
ranges : list[ConversionRange]
|
||||
|
||||
def __init__(self):
|
||||
self.ranges = []
|
||||
pass
|
||||
|
||||
def convert(self, num : int) -> int:
|
||||
for r in self.ranges:
|
||||
if num >= r.source_start and num <= r.source_end:
|
||||
return num + r.translate
|
||||
return num
|
||||
|
||||
|
||||
def main() -> None:
|
||||
with open(FILE_PATH, 'r') as f:
|
||||
contents = f.read().split('\n')
|
||||
|
||||
# Setup
|
||||
seeds: list[int] = []
|
||||
maps: dict[str, Conversion] = {}
|
||||
maps["seed-to-soil"] = Conversion()
|
||||
maps["soil-to-fertilizer"] = Conversion()
|
||||
maps["fertilizer-to-water"] = Conversion()
|
||||
maps["water-to-light"] = Conversion()
|
||||
maps["light-to-temperature"] = Conversion()
|
||||
maps["temperature-to-humidity"] = Conversion()
|
||||
maps["humidity-to-location"] = Conversion()
|
||||
|
||||
current_conversion: str = ""
|
||||
|
||||
# Parse the file
|
||||
for index, line in enumerate(contents):
|
||||
if index == 0:
|
||||
seeds_list: list[str] = line.split(": ")[1].split()
|
||||
for seed in seeds_list:
|
||||
seeds.append(int(seed))
|
||||
print(f"Seeds: {seeds}")
|
||||
continue
|
||||
|
||||
if not line:
|
||||
continue
|
||||
|
||||
if not line[0].isdigit():
|
||||
current_conversion = line[:-5]
|
||||
print(f"Current conversion: {current_conversion}")
|
||||
continue
|
||||
|
||||
nums: list[int] = list(map(lambda x: int(x), line.split()))
|
||||
|
||||
temp = ConversionRange(nums[0], nums[1], nums[2])
|
||||
print(temp)
|
||||
maps[current_conversion].ranges.append(temp)
|
||||
|
||||
# Convert the seeds
|
||||
lowest_location: float = float('inf')
|
||||
for seed in seeds:
|
||||
temp = seed
|
||||
for key, value in maps.items():
|
||||
print(f"Mapping {temp} with {key}")
|
||||
temp = value.convert(temp)
|
||||
|
||||
if temp < lowest_location:
|
||||
lowest_location = temp
|
||||
print(f"Location: {temp}")
|
||||
|
||||
print(f"Lowest location: {lowest_location}")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
seeds: 79 14 55 13
|
||||
|
||||
seed-to-soil map:
|
||||
50 98 2
|
||||
52 50 48
|
||||
|
||||
soil-to-fertilizer map:
|
||||
0 15 37
|
||||
37 52 2
|
||||
39 0 15
|
||||
|
||||
fertilizer-to-water map:
|
||||
49 53 8
|
||||
0 11 42
|
||||
42 0 7
|
||||
57 7 4
|
||||
|
||||
water-to-light map:
|
||||
88 18 7
|
||||
18 25 70
|
||||
|
||||
light-to-temperature map:
|
||||
45 77 23
|
||||
81 45 19
|
||||
68 64 13
|
||||
|
||||
temperature-to-humidity map:
|
||||
0 69 1
|
||||
1 0 69
|
||||
|
||||
humidity-to-location map:
|
||||
60 56 37
|
||||
56 93 4
|
||||
@@ -0,0 +1,243 @@
|
||||
seeds: 1514493331 295250933 3793791524 105394212 828589016 654882197 658370118 49359719 4055197159 59237418 314462259 268880047 2249227634 74967914 2370414906 38444198 3291001718 85800943 2102534948 5923540
|
||||
|
||||
seed-to-soil map:
|
||||
3352941879 1247490906 129850502
|
||||
1738919961 2189748071 56658550
|
||||
1795578511 292133467 518088747
|
||||
1519757661 1666834550 130335907
|
||||
1650093568 133993362 88826393
|
||||
2813914030 2262539545 40894545
|
||||
2698412916 2661705133 115501114
|
||||
2854808575 810222214 437268692
|
||||
410530961 1545057218 121777332
|
||||
0 242661076 10731898
|
||||
532308293 2303434090 61476099
|
||||
3292077267 1797170457 2282798
|
||||
2313667258 0 133993362
|
||||
2447660620 2410952837 250752296
|
||||
3294360065 253392974 38740493
|
||||
10731898 1377341408 167715810
|
||||
1457582089 2364910189 46042648
|
||||
593784392 3009289500 824592362
|
||||
3333100558 222819755 19841321
|
||||
1418376754 1799453255 39205335
|
||||
1503624737 2246406621 16132924
|
||||
178447708 2777206247 232083253
|
||||
3482792381 1838658590 351089481
|
||||
|
||||
soil-to-fertilizer map:
|
||||
3513795976 4258851234 36116062
|
||||
3393453635 4148223693 110627541
|
||||
3504081176 3494735450 6350258
|
||||
2671742993 3596285367 235915393
|
||||
991290653 256764866 25867175
|
||||
2907658386 3330719253 68855819
|
||||
3336496635 4091266693 56957000
|
||||
3161141476 2536943456 80523019
|
||||
1961696534 304660310 29551079
|
||||
812996514 1560772632 178294139
|
||||
1562163347 2321959023 78904062
|
||||
31289107 1039870587 339682886
|
||||
1520029818 1928417376 42133529
|
||||
3510431434 3832200760 3364542
|
||||
3549912038 3272523584 58195669
|
||||
0 149071717 31289107
|
||||
3608107707 3501085708 5732766
|
||||
503523937 1739066771 189350605
|
||||
3071674583 3506818474 89466893
|
||||
3241664495 3996434553 94832140
|
||||
1708133363 454333361 253563171
|
||||
3813493721 3097084118 175439466
|
||||
1991247613 1970550905 351408118
|
||||
3613840473 2897430870 199653248
|
||||
2536943456 2762631333 134799537
|
||||
1641067409 244319429 12445437
|
||||
3994753216 3913095788 83338765
|
||||
2976514205 3399575072 95160378
|
||||
1354883134 0 143118415
|
||||
1349131883 2400863085 5751251
|
||||
1498001549 282632041 22028269
|
||||
2342655731 180360824 63958605
|
||||
370971993 1379553473 126598642
|
||||
4149802438 2617466475 145164858
|
||||
1017157828 707896532 331974055
|
||||
692874542 334211389 120121972
|
||||
497570635 143118415 5953302
|
||||
3988933187 3907275759 5820029
|
||||
4078091981 3835565302 71710457
|
||||
1653512846 1506152115 54620517
|
||||
|
||||
fertilizer-to-water map:
|
||||
3053686523 2028998994 1241280773
|
||||
1492748555 1562401968 269616514
|
||||
554432178 1000324407 562077561
|
||||
2944878746 3270279767 108807777
|
||||
2501520804 3379087544 52288887
|
||||
1762365069 20686928 69653413
|
||||
2028998994 3431376431 472521810
|
||||
1431309984 814973200 3653900
|
||||
409832614 0 20686928
|
||||
430519542 818627100 123912636
|
||||
1116509739 500172955 314800245
|
||||
2553809691 3903898241 391069055
|
||||
0 90340341 409832614
|
||||
1434963884 942539736 57784671
|
||||
|
||||
water-to-light map:
|
||||
2774754469 1598606098 15160294
|
||||
3832622498 1469118874 129487224
|
||||
4125818569 3997047227 169148727
|
||||
1108418694 1130695768 196125912
|
||||
637654660 517892123 26551592
|
||||
2519230072 3399515763 135968347
|
||||
2751000257 3126996880 23754212
|
||||
861800165 884077239 88532605
|
||||
1469118874 2566660966 63929427
|
||||
2789914763 3150751092 63425583
|
||||
2853340346 2561960449 4700517
|
||||
1692681911 3397592997 1922766
|
||||
2858040863 1773257241 287341147
|
||||
2655198419 2851614649 15098309
|
||||
950332770 972609844 158085924
|
||||
591049922 471287385 46604738
|
||||
3482333989 3849276196 108901632
|
||||
1694604677 1613766392 159490849
|
||||
3591235621 3958177828 38869399
|
||||
3630105020 4166195954 128771342
|
||||
3205039781 3535484110 277294208
|
||||
2706794606 2060598388 44205651
|
||||
386607659 544443715 110595292
|
||||
3962109722 2540862463 21097986
|
||||
697311924 0 92263281
|
||||
558450415 404456802 11447837
|
||||
2409200012 3214176675 110030060
|
||||
569898252 862925569 21151670
|
||||
1354525884 415904639 55382746
|
||||
789575205 790700609 72224960
|
||||
3832262624 2690248164 359874
|
||||
163757080 181606223 222850579
|
||||
1533048301 2967363270 159633610
|
||||
497202951 784452458 6248151
|
||||
2670296728 3812778318 36497878
|
||||
3145382010 2630590393 59657771
|
||||
1854095526 2104804039 436058424
|
||||
0 655039007 74414138
|
||||
2390804262 2690608038 18395750
|
||||
1304544606 1326821680 49981278
|
||||
3758876362 3324206735 73386262
|
||||
664206252 1376802958 33105672
|
||||
74414138 92263281 89342942
|
||||
3983207708 2709003788 142610861
|
||||
503451102 729453145 54999313
|
||||
2290153950 2866712958 100650312
|
||||
|
||||
light-to-temperature map:
|
||||
2054128675 422374783 216418447
|
||||
3729049939 3132111492 565917357
|
||||
524183620 1261361039 34450583
|
||||
723901655 638793230 74616934
|
||||
304496246 795175951 115896188
|
||||
1128506994 1008723417 50927515
|
||||
958650763 2074746732 3056214
|
||||
0 1224918384 36442655
|
||||
558634203 1059650932 165267452
|
||||
2052385426 713410164 1743249
|
||||
833053864 1953862956 120883776
|
||||
36442655 715153413 80022538
|
||||
1455705971 1506174459 386316618
|
||||
1842022589 1295811622 210362837
|
||||
2270547122 2077802946 24477429
|
||||
116465193 2102280375 188031053
|
||||
1179434509 945607414 63116003
|
||||
798518589 911072139 34535275
|
||||
3373647615 3893335786 195498774
|
||||
3696979816 3698028849 32070123
|
||||
1242550512 1892491077 43410067
|
||||
3051130577 2566857633 322517038
|
||||
3002478931 3844684140 48651646
|
||||
2311039190 3730098972 114585168
|
||||
2425624358 2311039190 187630064
|
||||
2819387158 2889374671 183091773
|
||||
1285960579 103791186 85466201
|
||||
1371426780 338095592 84279191
|
||||
1110545182 1935901144 17961812
|
||||
953937640 2290311428 4713123
|
||||
420392434 0 103791186
|
||||
961706977 189257387 148838205
|
||||
3637334768 3072466444 59645048
|
||||
3569146389 2498669254 68188379
|
||||
2613254422 4088834560 206132736
|
||||
|
||||
temperature-to-humidity map:
|
||||
2032423062 2486277941 26281270
|
||||
333062067 2316624216 6051173
|
||||
1716048249 1385455997 91409968
|
||||
460397469 2512559211 69041956
|
||||
25538975 668468772 15388105
|
||||
2090913379 324344034 71221218
|
||||
2804805674 3018690414 130533369
|
||||
529439425 908821722 476634275
|
||||
1106765273 448560048 219908724
|
||||
2162134597 1476865965 445565302
|
||||
0 395565252 25538975
|
||||
4004204691 4019550481 43244121
|
||||
2058704332 0 32209047
|
||||
1516375281 2116951248 199672968
|
||||
3888833667 2764269134 115371024
|
||||
40927080 32209047 292134987
|
||||
1490276549 2581601167 26098732
|
||||
1360818538 2322675389 129458011
|
||||
1006073700 2043715496 73235752
|
||||
1079309452 421104227 27455821
|
||||
1807458217 683856877 224964845
|
||||
339113240 1922431267 121284229
|
||||
4155917040 2879640158 139050256
|
||||
2764269134 4171262830 40536540
|
||||
4047448812 4062794602 108468228
|
||||
2935339043 3149223783 870326698
|
||||
1326673997 2452133400 34144541
|
||||
3805665741 4211799370 83167926
|
||||
|
||||
humidity-to-location map:
|
||||
3928575650 3147563455 98804874
|
||||
2357899446 2418187254 26586982
|
||||
449562184 2261875136 59054833
|
||||
308294839 60287808 141267345
|
||||
1872062279 1591999301 10857495
|
||||
1227084719 574109504 259895254
|
||||
1980177059 1765508840 13399403
|
||||
1162615704 1941046629 64469015
|
||||
2384486428 2654234915 114059261
|
||||
702311863 1515542756 40659242
|
||||
1993576462 2005515644 256359492
|
||||
3047301127 3246368329 27789688
|
||||
650396000 1713592977 51915863
|
||||
3701335066 3862068622 181049310
|
||||
1122863338 1673840611 39752366
|
||||
3075090815 4174917460 120049836
|
||||
3882384376 2778717800 46191274
|
||||
1626219043 201555153 245843236
|
||||
4027380524 3325898523 267586772
|
||||
3417979817 4043117932 13866284
|
||||
3281454033 2925002624 18592540
|
||||
110359150 1556201998 35797303
|
||||
2558833497 2444774236 209460679
|
||||
508617017 834004758 141778983
|
||||
1574315753 975783741 51903290
|
||||
2249935954 1027687031 107963492
|
||||
0 463750354 110359150
|
||||
2778717800 3593485295 268583327
|
||||
3195140651 2824909074 86313382
|
||||
3445626269 2943595164 203968291
|
||||
3324037823 4080975466 93941994
|
||||
742971105 1135650523 379892233
|
||||
146156453 1778908243 39038597
|
||||
3300046573 4056984216 23991250
|
||||
1503331938 1602856796 70983815
|
||||
185195050 1817946840 123099789
|
||||
3649594560 3274158017 21920411
|
||||
1486979973 447398389 16351965
|
||||
3671514971 3296078428 29820095
|
||||
2498545689 0 60287808
|
||||
3431846101 2911222456 13780168
|
||||
1882919774 2320929969 97257285
|
||||
@@ -0,0 +1,151 @@
|
||||
#!/bin/python3.12
|
||||
|
||||
FILE_PATH = "input.text"
|
||||
|
||||
class ConversionRange:
|
||||
target_start : int
|
||||
target_end : int
|
||||
source_start : int
|
||||
source_end : int
|
||||
translate : int
|
||||
|
||||
def __init__(self, target_start : int, source_start : int, length : int):
|
||||
self.target_start = target_start
|
||||
self.source_start = source_start
|
||||
self.target_end = self.target_start + length
|
||||
self.source_end = self.source_start + length
|
||||
self.translate = self.target_start - self.source_start
|
||||
|
||||
def __str__(self):
|
||||
print(f"Target start: {self.target_start}")
|
||||
print(f"Source start: {self.source_start}")
|
||||
print(f"Translate: {self.translate}")
|
||||
return ""
|
||||
|
||||
|
||||
"""
|
||||
{
|
||||
(79, 93) : {
|
||||
(79, 93) : {
|
||||
(52, 99) : {
|
||||
(52, 53) : {
|
||||
(37, 38) : {
|
||||
|
||||
}
|
||||
},
|
||||
(54, 99) : {
|
||||
(54, 99) : {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
"""
|
||||
class Conversion:
|
||||
start : int
|
||||
end : int
|
||||
ranges : list
|
||||
|
||||
def __init__(self, start : int, end : int):
|
||||
self.start = start
|
||||
self.end = end
|
||||
self.ranges = []
|
||||
|
||||
def __contains__(self, r) -> bool:
|
||||
if r.start >= self.start and r.end <= self.end:
|
||||
return True
|
||||
return False
|
||||
|
||||
def add_range(self, range) -> None:
|
||||
self.ranges.append(range)
|
||||
|
||||
def convert(self, num : int) -> int:
|
||||
for r in self.ranges:
|
||||
if num >= r.source_start and num <= r.source_end:
|
||||
return num + r.translate
|
||||
return num
|
||||
|
||||
def convert_range(self, range : tuple[int, int]) -> list:
|
||||
start, end: int = range
|
||||
|
||||
results: list = []
|
||||
|
||||
result: list = [None, None]
|
||||
for r in self.ranges:
|
||||
if r.source_start >= start:
|
||||
|
||||
result[0] = r.target_start
|
||||
|
||||
if r.source_end <= end:
|
||||
result[1] = r.target_end
|
||||
|
||||
if result[0] and result[1]:
|
||||
results.append(result)
|
||||
result = []
|
||||
|
||||
def main() -> None:
|
||||
with open(FILE_PATH, 'r') as f:
|
||||
contents = f.read().split('\n')
|
||||
|
||||
# Setup
|
||||
seeds: list[int] = []
|
||||
maps: dict[str, Conversion] = {}
|
||||
maps["seed-to-soil"] = Conversion()
|
||||
maps["soil-to-fertilizer"] = Conversion()
|
||||
maps["fertilizer-to-water"] = Conversion()
|
||||
maps["water-to-light"] = Conversion()
|
||||
maps["light-to-temperature"] = Conversion()
|
||||
maps["temperature-to-humidity"] = Conversion()
|
||||
maps["humidity-to-location"] = Conversion()
|
||||
|
||||
current_conversion: str = ""
|
||||
|
||||
# Parse the file
|
||||
for index, line in enumerate(contents):
|
||||
if index == 0:
|
||||
seeds_list: list[str] = line.split(": ")[1].split()
|
||||
for seed in seeds_list:
|
||||
seeds.append(int(seed))
|
||||
print(f"Seeds: {seeds}")
|
||||
continue
|
||||
|
||||
if not line:
|
||||
continue
|
||||
|
||||
if not line[0].isdigit():
|
||||
current_conversion = line[:-5]
|
||||
print(f"Current conversion: {current_conversion}")
|
||||
continue
|
||||
|
||||
nums: list[int] = list(map(lambda x: int(x), line.split()))
|
||||
|
||||
temp = ConversionRange(nums[0], nums[1], nums[2])
|
||||
print(temp)
|
||||
maps[current_conversion].ranges.append(temp)
|
||||
|
||||
# Convert the seeds
|
||||
lowest_location: float = float('inf')
|
||||
for seed in seeds:
|
||||
temp = seed
|
||||
for key, value in maps.items():
|
||||
print(f"Mapping {temp} with {key}")
|
||||
temp = value.convert(temp)
|
||||
|
||||
if temp < lowest_location:
|
||||
lowest_location = temp
|
||||
print(f"Location: {temp}")
|
||||
|
||||
print(f"Lowest location: {lowest_location}")
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
class Range:
|
||||
start: int
|
||||
end: int
|
||||
|
||||
def __init__(self, s: int, e: int):
|
||||
self.start = s
|
||||
self.end = e
|
||||
|
||||
def contains(self, key) -> tuple | None:
|
||||
start, end = (key.start, key.end)
|
||||
|
||||
if start > self.end or end <= self.start:
|
||||
return None
|
||||
|
||||
start_value = start if self.start <= start and start <= self.end else self.start
|
||||
end_value = end if self.end >= end and end >= self.start else self.end
|
||||
|
||||
return Range(start_value, end_value)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return f'({self.start}, {self.end})'
|
||||
|
||||
|
||||
|
||||
r = Range(1, 5)
|
||||
r2 = Range(2, 3)
|
||||
|
||||
print(r.contains(r2))
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
seeds: 79 14 55 13
|
||||
|
||||
seed-to-soil map:
|
||||
50 98 2
|
||||
52 50 48
|
||||
|
||||
soil-to-fertilizer map:
|
||||
0 15 37
|
||||
37 52 2
|
||||
39 0 15
|
||||
|
||||
fertilizer-to-water map:
|
||||
49 53 8
|
||||
0 11 42
|
||||
42 0 7
|
||||
57 7 4
|
||||
|
||||
water-to-light map:
|
||||
88 18 7
|
||||
18 25 70
|
||||
|
||||
light-to-temperature map:
|
||||
45 77 23
|
||||
81 45 19
|
||||
68 64 13
|
||||
|
||||
temperature-to-humidity map:
|
||||
0 69 1
|
||||
1 0 69
|
||||
|
||||
humidity-to-location map:
|
||||
60 56 37
|
||||
56 93 4
|
||||
Reference in new issue
Block a user