aboutsummaryrefslogtreecommitdiff
path: root/advent-of-code/2022/08
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2024-02-16 11:11:14 +0800
committerMistivia <i@mistivia.com>2024-02-16 11:11:14 +0800
commit050fa7cbfb6b7cf293fb02e06daf123b3e6af816 (patch)
treeb547869fabbbf1f1153098ef811398ed40485d0a /advent-of-code/2022/08
parente1a5304af2c35ff83819546953309764e24656d4 (diff)
delete advent of code 2022
Diffstat (limited to 'advent-of-code/2022/08')
-rw-r--r--advent-of-code/2022/08/1.c106
-rw-r--r--advent-of-code/2022/08/2.c82
-rw-r--r--advent-of-code/2022/08/input100
3 files changed, 0 insertions, 288 deletions
diff --git a/advent-of-code/2022/08/1.c b/advent-of-code/2022/08/1.c
deleted file mode 100644
index 6f69c97..0000000
--- a/advent-of-code/2022/08/1.c
+++ /dev/null
@@ -1,106 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-typedef struct {
- uint8_t *data;
- int rows;
- int columns;
- int cap;
-} Mat;
-
-int get(Mat *m, int row, int column) {
- return m->data[row * m->columns + column];
-}
-
-void set(Mat *m, int row, int column, uint8_t value) {
- m->data[row * m->columns + column] = value;
-}
-
-char buf[4096];
-
-int main() {
- Mat m;
- m.data = malloc(4096);
- m.cap = 4096;
- m.rows = 0;
- m.columns = 0;
-
-
- FILE *fp = fopen("input", "r");
- while(fgets(buf, 4096, fp)) {
- int len = strlen(buf);
- if (len <= 1) break;
- if (m.columns == 0) m.columns = len - 1;
- while (m.cap < (m.rows + 1) * m.columns) {
- m.data = realloc(m.data, m.cap * 2);
- m.cap *= 2;
- }
- memcpy(m.data + m.rows * m.columns, buf, m.columns);
- m.rows++;
- }
-
- Mat vis = m;
- vis.data = malloc(m.rows * m.columns);
- vis.cap = m.rows * m.columns;
- memset(vis.data, 0, vis.cap);
-
- // top-down scan
- for (int i = 0; i < m.columns; i++) {
- int curmax = -1;
- for (int j = 0; j < m.rows; j++) {
- if (get(&m, j, i) > curmax) {
- set(&vis, j, i, 1);
- curmax = get(&m, j, i);
- }
- }
- }
- // down-top scan
- for (int i = 0; i < m.columns; i++) {
- int curmax = -1;
- for (int j = m.rows - 1; j >= 0; j--) {
- if (get(&m, j, i) > curmax) {
- set(&vis, j, i, 1);
- curmax = get(&m, j, i);
- }
- }
- }
-
- // left-right scan
- for (int i = 0; i < m.rows; i++) {
- int curmax = -1;
- for (int j = 0; j < m.columns; j++) {
- if (get(&m, i, j) > curmax) {
- set(&vis, i, j, 1);
- curmax = get(&m, i, j);
- }
- }
- }
-
- // right-left scan
- for (int i = 0; i < m.rows; i++) {
- int curmax = -1;
- for (int j = m.columns - 1; j >= 0; j--) {
- if (get(&m, i, j) > curmax) {
- set(&vis, i, j, 1);
- curmax = get(&m, i, j);
- }
- }
- }
-
- // count
- int count = 0;
- for (int i = 0; i < m.columns; i++) {
- int curmax = -1;
- for (int j = 0; j < m.rows; j++) {
- if (get(&vis, j, i) > 0) {
- count++;
- }
- }
- }
-
- printf("%d", count);
- return 0;
-}
-
diff --git a/advent-of-code/2022/08/2.c b/advent-of-code/2022/08/2.c
deleted file mode 100644
index 7cc8432..0000000
--- a/advent-of-code/2022/08/2.c
+++ /dev/null
@@ -1,82 +0,0 @@
-#include <stdio.h>
-#include <stdint.h>
-#include <stdlib.h>
-#include <string.h>
-
-typedef struct {
- uint8_t *data;
- int rows;
- int columns;
- int cap;
-} Mat;
-
-
-
-char buf[4096];
-
-int get(Mat *m, int row, int column) {
- return m->data[row * m->columns + column];
-}
-
-int score(Mat *m, int i, int j) {
- int height = get(m, i, j);
- int s = 1;
- int count = 0;
- for (int p = i - 1; p >= 0; p--) {
- count++;
- if (get(m, p, j) >= height) break;
- }
- s *= count;
- count = 0;
- for (int p = i + 1; p < m->rows; p++) {
- count++;
- if (get(m, p, j) >= height) break;
- }
- s *= count;
- count = 0;
- for (int p = j - 1; p >= 0; p--) {
- count++;
- if (get(m, i, p) >= height) break;
- }
- s *= count;
- count = 0;
- for (int p = j + 1; p < m->columns; p++) {
- count++;
- if (get(m, i, p) >= height) break;
- }
- s *= count;
- return s;
-}
-
-int main() {
- Mat m;
- m.data = malloc(4096);
- m.cap = 4096;
- m.rows = 0;
- m.columns = 0;
-
- FILE *fp = fopen("input", "r");
- while(fgets(buf, 4096, fp)) {
- int len = strlen(buf);
- if (len <= 1) break;
- if (m.columns == 0) m.columns = len - 1;
- while (m.cap < (m.rows + 1) * m.columns) {
- m.data = realloc(m.data, m.cap * 2);
- m.cap *= 2;
- }
- memcpy(m.data + m.rows * m.columns, buf, m.columns);
- m.rows++;
- }
-
- int maxscore = -1;
- for (int i = 0; i < m.rows; i++) {
- for (int j = 0; j < m.columns; j++) {
- int s = score(&m, i, j);
- if (s > maxscore) maxscore = s;
- }
- }
-
- printf("%d", maxscore);
- return 0;
-}
-
diff --git a/advent-of-code/2022/08/input b/advent-of-code/2022/08/input
deleted file mode 100644
index e1d5896..0000000
--- a/advent-of-code/2022/08/input
+++ /dev/null
@@ -1,100 +0,0 @@
-023322201321333021030055115233032255002015013044155106103011355435025324002515233340032023013101000
-333001114104040220402023231114145321226614100664520643140442646451222053211251540001413110202310311
-001122230342102202311114141015535535515054203105023201320052153606250133240404425023031241331132300
-200333324214423413533144232012440022651463612352410034332230305463511214140020132330411142212122132
-102231001140012234010224535134246522662353351650411444516502333264512265503131345351241014030131031
-123304301244220202523215244250456660036136615601260455124040610534545066145403001311004201223131020
-002003410244152204332045034034653220253344012342462512115252223350162403054433114541414402004230003
-200103132341510422452452250254525020361416010364344643552146232455465641450614242024420434042322023
-334030404131124213210110065630054201305051151553713765154353152015404165650352432220042240121431441
-310413343322502004445560402155236460562124231544313721765226711114232542101026341112103205000204213
-232113123250204533056410314645353415455472754633613676614123217267412616420454632514221110454141242
-212320215533235344164103161651553275174711711164356766211341364224361343166521543245501043403313020
-132311140310204051126312005021325536142561672714571554376563517456554662362641056124005412144432424
-231444210534331154552403515511564757547561574455777217737432721253356756144650425243250053400131102
-402305010405005545336224323172551713366727316646463352447124162453153245317302364400260244035250203
-141021340213551650603550523267762213732351446246376356435541361325455465416164254305301451555014314
-020311351332141136563303441244763611434365535243774772754265656372342514675761031061364550351222431
-413245211550112425253426472765645176882866845564838257856366634524532753142526650514203343254534533
-435452451101402442345414221334613563324588667748572632844384676268337331257112272444312406000210430
-010335302204230321512415571174254452865672753726557623855355483625486653112141562116114316324324330
-221535255034163464174647563575653473563783762385456872577376838278724787533322241360046164145143444
-023200114430135341415733511326526724522547637566455625677487874884677748355767326531554460531505423
-041325411513220355333664623324656723324354775368994776576453743226382234255146721766626165345032040
-251500552152654263475146756832747868664284795636459947469897787877228355585665321152065265452205010
-140403120623541575137615727682856477356763944336369569588959794665537746822241226172105532241014054
-453231451142201467644523625687875786636878558948395383658853983478274336626223261322670214456000012
-421401202553552263622464483244566634338573647446753646346899559455467362654676475666633635516251041
-323131612232542573237614644344532373875676439947597665797366646687698528458322143111266523602124520
-350402001311666477622377487567429458933773439373736474937847339863733784866824546353257615331613522
-250022536362331172722668268236867398553738597646787654948564865538536978368448574575767731313436224
-402502304364172157656277664376787847997386975947666779469869555838787877535542353742444675210555330
-534146105561234616268536526749363399896897558457877796995459475968646953877355285715651641221535521
-303646554131712176733825365433864398786578577698887656988984667665877535682343345654563777135012425
-324510121102677116583635857975693374387486566897798478994684955676694383688884846856322762430431244
-514510651516612266887483855356674543785959656848847555648447748596549489474486425724612453763154612
-231062261547177317255662764857346469768747497764945945965757496698454569588782672772143151160442034
-320163342042441177863252689394446487894788488755875979945694655996536354949538842337254673262442021
-332245516535336165424866833774775969444884989558587897695567778655663877687674655723514215474233645
-305304310765327184528544539776454864657499589567575587578857495776446886984958232865323375223161226
-041321134716326427345342674747478687768869565659869667675778958466596675773462357464554753265120531
-214135547421514268628575739385987456987579588577977997755957594894869954387663668252657636412005462
-303014312474744334438854664364557544877859878676955887957766794676788758349967423548311115421012031
-165600101766416548688563985883658885658968698975789866869555596449468493399749732764355275156263540
-023235337273751276356326956636445746559765659596677778588597776965655557544476853383777537142222045
-263022507373222354242473545837465487886578985999866897786966667659976798784598852254766575426052230
-051533463326323676244499536339757747598658665666877776665556856698587598784344845678845431463000630
-350253347271711387537784387454469565865799697798999978977698659775896784977364666572732246234315203
-341005566337216558547638778897554744866597657879686786676958688799857477968856776862486125354403122
-621400523354423736428594359887676575878885656668779879866568999864874549669688988364688346235212421
-505135676316352285588875489864578745965769688688697676766658757779794959756587955783527662755755550
-412201242457267256768457574464866864796989986797678879786798988756654489745697566438648525314315120
-465513676443563625564338436498947956778678989979778889888765868665989946774539564524422761417235426
-232566141256427682382546587547954498979759697699669866686878965577999966363744744433546335352521216
-426641574412112675686545366888568858676989567798688877989897665567789554385448648853822213741324260
-602662554527175344426766863695666656977788897678788977877689686966648487456799824486782375417461456
-651655223645567747258565638365989956656677767968776687998958899596855768455367926645753536315666440
-212101665433515738883643775536779945579976596567786779666997868695869664755484454857473235121532445
-050653146543541364346323653736454948456785699959977797599687588797759765975388673684657445217361543
-064052466421561857423457964965989558587599968966579676777587688855745463996659346764634531763304515
-561551524332754584232789895869594554468566797988665678658758669559768854455376555847876562742331036
-325314542655721556272469893855789755477667687765899758695565678476456955583865232637557334756250066
-142312051576173167535685734664695895767875888777758989579876988865676775699635377648226576522411336
-264405030674612265825464755969447459794894978557578676887898777658666398378833868636241721763463230
-226106504172532322756823879646746684578495976958986858585948768946563458695562852538355727621152553
-010455552047535263283644464733478545978574965849565776774485474589895848955474423534356723663335362
-344641162242761347244832643748385795576889884668584468667945796945977446594377836734377545264505202
-034234561142745745528645734559984454564945447687598468749845599859594766854257575231153232601521102
-540240251242253675342846365745937738658974994554845749686786757743643844958548825225537647141563520
-320206262105457111733842244254676634937587947685687474475998874887466954622334232535552551031406142
-514054400340122471674738287345975345554989578889687665977944569694376357735848686622213124245443111
-052523034313452374556723742753478844856887759998965975878847759763497772425467874322521153360256440
-222351100013277574717265537284546936359665666859668677959565397475778974448826377463727135443542405
-523350424041153637642545773628235636497539933545997447966795573653867437626874225421751645016443433
-312215360245443761525542452352242557749988469436989969593867853433893324724227766423165014506020545
-043301115145336365333177277445276796874975464449775989576653853847933547267577416233622000500250204
-010430464664035143116714487846468273747588694587534759975435534953667857468842565117553510343230004
-111523155243403247241622253657835525667595756477383976646535657887238383548526267564106666155410400
-331143444424136613727453361363448436384873986369887364654778533252327534346555721777153155043314351
-504400535003012413114454471286326822622755886597475895367832256758387882813774733523434423050344153
-031223513454351150575175721474553686462624367655585284263625746377334236266723565566434350565141505
-025403550435001645163142764332743577336357527577475885842585236426673634564751755732464325035342155
-330421145016464561337162167576453887346346662377775778365787447636782124712553177545200210154304402
-145134011342136360041775757661255522836536453757768526277233484847723214161226742551423535541545141
-120424442054514402401215773774217135788666446728752473458828676541113522171226164646163420350045352
-320300042111566320001225347233316661324787538457643633368888833762234461732376203555404440133510432
-040041531054536240250125277267321574523425854345828833847341557475227253772735231005626405434053110
-132032504525425163004536034651157757674257322776353873743315142663344157512332514161361250434024042
-412131202502245064331035365341616236636215157647137215154547671162456657640014205623004340003440042
-023402254450222445315156123064462256711636662722324113154653243672151665651410655544242445235033214
-030244442213354225245214420026615315266333321464545152275426214253367063445442123421222354522130443
-000404231340354415013353552601201031525655623675321422372514761615551410213215314045514055253413013
-424431424142012102050025660124656001446655324426514434456334347361251512153650510232214515000212124
-210444432021415253200025444324242403030613314565321154125546321420536312644040231522244324413232134
-304213344021421403321314610146511434231323466075612476301612210064435402534231034321214151220134113
-002213301410344533212501252101020156640662021153562032241365344241433044503534355443400214003434001
-022314333231043300404453132012064266633361244266541036223442060142103261113425041124401240222232000
-311003213421304332112132501310051205416305264342531341103003055416252025531115042105141422320032103
-133213004320332415205534404040532521244601552314401414553622300634114003055144015221303103000233300
-121313142330141112135522531401154344545521012501566652210433310564254034403545252414443110303020313
-