123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- import { Inspect, LoadInput } from "../common.ts";
- import { ParseInput, MapSeed, isSeedMapArray } from "./5_common.ts"
- const tests = [
- "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",
- ];
- const input = await LoadInput(5);
- // Parse the input
- const maps = ParseInput(input);
- // Initialize closest location ID
- let closestLocationID = Number.MAX_SAFE_INTEGER;
- // Parse & map the seed ranges
- do {
- console.log("Seed ranges remaining: ", maps.Seeds.length);
-
- const seedRangeStart = maps.Seeds.shift() || -1;
- const seedRangeEnd = maps.Seeds.shift() || -1;
- if (seedRangeStart == -1 || seedRangeEnd == -1) {
- throw new Error("seeds out of range!");
- }
- for(let i = 0; i < seedRangeEnd; i++) {
- const seedMap = MapSeed(seedRangeStart + i, maps);
- if (seedMap && seedMap.LocationID < closestLocationID) { closestLocationID = seedMap.LocationID; }
- }
- } while (maps.Seeds.length);
- console.log(`The lowest location ID found is: ${closestLocationID}`);
|