summaryrefslogtreecommitdiff
path: root/Advent-of-Code-2021/AOC-15
diff options
context:
space:
mode:
authorkartofen <mladenovnasko0@gmail.com>2022-07-31 11:46:17 +0300
committerkartofen <mladenovnasko0@gmail.com>2022-07-31 11:46:17 +0300
commitaec1c07260257ba7c28eff53f422ddb7daaf316a (patch)
tree88b279cb646bad60c3d55bdd01bb323065fca519 /Advent-of-Code-2021/AOC-15
Big Bang
Diffstat (limited to 'Advent-of-Code-2021/AOC-15')
-rwxr-xr-xAdvent-of-Code-2021/AOC-15/aoc-15bin0 -> 16712 bytes
-rw-r--r--Advent-of-Code-2021/AOC-15/aoc-15.c128
-rw-r--r--Advent-of-Code-2021/AOC-15/aoc-15.c~0
-rw-r--r--Advent-of-Code-2021/AOC-15/input.txt100
-rw-r--r--Advent-of-Code-2021/AOC-15/input.txt~0
-rw-r--r--Advent-of-Code-2021/AOC-15/sample.txt10
-rw-r--r--Advent-of-Code-2021/AOC-15/sample.txt~0
7 files changed, 238 insertions, 0 deletions
diff --git a/Advent-of-Code-2021/AOC-15/aoc-15 b/Advent-of-Code-2021/AOC-15/aoc-15
new file mode 100755
index 0000000..3fa17a1
--- /dev/null
+++ b/Advent-of-Code-2021/AOC-15/aoc-15
Binary files differ
diff --git a/Advent-of-Code-2021/AOC-15/aoc-15.c b/Advent-of-Code-2021/AOC-15/aoc-15.c
new file mode 100644
index 0000000..c7e1157
--- /dev/null
+++ b/Advent-of-Code-2021/AOC-15/aoc-15.c
@@ -0,0 +1,128 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#define min(a, b) (((a) < (b)) ? (a) : (b))
+
+#if 0
+ #define N 1
+#else
+ #define N 5
+#endif
+
+
+// part 2 doesnt work with input for some reason bruh
+#if 1
+ #define FILE_P "sample.txt"
+ #define T_CAP 10 * N
+ #define T_CAP_S 10
+#else
+ #define FILE_P "input.txt"
+ #define T_CAP 100 * N
+ #define T_CAP_S 100
+#endif
+
+int table[T_CAP][T_CAP];
+
+void ParseInput(char *filepath)
+{
+ char ch;
+ FILE *fp;
+ fp = fopen(filepath, "r");
+
+ if(fp == NULL)
+ {
+ fprintf(stderr, "ERROR: something with file idk fuck you");
+ exit(EXIT_FAILURE);
+ }
+
+ int i = 0;
+ int j = 0;
+ while((ch = fgetc(fp)) != EOF)
+ {
+ if(ch == '\n') { i += 1; j = 0; continue; }
+
+ table[i][j] = (ch - '0');
+ j += 1;
+ }
+
+ fclose(fp);
+}
+
+void FindRisk()
+{
+ // dont add to total risk
+ table[0][0] = 0;
+
+ for(int i=1; i<T_CAP; i++) table[i][0] += table[i-1][0];
+ for(int j=1; j<T_CAP; j++) table[0][j] += table[0][j-1];
+
+ for(int i=1; i<T_CAP; i++)
+ {
+ for(int j=1; j<T_CAP; j++)
+ {
+ table[i][j] += min(table[i][j-1], table[i-1][j]);
+ }
+ }
+
+}
+
+void Part1()
+{
+ ParseInput(FILE_P);
+ FindRisk();
+ printf("PART1: %d\n", table[T_CAP-1][T_CAP-1]);
+}
+
+void ReconstructMap()
+{
+ for(int j=0; j<T_CAP_S; j++)
+ for(int n=T_CAP_S; n<T_CAP; n+=T_CAP_S)
+ for(int i=0; i<T_CAP_S; i++)
+ {
+ if(table[i+n-T_CAP_S][j] != 9)
+ table[i+n][j] = table[i+n-T_CAP_S][j] + 1;
+ else
+ table[i+n][j] = 1;
+ }
+
+ for(int i=0; i<T_CAP; i++)
+ for(int n=T_CAP_S; n<T_CAP; n+=T_CAP_S)
+ for(int j=0; j<T_CAP_S; j++)
+ {
+ if(table[i][j+n-T_CAP_S] != 9)
+ table[i][j+n] = table[i][j+n-T_CAP_S] + 1;
+ else
+ table[i][j+n] = 1;
+ }
+}
+
+void Part2()
+{
+ ParseInput(FILE_P);
+ ReconstructMap();
+ FindRisk();
+ printf("PART2: %d\n", table[T_CAP-1][T_CAP-1]);
+}
+
+void PrintTable()
+{
+ for(int i=0; i<T_CAP; i++)
+ {
+ for(int j=0; j<T_CAP; j++)
+ {
+ printf("%d", table[i][j]);
+ }
+ printf("\n");
+ }
+}
+
+int main(void)
+{
+ memset(table, 0, sizeof(table));
+ // Part1();
+ Part2();
+
+ return 0;
+}
+
diff --git a/Advent-of-Code-2021/AOC-15/aoc-15.c~ b/Advent-of-Code-2021/AOC-15/aoc-15.c~
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Advent-of-Code-2021/AOC-15/aoc-15.c~
diff --git a/Advent-of-Code-2021/AOC-15/input.txt b/Advent-of-Code-2021/AOC-15/input.txt
new file mode 100644
index 0000000..d8f5dfd
--- /dev/null
+++ b/Advent-of-Code-2021/AOC-15/input.txt
@@ -0,0 +1,100 @@
+4249856395422795894919869133487611581179923326874763428673979547991221931142777981153991369468629849
+5812974178739823463799939791688998895568796557798392761499941349143539572865883254186633218867928826
+3699989976298596286299499129934993241824395574879938998946914116375199242199151918863674914554714898
+5682435936794718871685718386458294198391116125679589438794914499278679393779734596558953699438589518
+7681197997388219696918569664119968498599547892968929425479817979816979144947916716989874825679487436
+9981166198272997899142698141878643123757515999788822988261499197559193945291512682763935126815448215
+8849481991861599951293183728419792414164347979985169641698899853377259811688489269959429131918919179
+3146684963669199195628973847379928251333566129941616877139631993381755512697185555441659879412994594
+3547126819874919985836685298322994247998729919239243539198191229787198622919819681997288193865811343
+9349351519955698988787949741387799819991699489867797184914918979814262987979129782223984139929928681
+8556723973779719572644889927179188961591428979299692841637999459259999966917347419979917999989799429
+3999593212698784221858498479516759888388689669747143292191959989949179914898181617598363288863529673
+5428799869888883819715648841341382669887652713779547744299157935892529712964887994849791591489974817
+4165839572399389794126943784626997119389378141921327523621283992924955951342126919499984987328936781
+5918974268979888998966997691965798988519797198467567586265175937858739845974399727152913189899879868
+9918963885878999715999979758376917418219222841971748992311279797791196671188181557777929939979528569
+8799414739499371349792499832971671794937933561999619313535199597778778121557962319178399272824346194
+8129974849671628977826913868589128781917962416787192199363828395129743811293383873718935942898484543
+3291978181898819892998112489871391737197991911931592663875989291645713999792932894185783865998135615
+9769786394195196445418935989967399989919987914119824796623857976492949168247992292316817898188699298
+9695549579996919793895372134169684298121551587731119812488691243992189122596899959128989294926989913
+9731949899392599399916551967299296355733976428888499681995484999191298894166112999923884965685649798
+1379132844766698587968789875949841895175974769991975485998386847244993897999111588556816596847214788
+9995799248928516994491995979579982981536188627577229466616615274772189816183363386951765979225171476
+8119319184142479165692338899796498149599699117488698945689444844778989694876998388519355148181719697
+3969928779117129139766611778112739189981889899228317887833728779584723699986312572133539799467285917
+2828571791973431936329179952568811618879743616915382919867751789598712817617446745199253856716911941
+7877882851638951395858496388153888963667598177681792531864174354491939941593119389999293999633917577
+1741348787717975984768578798922563489939392171468619989248936559712179995116534277937799235981547597
+8994795857858489999558911549196942878698886391795462739582595987979187765281397182149953478248998829
+8612529258832189244164522719918668148697754189678792826892293447659399729274986899475955657297984999
+7979418978468149867435687251779984869732288683757891423519948382875198942891979899776225467769271611
+3818925865589486991983914829611968896197719999391296298299521911997968172695633992575991389714563593
+9939187896519664586181929999697892324492792718919161519713861732615919297932929685698963679515326392
+9189845839678777775364697497289839263197942629799278637458319429822229529989343196991899576448897282
+9999639983298888593994869989699624152112558163996649649924665617939567974367965998835369235385845781
+8485297496991559289188422661599882518896282381858287969539917799964977429172882227811329528518187389
+9923859471976698253169673595135694645862699839964421741799449165978835991198979991891434697214818847
+9948337779794835971121969995653787569496217989663848398739231628499247383942859555527489595679787897
+9614621899899158259613995889586798538683918139138198111781714698794348571485366962113966939699643589
+1886264968913257167733217995794996991471499861875887994593877487186697874771821988536581746639569567
+9996998152929759225939499689998449399761985591467834853824558991322485728674388927966892986878819319
+9898162778195791515947756898474977179296647585999979756996981928598799139892651743929891711498489794
+2521299845948789489447298917175981779999984794295846999894374299918878915896995183978239599211199661
+3595238712479964219979978796399416285395878319927814389893184733214219892965998974989825195778431936
+2235456515733797949374988899892819815718692811711999741978953215792979895857589889485595198499933267
+1197979995691548749958849994592898117171521989543481689999898771166569678234761678582598848227891693
+6216285194657981924762962276999868669495239816738592141587889187963869774297156591399718859932485599
+4729519687582299378618117855237999797646997991843389649799259193169319238188911375949387726963679678
+9699419763993869239747599293979686119998329461424981594878199858799991786943919119924945895985515374
+5917996721981481869846954978898329942115828969756258675677679711875328179436699932532229987171169929
+7229157819969968259887444794288923399898267871298685198291217856595548347212555983111245182519289622
+9941195813129393544872257827938956788461327756591766941724841646918922553881862784891489959867389928
+8479286666256699729946931949971218817964289363968557999375893759943919891576159694877195239993489148
+5189737855542763417865693998141987771991218843271999857384919975699659994988779213888396912127939755
+5829249497186735715873851983779438136179792549877615899657346513899789927819449917872492988915513982
+6893461933919197988858287721313611812883946878115312372236989924698848988818298419696991695398125941
+6981819519985951199181939989475291951792185935616749128365399541588872686782591994295847959591392931
+7988629179489397799986811211539191291919253927863868887948841837793918643181962412676745991232121578
+5889916119249763577671931536771981885869515736589522848999798153991769949974999631378632167199887678
+9893498949812711525997272863949911589719196319429992823161587263989111998263931884594518988198746153
+6167489848782461731786755137947748897385171725523188729519395821564894154311747791864617427287926885
+1284879221869544119521638879871365523816995929979939483888749839719816469311148686844482791986117755
+4617558896994997356988295927288939978311852269226941898983267192735959576936969989579628535528783519
+5328888897937299985799899978919859582992981919818841999199494771499878669927759686618478946895944119
+6799938769339968858662394789696395769769575687756577828218986197652972952814799386756962996181892597
+9396911993551199899798629969782451326725698246878288812846813423295351841296547341338696917479175299
+8998397898488795919859127962748999922875998559197478977986192197254779199892998169999599176629148878
+1698547699914798869767429873945711593683922969939799919274119396933311939635974962783917832779918579
+8773297884249519189999647199932138888596519893944669261146627181688998288918962987398761891458879884
+5661719599479729158986561758999787569799247991581291493981747289118938848919798944839816176679395936
+9819441791329173937924877935925271972592729118224733234158273767899274195899119793821988798684414696
+1976289898791262299218117985854188291999988166561946723974852936794841371689495873895293179648555216
+9723987778468774982999879135869177783838973792981148981488979249865929898395999487197993391716979759
+1177899997181866344793594917459353978963997881815188848687916378799676376889949425869917561752649758
+9791868299666371298719945725279668482196145817963941526858953389928439799189979599987117288975594221
+9359479864494253699797539169919312739992899782984267865929872973278316996551116989646898578889798559
+2891458316689974817533795738749516416557382959989231868945595215936673184172899784699156791788186319
+3197871588419391799499768999958793419827795378639897913112989895282789729517678369821971988591168789
+3128895611274175995969789557139191499997198995898179681198268479688712943414819511197717969357964626
+8894829141789688146813983655599262175354512492811217287197518971727198974788999775881793393394664199
+6989187141894459991973787674231495975898898321231239587159329169888699482823813357919299199727591361
+5291418199993963928598629179855771924331332887583129988192175911928891699934755817621873135693191816
+9859979117149771714936925976542992919833772828551725982321627568959639165547556486133816386958767691
+7859228193989921397351284929914697967294416985799189145628697417412211943669121428893746928296129853
+9898681974164499972995857666974959138563814594959416796689799455999579812615141516926348999849199192
+3718388972799194318442969794235896693965351819955961988597649825892827718431384296684438269296581369
+6622814526191793264982158196814969278991591173839699792937584466991496599918911981477179793167467286
+9979379866996693519416698914822874331128813255572798589585921254251617789813794989743747235329888595
+1797898211694565884562549271126691989581781692389727679449696138934914999198975329972191479272399949
+8799526921898877188579896888615687919221936817161219171496896799791784217996429736635848912899357959
+3998179987191983936537841259615889646999196799579578519955782169872772733999838687699675879992385199
+4629983158488678918339598918897184289885199997966199238946856787429929894529981431432825472899789379
+2648419335213961853594831348897955886326266994947879975892927267713419578719291698994997922172724295
+4791456616384992968619169989914284879576442418663919488293715173289682167949877799818988158798898697
+8231746913997992473892883523293984991882222989389687618931693321291896977659253682566976938919319772
+8791786476374176864813358771936196161691499499725886199548984199739722733758439858858114991899439768
+7864649397847188893939876129989155438478439599981116718616269385899323813687798117158931299417619263
+1516286662577862992677589421596899929673339521868597254888585791795752635967517418681822599565577716
+6187189898988162537924787542999557639266889281629557986986981493311772812199877994518195163178939239
diff --git a/Advent-of-Code-2021/AOC-15/input.txt~ b/Advent-of-Code-2021/AOC-15/input.txt~
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Advent-of-Code-2021/AOC-15/input.txt~
diff --git a/Advent-of-Code-2021/AOC-15/sample.txt b/Advent-of-Code-2021/AOC-15/sample.txt
new file mode 100644
index 0000000..ab80887
--- /dev/null
+++ b/Advent-of-Code-2021/AOC-15/sample.txt
@@ -0,0 +1,10 @@
+1163751742
+1381373672
+2136511328
+3694931569
+7463417111
+1319128137
+1359912421
+3125421639
+1293138521
+2311944581
diff --git a/Advent-of-Code-2021/AOC-15/sample.txt~ b/Advent-of-Code-2021/AOC-15/sample.txt~
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Advent-of-Code-2021/AOC-15/sample.txt~