add 5
This commit is contained in:
Vendored
+2
-1
@@ -1,3 +1,4 @@
|
||||
{
|
||||
"typescript.tsdk": "node_modules/typescript/lib"
|
||||
"typescript.tsdk": "node_modules/typescript/lib",
|
||||
"editor.formatOnSave": true
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
import { open } from "node:fs/promises";
|
||||
|
||||
const file = await open("./inputs/5");
|
||||
|
||||
let input = (await file.readFile()).toString();
|
||||
|
||||
const seedsRegex = /^(?:seeds: )(?<seeds>(?:\d+ ?)+)/gm;
|
||||
const seeds = seedsRegex
|
||||
.exec(input)
|
||||
?.groups?.seeds?.split(" ")
|
||||
.map((e) => Number(e));
|
||||
if (seeds === undefined) throw new Error("no");
|
||||
|
||||
const mapsRegex =
|
||||
/(?<from>\w+)-to-(?<to>\w+) map:\n(?<map>(?:\d+ \d+ \d+\n?)+)/g;
|
||||
|
||||
const mappings: {
|
||||
[key: string]: {
|
||||
to: string;
|
||||
value: Array<{ origin: number; destination: number; range: number }>;
|
||||
};
|
||||
} = {};
|
||||
|
||||
let match;
|
||||
while ((match = mapsRegex.exec(input)) !== null) {
|
||||
if (match.groups === undefined) throw new Error("no2");
|
||||
mappings[match.groups.from] = {
|
||||
to: match.groups.to,
|
||||
value: match.groups.map.split("\n").map((s) => {
|
||||
const p = s.split(" ");
|
||||
return {
|
||||
origin: Number(p[1]),
|
||||
destination: Number(p[0]),
|
||||
range: Number(p[2]),
|
||||
};
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
const result = seeds.map((seed) => {
|
||||
let c = seed;
|
||||
let current = "seed";
|
||||
while (current != "location") {
|
||||
const map = mappings[current].value.find(
|
||||
(e) => e.origin <= c && e.origin + e.range > c
|
||||
);
|
||||
|
||||
if (map !== undefined) {
|
||||
c = c - map.origin + map.destination;
|
||||
}
|
||||
current = mappings[current].to;
|
||||
}
|
||||
return c;
|
||||
});
|
||||
|
||||
console.log(result);
|
||||
console.log(Math.min(...result));
|
||||
@@ -0,0 +1,57 @@
|
||||
import { open } from "node:fs/promises";
|
||||
|
||||
const file = await open("./inputs/5.example");
|
||||
|
||||
let input = (await file.readFile()).toString();
|
||||
|
||||
const seedsRegex = /^(?:seeds: )(?<seeds>(?:\d+ ?)+)/gm;
|
||||
const seeds = seedsRegex
|
||||
.exec(input)
|
||||
?.groups?.seeds?.split(" ")
|
||||
.map((e) => Number(e));
|
||||
if (seeds === undefined) throw new Error("no");
|
||||
|
||||
const mapsRegex =
|
||||
/(?<from>\w+)-to-(?<to>\w+) map:\n(?<map>(?:\d+ \d+ \d+\n?)+)/g;
|
||||
|
||||
type Shifter = { origin: number; destination: number; range: number };
|
||||
|
||||
type Mapping = {
|
||||
[key: string]: {
|
||||
from: string;
|
||||
value: Array<Shifter>;
|
||||
};
|
||||
};
|
||||
const mappings: Mapping = {};
|
||||
|
||||
let match;
|
||||
while ((match = mapsRegex.exec(input)) !== null) {
|
||||
if (match.groups === undefined) throw new Error("no2");
|
||||
|
||||
mappings[match.groups.to] = {
|
||||
from: match.groups.from,
|
||||
value: match.groups.map
|
||||
.split("\n")
|
||||
.filter((e) => e != "")
|
||||
.map((s) => {
|
||||
const p = s.split(" ");
|
||||
return {
|
||||
origin: Number(p[1]),
|
||||
destination: Number(p[0]),
|
||||
range: Number(p[2]),
|
||||
};
|
||||
}),
|
||||
};
|
||||
}
|
||||
|
||||
// function intersect(val1: Shifter[], val2: Shifter[]) {
|
||||
// if(val1.origin <= val2.destination && val1.origin+val1.range )
|
||||
// }
|
||||
let current = "location";
|
||||
while (mappings[current].from != "seed") {
|
||||
let destination = mappings[mappings[current].from];
|
||||
console.log(destination);
|
||||
|
||||
// mappings[current].from = destination.from;
|
||||
}
|
||||
console.log(mappings);
|
||||
@@ -0,0 +1,209 @@
|
||||
seeds: 4088478806 114805397 289354458 164506173 1415635989 166087295 1652880954 340945548 3561206012 483360452 35205517 252097746 1117825174 279314434 3227452369 145640027 2160384960 149488635 2637152665 236791935
|
||||
|
||||
seed-to-soil map:
|
||||
3333452986 2926455387 455063168
|
||||
3222292973 1807198589 111160013
|
||||
4073195028 1120843626 221772268
|
||||
3215232741 2255546991 7060232
|
||||
1658311530 2727928910 32644400
|
||||
2680271553 1918358602 337188389
|
||||
1690955930 3973557555 28589896
|
||||
2081345351 4046183137 248784159
|
||||
2374165196 3613106716 306106357
|
||||
1553535599 2504868379 49003335
|
||||
4018850546 3919213073 54344482
|
||||
2050713919 2287201502 30631432
|
||||
3183342019 1775307867 31890722
|
||||
3975551599 2553871714 43298947
|
||||
1120843626 1342615894 432691973
|
||||
2330129510 4002147451 44035686
|
||||
1719545826 2628348978 99579932
|
||||
1819125758 3381518555 231588161
|
||||
1627133213 2597170661 31178317
|
||||
3017459942 2760573310 165882077
|
||||
3788516154 2317832934 187035445
|
||||
1602538934 2262607223 24594279
|
||||
|
||||
soil-to-fertilizer map:
|
||||
2037529808 755544791 28492175
|
||||
786265521 51055407 490038659
|
||||
4209265112 3740304131 26706989
|
||||
1490754905 2631438697 34586718
|
||||
1525341623 2263058012 73974507
|
||||
1774661286 1921164897 262868522
|
||||
3007460847 4099468601 72419286
|
||||
3538443051 3849232192 250236409
|
||||
1276304180 541094066 214450725
|
||||
3913003454 3767011120 59428684
|
||||
1599316130 2497793999 133644698
|
||||
3079880133 3189897565 426082572
|
||||
716780020 784036966 69485501
|
||||
1732960828 0 41700458
|
||||
2066021983 41700458 9354949
|
||||
0 853522467 536962937
|
||||
3972432138 2920584245 236832974
|
||||
536962937 2337032519 100792490
|
||||
4272174908 3826439804 22792388
|
||||
3788679460 3615980137 124323994
|
||||
2135345922 1446730958 474433939
|
||||
637755427 2184033419 79024593
|
||||
2884381438 4171887887 123079409
|
||||
2075376932 2437825009 59968990
|
||||
4235972101 2884381438 36202807
|
||||
2609779861 1390485404 56245554
|
||||
3505962705 3157417219 32480346
|
||||
|
||||
fertilizer-to-water map:
|
||||
2573961911 2642757339 200829754
|
||||
422488483 458127884 156893128
|
||||
2774791665 2843587093 21928567
|
||||
579381611 0 138939
|
||||
1694098304 2191562282 184724096
|
||||
3947192080 3245704277 276559964
|
||||
972559115 1385376838 44883044
|
||||
3491468609 3875486597 235886348
|
||||
1207641311 1359799603 25577235
|
||||
2301984556 4185647450 96253759
|
||||
3943275635 3001826942 3916445
|
||||
901810658 387379427 70748457
|
||||
285678041 1226326727 103026012
|
||||
0 775143786 192216167
|
||||
3304976053 3522264241 95407569
|
||||
2086394179 1904419031 20334668
|
||||
2797747442 1694098304 113068417
|
||||
2398238315 1924753699 175723596
|
||||
4223752044 2376286378 71215252
|
||||
192216167 1132864853 93461874
|
||||
392041619 1329352739 30446864
|
||||
736305758 967359953 44331476
|
||||
3740421044 2865515660 136311282
|
||||
388704053 771806220 3337566
|
||||
2796720232 4111372945 1027210
|
||||
3727354957 4281901209 13066087
|
||||
1017442159 197180275 190199152
|
||||
1878822400 4112400155 6703986
|
||||
3400383622 2100477295 91084987
|
||||
780637234 1011691429 121173424
|
||||
1885526386 3674618804 200867793
|
||||
2910815859 3617671810 56946994
|
||||
2967762853 1807166721 97252310
|
||||
3065015163 3005743387 239960890
|
||||
1233218546 138939 197041336
|
||||
2106728847 2447501630 195255709
|
||||
579520550 615021012 156785208
|
||||
3876732326 4119104141 66543309
|
||||
|
||||
water-to-light map:
|
||||
1713604757 2608139445 8097487
|
||||
416889953 2083343492 58961768
|
||||
1343227622 1417788674 170490633
|
||||
2121243443 2549534549 51843959
|
||||
3366419885 3580448237 174948163
|
||||
2173087402 0 443149530
|
||||
3030450490 4139087067 155880229
|
||||
3186330719 3883823748 51661818
|
||||
1513718255 1282808215 134980459
|
||||
1075515973 1815631843 267711649
|
||||
967716956 443149530 107799017
|
||||
3237992537 3755396400 128427348
|
||||
3825109759 3262058246 318389991
|
||||
879862906 954959732 80165960
|
||||
6760937 1035125692 247682523
|
||||
2953403197 3185010953 77047293
|
||||
960028866 2541846459 7688090
|
||||
4143499750 3033543407 151467546
|
||||
2749801696 3935485566 203601501
|
||||
1648698714 1750725800 64906043
|
||||
254443460 1588279307 162446493
|
||||
475851721 550948547 404011185
|
||||
3541368048 2749801696 283741711
|
||||
1721702244 2142305260 399541199
|
||||
0 2601378508 6760937
|
||||
|
||||
light-to-temperature map:
|
||||
72585995 0 6987206
|
||||
3613700480 3337307014 262222114
|
||||
3107305066 2641039316 68521519
|
||||
1346057837 1130104209 332811266
|
||||
1789578875 2709560835 110508022
|
||||
1678869103 3335693412 1613602
|
||||
4221249401 2413595122 73717895
|
||||
1283830508 2273268756 62227329
|
||||
2654986608 3645211688 211881713
|
||||
1900086897 3599529128 45682560
|
||||
866613618 2487313017 153726299
|
||||
1945769457 1462915475 224589729
|
||||
2170359186 2335496085 78099037
|
||||
1020339917 866613618 263490591
|
||||
3175826585 3857093401 437873895
|
||||
1680482705 3226597242 109096170
|
||||
2866868321 1687505204 240436745
|
||||
3875922594 1927941949 345326807
|
||||
2248458223 2820068857 406528385
|
||||
0 6987206 72585995
|
||||
|
||||
temperature-to-humidity map:
|
||||
688557414 35571309 205276783
|
||||
1344556852 4212560627 61250968
|
||||
3617960922 3570339727 35153299
|
||||
1798596843 4122755682 89804945
|
||||
968601622 2840504203 289938389
|
||||
3674269922 3395595703 19024769
|
||||
2596309702 1911252584 80861179
|
||||
2438263727 2065549417 13406592
|
||||
1405807820 1518463561 392789023
|
||||
617995054 866387965 70562360
|
||||
1258540011 2078956009 86016841
|
||||
3395085595 2301904832 149439673
|
||||
4212818712 3130442592 82148584
|
||||
1888401788 968601622 549861939
|
||||
3005925897 2451344505 389159698
|
||||
3544525268 1992113763 73435654
|
||||
929405506 858843146 7544819
|
||||
3868591817 3605493026 188507640
|
||||
3653114221 4273811595 21155701
|
||||
893834197 0 35571309
|
||||
2588602301 3387888302 7707401
|
||||
2677170881 3794000666 328755016
|
||||
4057099457 3414620472 155719255
|
||||
0 240848092 617995054
|
||||
3693294691 3212591176 175297126
|
||||
2451670319 2164972850 136931982
|
||||
|
||||
humidity-to-location map:
|
||||
3586928302 2065932610 149219519
|
||||
709155282 323064563 19167863
|
||||
1359021687 3937987878 39697029
|
||||
4009761511 2966667063 138486244
|
||||
300370292 619673957 122108798
|
||||
1230327417 992326977 128694270
|
||||
1524755905 3624589590 105592616
|
||||
3736147821 2637585432 174385627
|
||||
1068077767 3730182206 162249650
|
||||
3120252652 1674438017 80200651
|
||||
434861301 1581164273 93273744
|
||||
3489613286 225749547 97315016
|
||||
2210476726 741782755 111642249
|
||||
1630348521 1811987842 123678973
|
||||
1456067890 2488658901 68688015
|
||||
2890604013 917374342 74952635
|
||||
2638888586 853425004 63949338
|
||||
528135045 2557346916 80238516
|
||||
2440002559 2215152129 198886027
|
||||
608373561 3105153307 100781721
|
||||
3910533448 342232426 99228063
|
||||
4148247755 3892431856 45556022
|
||||
2702837924 4107201207 187766089
|
||||
1754027494 1121021247 298601872
|
||||
2322118975 1948049026 117883584
|
||||
889864299 441460489 178213468
|
||||
3200453303 3559871086 36387444
|
||||
225749547 2414038156 74620745
|
||||
422479090 1935666815 12382211
|
||||
728323145 1419623119 161541154
|
||||
1398718716 1754638668 57349174
|
||||
2052629366 3977684907 129516300
|
||||
4193803777 3458707567 101163519
|
||||
2182145666 3596258530 28331060
|
||||
2965556648 2811971059 154696004
|
||||
3236840747 3205935028 252772539
|
||||
@@ -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