day 5 part 1 done
This commit is contained in:
parent
1404882eb0
commit
71165debb0
6 changed files with 358 additions and 0 deletions
98
day5/day5a.c
Normal file
98
day5/day5a.c
Normal file
|
@ -0,0 +1,98 @@
|
|||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#define SEEDS 20
|
||||
|
||||
void remap(FILE *input, char *row, int *seedArray, int seed, int remaps);
|
||||
|
||||
// för varje seed:
|
||||
// är den i rangen seed to soil? if so, = soil + i
|
||||
// testa varje range så och reassigna on hit, sen spara i location array
|
||||
// Lägsta i array är svaret
|
||||
|
||||
// vi har:
|
||||
// lista med seed
|
||||
// 7 maps
|
||||
|
||||
// lagra seeds i array
|
||||
// array som säger om seed är omvandlat i current map
|
||||
// för varje rad i map, kolla varje seed (om det ej omvandlat)
|
||||
// vid nästa map, nolla omvandlatArray
|
||||
|
||||
int main()
|
||||
{
|
||||
unsigned int seedArray[SEEDS] = {0};
|
||||
char row[250];
|
||||
char c;
|
||||
|
||||
FILE *input;
|
||||
input = fopen("./input", "r");
|
||||
|
||||
int seed = 0;
|
||||
while (c = fgetc(input) != '\n') {
|
||||
while (isdigit(c = fgetc(input))) {
|
||||
seedArray[seed] = seedArray[seed] * 10 + (c - '0');
|
||||
}
|
||||
fseek(input, -1L, SEEK_CUR); // currently stepping two steps forward so yeah
|
||||
if (seedArray[seed] != 0) seed++;
|
||||
}
|
||||
// for (int i = 0; i < seed; i++)
|
||||
// printf("Seed %d: %u\n", i + 1, seedArray[i]);
|
||||
|
||||
int remaps = 1;
|
||||
while (fgets(row, 250, input) != NULL) {
|
||||
if (strstr(row, "map")) {
|
||||
remap(input, row, seedArray, seed, remaps);
|
||||
remaps++;
|
||||
}
|
||||
}
|
||||
|
||||
int i = 0;
|
||||
int min = UINT_MAX;
|
||||
for (; i < seed; i++) {
|
||||
if (seedArray[i] < min) min = seedArray[i];
|
||||
printf("Seed %d: %u\n", i + 1, seedArray[i]);
|
||||
}
|
||||
printf("%u\n", min);
|
||||
}
|
||||
|
||||
void remap(FILE *input, char *row, int *seedArray, int seed, int remaps)
|
||||
{
|
||||
int seedDone[20] = {0};
|
||||
while (fgets(row, 250, input) != NULL && row[0] != '\n') {
|
||||
unsigned int i = 0;
|
||||
while (!isdigit(row[i])) i++;
|
||||
|
||||
unsigned int dest = 0;
|
||||
for (; isdigit(row[i]); i++) {
|
||||
dest = dest * 10 + row[i] - '0';
|
||||
}
|
||||
while (!isdigit(row[i])) i++;
|
||||
unsigned int source = 0;
|
||||
for (; isdigit(row[i]); i++) {
|
||||
source = source * 10 + row[i] - '0';
|
||||
}
|
||||
while (!isdigit(row[i])) i++;
|
||||
unsigned int range = 0;
|
||||
for (; isdigit(row[i]); i++) {
|
||||
range = range * 10 + row[i] - '0';
|
||||
}
|
||||
range -= 1;
|
||||
// printf("Dest: %u, Source: %u, range: %u\n", dest, source, range + 1);
|
||||
for (int i = 0; i < seed; i++) {
|
||||
if (seedDone[i] == 0 && seedArray[i] >= source && seedArray[i] <= source + range) {
|
||||
// printf("Seed %d: %u is in range, moving to %u\n", i + 1, seedArray[i], dest + seedArray[i] - source);
|
||||
seedArray[i] = dest + seedArray[i] - source;
|
||||
// printf("Seed %d: %u\n", i + 1, seedArray[i]);
|
||||
seedDone[i] = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// printf("Remap %d done.\n", remaps);
|
||||
}
|
187
day5/input
Normal file
187
day5/input
Normal file
|
@ -0,0 +1,187 @@
|
|||
seeds: 3121711159 166491471 3942191905 154855415 3423756552 210503354 2714499581 312077252 1371898531 165242002 752983293 93023991 3321707304 21275084 949929163 233055973 3626585 170407229 395618482 226312891
|
||||
|
||||
seed-to-soil map:
|
||||
522866878 679694818 556344137
|
||||
1206934522 1236038955 57448427
|
||||
2572695651 3529213882 270580892
|
||||
1082547209 29063229 124387313
|
||||
2080101996 2392534586 180161065
|
||||
1079211015 153450542 3336194
|
||||
2466695431 2286534366 106000220
|
||||
1887791814 2094224184 192310182
|
||||
2843276543 2572695651 956518231
|
||||
2341707296 1887791814 124988135
|
||||
1264382949 156786736 473875833
|
||||
67220304 1331644457 455646574
|
||||
3903217571 3799794774 267521683
|
||||
2260263061 2012779949 81444235
|
||||
1738258782 630662569 49032249
|
||||
29063229 1293487382 38157075
|
||||
3799794774 4067316457 103422797
|
||||
|
||||
soil-to-fertilizer map:
|
||||
69994133 1665188283 300635345
|
||||
0 1965823628 36826481
|
||||
2222587532 2553838094 476943506
|
||||
2929387922 3030781600 856348250
|
||||
4182440411 2441311209 112526885
|
||||
36826481 2002650109 33167652
|
||||
2044606970 4116986734 177980562
|
||||
1815516279 549395220 220301482
|
||||
1186435707 0 549395220
|
||||
916609638 1315676862 269826069
|
||||
3785736172 2044606970 396704239
|
||||
2699531038 3887129850 229856884
|
||||
1735830927 1585502931 79685352
|
||||
370629478 769696702 545980160
|
||||
|
||||
fertilizer-to-water map:
|
||||
2485494684 3430237839 78539769
|
||||
2045426403 2253341567 99573285
|
||||
290571869 0 280695139
|
||||
3540352207 2045426403 63912525
|
||||
2879366909 3356847577 67075608
|
||||
868611408 858081124 224160766
|
||||
2304858397 2525185867 55003581
|
||||
189640733 280695139 100931136
|
||||
2144999688 3983682880 159858709
|
||||
3374818325 3858616265 14108175
|
||||
3604264732 2580189448 427645906
|
||||
1730244179 535856806 2894582
|
||||
4242091162 3634410314 52876134
|
||||
4031910638 3872724440 110958440
|
||||
1092772174 1116784935 90115688
|
||||
1182887862 381626275 154230531
|
||||
4149183732 3263940147 92907430
|
||||
4142869078 3423923185 6314654
|
||||
571267008 728392121 129689003
|
||||
3315918322 2352914852 58900003
|
||||
2359861978 3508777608 125632706
|
||||
2735364270 2109338928 144002639
|
||||
2946442517 2411814855 113371012
|
||||
1733138761 1082241890 34543045
|
||||
700956011 1600026409 167655397
|
||||
3059813529 3041876971 222063176
|
||||
2564034453 3687286448 171329817
|
||||
3281876705 3007835354 34041617
|
||||
0 538751388 189640733
|
||||
3388926500 4143541589 151425707
|
||||
1337118393 1206900623 393125786
|
||||
|
||||
water-to-light map:
|
||||
66525849 932008802 34502691
|
||||
1231709999 161981088 108836128
|
||||
4050378444 3046032039 195065028
|
||||
1188304980 324179540 43405019
|
||||
0 95455239 66525849
|
||||
1134942656 270817216 53362324
|
||||
4015087939 2401779423 35290505
|
||||
3174436586 2144628864 257150559
|
||||
3688283374 3968162731 326804565
|
||||
101028540 367584559 564424243
|
||||
665452783 23428765 72026474
|
||||
2144628864 2437069928 302742058
|
||||
1340546127 0 23428765
|
||||
737479257 1714174561 397463399
|
||||
3431587145 2789335810 256696229
|
||||
4245443472 2739811986 49523824
|
||||
1363974892 966511493 747663068
|
||||
2447370922 3241097067 727065664
|
||||
|
||||
light-to-temperature map:
|
||||
3188351957 4202865263 58820659
|
||||
583430260 717912118 192120954
|
||||
1044551258 2246397764 71032709
|
||||
3109547837 4261685922 33281374
|
||||
1678878772 1586709546 87694921
|
||||
1115583967 3604496785 152969541
|
||||
3142829211 2200875018 45522746
|
||||
2103724421 1412959073 173750473
|
||||
3094755823 2836912864 14792014
|
||||
4233716778 2851704878 61250518
|
||||
1809783323 3254776949 293941098
|
||||
570222212 2097755032 13208048
|
||||
34744215 693464 72237295
|
||||
1773265141 2502078476 36518182
|
||||
775551214 4072807084 98261716
|
||||
2718819720 511651563 117721319
|
||||
873812930 4171068800 31796463
|
||||
905609393 3933865219 138941865
|
||||
373474927 3892288779 41576440
|
||||
3040218555 3117948789 54537268
|
||||
2397118702 2538596658 1887839
|
||||
0 72930759 34744215
|
||||
2277474894 1316613368 93303271
|
||||
370955311 1409916639 2519616
|
||||
1359408316 3757466326 134822453
|
||||
2370778165 306806837 1167210
|
||||
220512052 1412436255 522818
|
||||
3335711852 1674404467 423350565
|
||||
335173455 2743397480 35781856
|
||||
3900016435 982913025 333700343
|
||||
2399006541 2540484497 202912983
|
||||
3816795945 2110963080 83220490
|
||||
415051367 910033072 72879953
|
||||
2663040982 3548718047 55778738
|
||||
3759062417 2779179336 57733528
|
||||
3247172616 629372882 88539236
|
||||
1494230769 2317430473 184648003
|
||||
1766573693 2194183570 6691448
|
||||
2601919524 245685379 61121458
|
||||
2371945375 220512052 25173327
|
||||
221034870 3003810204 114138585
|
||||
2836541039 307974047 203677516
|
||||
487931320 3172486057 82290892
|
||||
106981510 0 693464
|
||||
1268553508 2912955396 90854808
|
||||
|
||||
temperature-to-humidity map:
|
||||
1844491325 2716144828 118858329
|
||||
1004942401 2971501799 229549152
|
||||
696973964 238546929 19842755
|
||||
716816719 119302258 119244671
|
||||
444146335 2339344684 80152617
|
||||
3752420807 853580623 112964826
|
||||
3736479208 2933101125 15941599
|
||||
1822411864 805752927 11014046
|
||||
3183816206 2835003157 98097968
|
||||
3538508914 2576089466 88076349
|
||||
1833425910 816766973 11065415
|
||||
3865385633 2664165815 51979013
|
||||
1706894195 1592117663 89769434
|
||||
2892814110 3354360228 291002096
|
||||
2450334080 3645362324 65003481
|
||||
3934652728 3721018678 66888233
|
||||
3285923313 2419497301 85776839
|
||||
3917364646 2257358228 17288082
|
||||
3371700152 2090549466 166808762
|
||||
524298952 633077915 172675012
|
||||
1600852292 966545449 106041903
|
||||
2283983708 620036820 13041095
|
||||
2176983704 2274646310 64698374
|
||||
2515337561 1072587352 32448957
|
||||
846714263 1105036309 42935019
|
||||
3719859664 603417276 16619544
|
||||
2547786518 258389684 345027592
|
||||
0 1147971328 444146335
|
||||
1963349654 3787906911 213634050
|
||||
836061390 3710365805 10652873
|
||||
889649282 0 115293119
|
||||
2241682078 1681887097 42301630
|
||||
3281914174 115293119 4009139
|
||||
2297024803 3201050951 153309277
|
||||
1796663629 827832388 25748235
|
||||
3626585263 2505274140 70815326
|
||||
1234491553 1724188727 366360739
|
||||
3697400589 2949042724 22459075
|
||||
|
||||
humidity-to-location map:
|
||||
3693038281 1946208152 169064741
|
||||
3025397429 1673895501 272312651
|
||||
2522027478 1111558812 503369951
|
||||
3862103022 3729735566 432864274
|
||||
1111558812 2115272893 1374715990
|
||||
3356676818 3489988883 239746683
|
||||
3297710080 1614928763 58966738
|
||||
2486274802 4162599840 35752676
|
||||
3596423501 4198352516 96614780
|
33
day5/input.bakeasy
Normal file
33
day5/input.bakeasy
Normal file
|
@ -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
|
20
day5/output
Normal file
20
day5/output
Normal file
|
@ -0,0 +1,20 @@
|
|||
1663131502
|
||||
3701339508
|
||||
1591272448
|
||||
971042070
|
||||
3779692809
|
||||
1373066113
|
||||
3664261935
|
||||
2396801877
|
||||
2017638440
|
||||
3700090039
|
||||
642320287
|
||||
2197425575
|
||||
3037672564
|
||||
1931439146
|
||||
1241009111
|
||||
903350816
|
||||
3402116899
|
||||
3705255266
|
||||
535088217
|
||||
896607734
|
20
day5/output.2
Normal file
20
day5/output.2
Normal file
|
@ -0,0 +1,20 @@
|
|||
1241009111
|
||||
1373066113
|
||||
1591272448
|
||||
1663131502
|
||||
1931439146
|
||||
2017638440
|
||||
2197425575
|
||||
2396801877
|
||||
3037672564
|
||||
3402116899
|
||||
3664261935
|
||||
3700090039
|
||||
3701339508
|
||||
3705255266
|
||||
3779692809
|
||||
535088217
|
||||
642320287
|
||||
896607734
|
||||
903350816
|
||||
971042070
|
BIN
day5/run
Executable file
BIN
day5/run
Executable file
Binary file not shown.
Loading…
Reference in a new issue