day 3
authorLaurent MAZET <laurent.mazet@thalesgroup.com>
Thu, 4 Dec 2025 08:46:38 +0000 (09:46 +0100)
committerLaurent MAZET <laurent.mazet@thalesgroup.com>
Thu, 4 Dec 2025 08:46:38 +0000 (09:46 +0100)
day-3.awk [new file with mode: 0644]
day-3.txt [new file with mode: 0644]
day-3_test.txt [new file with mode: 0644]
day-3b.awk [new file with mode: 0644]

diff --git a/day-3.awk b/day-3.awk
new file mode 100644 (file)
index 0000000..2bc648d
--- /dev/null
+++ b/day-3.awk
@@ -0,0 +1,32 @@
+#!/usr/bin/awk -f
+
+BEGIN {
+       FS = ""
+       v = 0
+}
+
+{
+       d = u = p1 = p2 = 0
+       for (i = 1; i < NF; i++) {
+               if (d == $(i)) {
+                       p1 = p2
+                       p2 = i
+               }
+               if (d < $(i)) {
+                       d = $(i)
+                       p1 = p2 = i
+               }
+       }
+       for (i = p1 + 1; i <= NF; i++) {
+               if (u < $(i)) {
+                       u = $(i)
+               }
+       }
+       c = d * 10 + u
+       print c
+       v += c
+}
+
+END {
+       print "joltage", v
+}
diff --git a/day-3.txt b/day-3.txt
new file mode 100644 (file)
index 0000000..0970814
--- /dev/null
+++ b/day-3.txt
@@ -0,0 +1,200 @@
+3223323232423342133321323321133325222233342332323323343713331321434231231232333333232334233323322122
+3422323123349134332433333333432333313333323413433133433343234433433334323333452433843344143323335344
+3323113221321312236523622222221222225424323212132242333365351332221432232235143422248222121121832228
+3463333333523444333334433344544335323235227453444243335438244443585333243345323433342343323423544343
+4233366944836552382823534346549355354476555367335594833663342368343653554644862935563623533154857355
+1332332433331354333343732343231333333333333244331233163343322313323333333342353333433313332343313344
+2323333333132333133423233333532331333334313243333333432343123323232442532313323213333333223533324332
+5312224222713236213232382221222222216232352633323322223233232333323422323225662322323723232222222232
+2243331332223333322421433342323323331333332213223332233332153332433342223233221232112323323334332332
+3156557564452635362717784672442615553635257743349535442676644432474552623544224472653952463455546442
+1312431342342824244214465334554334223332235314353232153332244574432234522234334345234413323433435332
+3554245243536264333644415362575554525424533152554425565554435225545754365521344355555155556554244433
+3353433343933436853333343334433544533333353523333323331553333462333433233452343223323433553333333534
+7336455237364265332533353534645233452333753233274646144545334553331347633135465814457336666374354374
+2433722533332321213232333323222232322233342222371243322432283314643332334143336933224322221331822363
+2247224633427672333417546743363394719333635395533333441323733426343643343694333454335345367755643335
+2243232372672232322322321215224746323615328472712261262632721421227121452562656223322437218572422221
+1222929212582422112521233212223222234234242267327154222384122121223122512222523922212956222222252226
+3122322435422357222233333223232234352422221333433322342832323122234243231745124324563425262224222212
+1321332222443232432355222422425222244535264454241322322422345333244431431322113412444229424432364133
+1212211124122213456255217441532222222725521322332233213222221332222222331222522232142283122212112121
+1221222142222133332341312333325237232223222244224227223222113232232634322322222232323273223434131332
+5438843322344249174483324441333413342444444434313423752414444443442232434241744241444444333413444444
+2231336232333236334112243332332341353232312512325222263432225332633322235632375232223315283333433363
+1233232232244732342232235233433333134123235541423222432442243435221242423434242223322334433434343534
+2312422514215411132514322222222222222223235322134223312222221142221213222214314222122211213144122472
+2352312236346345122352672524653136221643242523462324342566643556212133253226462645113375562465463463
+2252285215225322621451522125151253218241242222322242421513142213122213274723222222122122212212242622
+4764556435435474434364374545434435645236634745385365324363447564667544243444254647645664366435256446
+2824332112222121122241422243122211121322131212222342523222233232222222122132221321211233223212242222
+1222322226122232414323112322352321231332324222222212212232243242322235213322222222322223222323222125
+2252722221562224322233133222324333222431232222232332122212212283223222235313323222321222263422212225
+3225322333142232533532322223341246336436425354236552512341262222442442432424316254235423242422424431
+1229234225411352533231233325262212262424612324412432524244236611122332236543432356222256232952224223
+4422322225363423225135213321451642433226538122141642663126542212332323422221342331242252432422222321
+4662664565466353654667543463541541665663656552266564563364254245666465446455433446366683366354765935
+8112122265252322231255272221125322122133222332245342272259236322132232234219412242132223323213224323
+4324545423224241227583333327531422243651534442323374373723223267428526133225253163132824362447344627
+1873223364414122262223231362223512323215135752522222734422222232212231222721127222262123742126233273
+2222222232222221212222211332112222311222111122232212223231322221122222222113422312422211221222221122
+6515552226443442213243133322422152331233434354121421266462313324312444525221525635242234252313112554
+2222223313344213211222422221252212321227222252322221425222221421222322222323332221423322222223243212
+3322352323333353343333333144233223226632532233333132133232322373233333433231243323133323363262322133
+1334333384313212233263453263443134334542743232641425424243735343422256314524379414634432354365527544
+2222122222122222232235222222222222323222211222222222221222222222222222223222223222238223222132112222
+4552545432554471442435255334542432343233452454373464454247443423525434455545443443545522253444253434
+2295142423439123226532549221326257642473736734226243554156257523327813952236236373774524212322953292
+6244442442833334532829613842222423522322338315233322255442882222783429222223272245232322442432445282
+2223281222122322425123122325432223222221231423221422223222352213222122222324122222254223212125222222
+4424433234542223532234133312344242223261233264433212442333234342234445123232234125135124322342223215
+3321444232221444232243522321232343434246434634325422431432452732234232342217314324414312252342131422
+4222445346344244345463442445444423442454352143434333444443353434236443445442344345444343422434444423
+7445335355442547323942325424544342334544545134465255335334523554434234624285444374443344455232725354
+6662469465375473453283843715347366454456464744242897948347645557473738466479664648345568563543338562
+3413332432331224232321343113423313124414141122312422131143212412143243221443322142222431112231356789
+4214514253524332351123524241342444644324422532442535662142332142423422322324342455541551561232442442
+1252555353483543522442375222325465493151255532427344524824242548554533654314332823448245125448973335
+3343353332423434432357344244332322345473752733743623253234344323353733563438364635433334363233353522
+4481475443864865466663533753723433263738268884757523682775288884487347484537562245448287533854845335
+2283214222572422472292362124185482222421528232637272162222421216223326222232322222122323112662222251
+3322123122222252214216221233333231532222212222523332422324122223222332113225227423275142352322812232
+2122255524233332323141342322365426641312343232525215312133422433431435222512532421153342412622412265
+4322333321433452432114212422222241244242232121244322242338222432342132722243242283444223443412426222
+2686481452258352754854574561574766144245484684536194922243385338627468565255352555437323339672423363
+1512123243234132232133124432222472421461652222346228249225222542231432532112315523336523213754323431
+2333221223222122392221223212213232222423132223334312122234323222211313242534322221224222222322233331
+2423143222321313224212232212221421231245322412232422113222245343432231342344413332121234212122432322
+5442623431233335321453824421252232355952141522433545543539332335311722233143332383725343442562123323
+4221221222122221241232222321323222252323226212221222222222221222222122421128222632321222132322122422
+2425957221421122363222228632835265272254223922243713292442232584413234282222222228223946421632156433
+2334313352234233444434474442432342455339475628455436233334243333444454472923441724248233274444144933
+1522122621421834525224232222117228283782114644247574537427343251232114632224436232222312132122332444
+2222323813234423333232323344324323313233224123343232323233542523322414233332223733231443245334326222
+2212311222211222222262232222233231324123222121122232212222322232332222232232221221221222222282121222
+6446555567535466665998357435643445437644844342775443548435536556654763995236662635659544948533464655
+5555555645569655663523984432435935347685533255235633344358886535634465343443534535566633715553544874
+2223642272622224221226212325212321232213222622321222325227222423127222232231622222242522321612232231
+2496484462443135438653377563534444657376332434415777934547754544584252525522367928355656352624353245
+2212122212231222211322212232212222263222222223222221222222222224123131222123242223282212273222121242
+4554475645355358566552555545455545864555435533456467357552458357789556143315353426543345644476644555
+5134335453346453622442534252724124434414324146262511242446444264242232752516413335453447442422256322
+8553685876753576369998575836755786969767886966796423549848793898689987896697887879864874974433698684
+3222221212433223229321122342423213211223141222324922213223412223522935613123272223824242726231274133
+2323214223322522212142232432421443422332332221222222424212432233113322625224233543322232222333442332
+1221332242334224512242343232434244233322411431122212133442112222122433423124423224285123324324422432
+3366435344323232643422212253242435322453143543135334442252422132533353345222473345344251424223333344
+5577695784874427654465756434554854566476757655434446776634753864496554464687473687744697477557496744
+2223331223122231238412212831223232322322212222122221222122222222221222252112422232122214223223122223
+2227576456152577554153253435177341723712527161376724362342426213664663134124547466564665756352111689
+5335337643654473353237332235453355166334545466422334734736326554332364443221164555535734523223763333
+1344466459323423455113777375337223859383757333338384523593433243747981433467243637342557221538535533
+7582359387865258737443328653655389875433894548344445667743258486498794928645678369824848385534734776
+2332322322342342412234222222123242322323433221333223322422225132333224332123221343213233322333223335
+1222212339322122758223313222222412234122252233631244134342224222122222223327233224222433319335255325
+6333333432353233327325334333323333274233333373223333337313333233353533323323353333332333333433223233
+2222231213132221223322123412222323242231322222422221123124312224211232331236231113222223242212222222
+6211221233212246222221221723221232332221222252212222122242232221211221222229233224323232222323634222
+4352121222222321222222929223222422223722623222225222222412282122222222222242422212222693244181222222
+8913337637249265653436452735736242455355355265685536925394769886566866374777555685751454834945789964
+6752637474433657857283376566544626855476477675654588677482837533623665555466364457344273957332432598
+4222413233422323343452222422233472623325342313333233232332524234234232143323733334434344324325327224
+8143572574121427425454114554163292434837485274446547432448523464544552394756325354741544552749493125
+2324242332224222222222222222322342426222122244332322222212222222223221222212232222222231222432223522
+2425251321241127455322154425742233534241444318282344443465142233458442232313443422323121526223256242
+5233541533952725232533434244442434334242514243352523321432353334334324654448344357263457437323422233
+1222222132122222224422244224221235421422122212343322242321222233222222222242212423224222222221232212
+4373334332463466333442362333753332443524543247336343243645323237488441333343346333295132124373733633
+2523534431224324414345482234444221454423424224333422322243448324312322434234442114435244442243441234
+5216772222555212556333333872237834577173233119353423313212327282523773262236416443872322221322534422
+4424454444342444524324435443234344844393334425484234434665336524452442786454756352213845227724656132
+3363354538235285633244636333445633466653126532211425338682456273436424254761431546225362531484356752
+3244434526534332442451233526275445263746427475576222343244732416444254472234325468473423233327523324
+2422544121232544222161323122663663125363226431332142232152243452376322341323334243243446643226633222
+2556357124477356153352651364546654358344426375261446425545358346436237863435535732553326661872325464
+5313342221214324343222333354423244423232415434421125243142423242452344323234424343233213432336333321
+2222222415222333212233322232232823223323532222223322234341323213222225132513233233144422241322323143
+2435536564346557977472363654558672655363255424452352727654342526452266662643477554244247634427452527
+2412313223331213327313121133331232322213221333333232231232222223452122132323126333523223212333232111
+3231332352212234212242355842132211432322343525228242534152254224252644227822521152241233542151273151
+1242242354442274547635266524274258756466558575646635642155345536824686545243645535452346434554656564
+6355664686264756488437865667634746736655788584654552586677568753312538543555254569657737547457458648
+3433333423124316324444328434113632222233763435842543934312343143673636821751634121614222233313442742
+2222422122222142252221232135222222325222244213424123245231122141312212221322221222121425222122122231
+4421273146345347671635465533646555455635434456635447367357366473634464635723765465847646573444674556
+8632543245483535984557352533562435234658334546456423545573444857755938555768254565451952547643543775
+3333333332333433543233332432433323323633133233233513335333433323432533333213334323333334434323233333
+3233333213323323313321331112423352233223333363332323322223225313335653333435322353221323233333233226
+3542224325544323334223433232434114234432125224324433142342313214416885443227423223233335124443443243
+5332424223422323232331421332142224234133323132312632224342362235122233232523311431244322126332325322
+3222323323312231332344313274322343223361261283233235222241251333332233123623322112244313232131231326
+3553546227454236346375443545175372962433445723533766777317531733331642245574676774264732264697226946
+2435643136269525431345566244444444225443349535623455444342423624564425263416364322344336355223562544
+5465346325726225434122422274252322744424443525523241734151312624357524433134543352446424544444254232
+1222232123121325324231422232221222322322222222222422433322222222224944125182233332122322122422222232
+2323423225235522223424422232612132311521844152232226655722121542532222142512472334432244213422312526
+5433221213531231256242366438214111642244562263723315543556223353574322732164154234244571947254521372
+4423444256245575277454484449462255466372224484443365354543562747423333494445434422443478532288535643
+7212212423321242211212221221222221222622921222662422614216245222324222251137525442122222222422532232
+3866324425639525332338773332267343827345232373334433521425625823323364613333729547256235334362325342
+3956721534132232125232223354253319653232234334419473243332814423252224323234341322431441435278353522
+6217536363656322526322115145666764366246463924636664266333265321456389562886565673152312236666533235
+2222245723222542322215462532312222252224331222122222216244622139221232245226732222225252322222232411
+2322543139452322455421152531422225323453243313452454242242151713542324264543313333713931223423342228
+3221312232421323282233234237522182224452253425262523326521312325322322162331221425332373123155232222
+2746432442536455442925944435593977235762735556344345555295341845842826452232744332536933645365525654
+2441574333821246122228322222312142252223248422252122432445221245132292339822481342645252222434225143
+2232222318242253123348232333344332226324544434534253222244322443222272822112142124233447132324441413
+2241442454535543312521314131131112335315542251251413111433321452321523234322331555423531515213426789
+2421866322223443213424411342422221235322434155242342122323443332862323334333223133323221232323212264
+4722432322464532321414334423442423222342212342124343424224224244443434442442312432312121412343262442
+7232221322321522232326122212222342222322222212312222323242222222122222353332122223122112131233222222
+2643222121222222322322422222222123223122243232324222142233112211223151322222212212232223422224342313
+3442333385524542324324223132392421244233363233622433141237435232425524131382333933335432333133587443
+4331133222243432515443224333732243383832244133237352433333264644322723221373325733371283342362332353
+2332332334232123233313332132122463332332122233223332332233512283342443333133633323321123362232323312
+2322323212232342232222232121232222131222122232233233122223221323233342222422222422212342221323231233
+4398433487689256957736447448958955647985575694458686573584458446529576886544765828746538614956782733
+5342265323223554344222423442443442244621452444334535623444364234751623434213245225222261231422234426
+3333222325132222521222231353123353122343112333353522222252252222131422235532213223231231323222525515
+1628322332616133411672142534245323296324442522322323333123232614218315222212122272229542333532312335
+4486646549621254343552376335367338931262676565364546652367262516243571456385522267463567256716552425
+3132342252574332243325555411453232224222542352542443223554226142523546322425433154312255325532432424
+3464267693574476953135666243136766777645656548444662243226644544487953443548557477854339565338341666
+4314322222132224222221232222222223222222221222122225422211222223523222231321322212252322222522213222
+8745345432452732543532735233374423435438343323453534332478358443637444436533235335315734845423235822
+2373227776462391365224136636227272715323636285134733342825834238571243345753251263333742335753333763
+6236531553554154255644321211121223122244435453611521363315445223336111124466261146114553363516454789
+2141132231122222128231324232242223212124232222531422221312221242422234223122222212222542422344222321
+5695222952453322424522524329243556774533752455554522244442365425913434264444322544692448456424433324
+2222412222322542232222321332222211332122221454432312321322242223222212422242242111232231324232212223
+1222262425251422221421121212622235222422222241533212232612522422162224642322213161325525522311233221
+2357329192452425321496232348725343236257672366346176324732582263123357855556254537754544333427777296
+4122365247223133236225133223821321627528418255422292622234621243613323235262236695346315222412823215
+8232327686335213853635467688643854864565678246571456562298523736225424931483345863684647465533884763
+5433644333734433692878966464333565342355277374345773865533443553344433483941615253737584393333253359
+2623182117312236223223229122232923282623243321226112232224293123133222127211521213222222127322222224
+4515355464345435252553259327524365344535354453245547753457653474554755537357543549834754544354454257
+4343242444454244355441446534224434653463254664462422444444454634424542754642545446454456443345236244
+6252564353123123234553322165573813992576675563459842432346475523255223746632435673632324542622232743
+3683762484734182117162245181271658436561472683238836883216376187475754326856275132257561553873514879
+8322422233253425332533442132461642333455462342214353436112244432434223443313413233444116359358325357
+2122231223214232212133332132222233931212222232322222122223221322223221227222122222223222222252212122
+2133522334323313232222243543222432433463536553452323324245443343254241133533234353342343255461321231
+4122333122212322225322231334325214312232223232222412212214232124422231324324242122124222322242232333
+2217222478253322421552352224222221422282251262322324321327622222623326421343522112272721225413222522
+4324333333323335332243333323654533332333343333342233442234332433134323213236333443231334333342313423
+4455855445424555743549549446445444185464658743359464455555473834547337497954564438854556355578864554
+4635155355543423242435552564645777735354562584442545334445744343552455484475445234235895615335665432
+3522213332223422221352222333332315223232321223112223132232223223343313337221335322113113312322321322
+2462451864722242312529223247244228744625352215342742231553326545451872824234526145272226523759472552
+3241433223333432443242352432251433253342224423323342235233224434235223342321431436384243233223323633
+2144222234232524322112262213224424242243432232442213442112222211362412221421223222233421212343242432
+5546565255544585455857545954555633553553535926559748584756454463543565551595454257455555595555855744
+4632332242242234293772618826288172757372366734632738945845236752479947259285477278212467375386832853
+2343553276363356535522332242643945654352263332355665563332352434334538634333234323524532646666532373
+6642233412433362523333233544252325392143222451732233234252432221136443244543244155633432322432142312
+6645513635553536456434465554555532563634624843245574253462583453246844857313433341876266423526473852
+1113233522332432321212222313412315521343627282223261232234221222322442422324222532621323222434113195
+2221255122222112321232232225222222242222221523222213222222221121122123224312322231221223212222222224
+1112121122222223222222222222112242222232323212322222213112322622222132213212123253423222223242122232
diff --git a/day-3_test.txt b/day-3_test.txt
new file mode 100644 (file)
index 0000000..7255fca
--- /dev/null
@@ -0,0 +1,4 @@
+987654321111111
+811111111111119
+234234234234278
+818181911112111
diff --git a/day-3b.awk b/day-3b.awk
new file mode 100644 (file)
index 0000000..f9bd08a
--- /dev/null
@@ -0,0 +1,42 @@
+#!/usr/bin/awk -f
+
+BEGIN {
+       FS = ""
+       v = 0
+       N = 12
+}
+
+{
+       for (j = 1; j <= N; j++) {
+               d[j] = 0
+               p[j] = 0
+       }
+       f = 1
+       for (l = 1; l <= N; l++) {
+               for (i = f; i <= NF - N + l; i++) {
+                       if (d[l] == $(i)) {
+                               for (j = 1; j < N; j++) {
+                                       p[j] = p[j + 1]
+                               }
+                               p[N] = i
+                       }
+                       if (d[l] < $(i)) {
+                               d[l] = $(i)
+                               for (j = 1; j <= N; j++) {
+                                       p[j] = i
+                               }
+                       }
+               }
+               f = p[1] + 1
+       }
+       c = 0
+       for (l = 1; l <= N; l++) {
+               c = c * 10 + d[l]
+       }
+       print c
+       v += c
+}
+
+END {
+       print "joltage", v
+}