Advent of Code 2021 Vorige deel Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 ... 9 ... 16 Laatste
Acties:

Acties:
  • 0 Henk 'm!

  • ShitHappens
  • Registratie: Juli 2008
  • Laatst online: 00:38
Wel grappig trouwens, dat IntelliJ
spoiler:
List<Octopus> o autocompletes naar "octopi", maar vervolgens deze in spellingscontrole een spelfout vindt :+

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
DataGhost schreef op zaterdag 11 december 2021 @ 13:56:
Volgens mij is dit een tegenvoorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
4570000064
5700000006
7000000000
0000000000
0000000000
0000000000
0000000000
0000000000
8000000000
6800000007
Mooie. Deze herhaalt zichzelf inderdaad, dus de octopussen zullen nooit allemaal tegelijkertijd flashen.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Diderikdm
  • Registratie: December 2020
  • Laatst online: 04-01-2024
DataGhost schreef op zaterdag 11 december 2021 @ 13:56:
Volgens mij is dit een tegenvoorbeeld:
code:
1
2
3
4
5
6
7
8
9
10
4570000064
5700000006
7000000000
0000000000
0000000000
0000000000
0000000000
0000000000
8000000000
6800000007
I stand corrected! Scherp gevonden

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 12-09 22:18

DataGhost

iPL dev

KabouterSuper schreef op zaterdag 11 december 2021 @ 14:06:
[...]

Mooie. Deze herhaalt zichzelf inderdaad, dus de octopussen zullen nooit allemaal tegelijkertijd flashen.
Begon overigens vanuit
code:
1
2
3
4
5
6
7
8
9
10
7445734518
5163180850
2800640085
4678620284
2065543655
3405508127
2716226134
2134677770
7258654163
4458063276

en komt pas na zo'n 150 stappen in die loop terecht.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Creepy schreef op zaterdag 11 december 2021 @ 11:42:
Echt een opdracht voor de zaterdag ochtend met een bakje koffie :P
Meestal zijn de Zaterdag opdrachten de moeilijke dus ik ben een beetje bang voor wat er mogen komen gaat :D

https://niels.nu


Acties:
  • +1 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
ShitHappens schreef op zaterdag 11 december 2021 @ 14:04:
Wel grappig trouwens, dat IntelliJ
spoiler:
List<Octopus> o autocompletes naar "octopi", maar vervolgens deze in spellingscontrole een spelfout vindt :+
spoiler:
Octopussies!

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Tjmen
  • Registratie: April 2010
  • Laatst online: 03-06-2024
Ik vond 'm ook goed te doen, behalve dat m'n antwoord voor deel 2 precies honderd te laag was...

spoiler:
omdat ik deel 1 en deel 2 achter elkaar aandraaide op basis van hetzelfde object (List<Octopus>, C#) 8)7

Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Spoilers voor dag 9 en 11:
spoiler:
Ik heb eenzelfde aanpak gebruikt, maar ik gebruik een leuk trucje om breadth-first te implementeren in Python. In plaats van een deque gebruik in een normale list. Dat heeft twee voordelen: je kunt er met een simpele for-loop over itereren, en je kunt de lengte van de lijst op het eind gebruiken als totaal aantal stappen, zodat je die niet meer los hoeft bij te houden. Daardoor wordt de code erg simpel.

Voorbeeld van dag 9: https://github.com/maksve...er/2021/09-bfs.py#L24-L30

Voorbeeld van dag 11: https://github.com/maksve...master/2021/11.py#L30-L34

In theorie kost het meer geheugen maar in een situatie zoals deze maakt het niet uit aangezien het maximum aantal elementen toch O(N) is.

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 10-09 18:35

TrailBlazer

Karnemelk FTW

Vandaag ook weer opgelost in python lang niet zo mooi als velen hier maar ben al blij dat ik ze nog weet op te lossen. Al verder gekomen dan vorig jaar in ieder geval.

Acties:
  • +1 Henk 'm!

  • YoToP
  • Registratie: Juli 2011
  • Laatst online: 25-07 16:56
DataGhost schreef op zaterdag 11 december 2021 @ 14:08:
[...]

en komt pas na zo'n 150 stappen in die loop terecht.
En herhaalt zich elke 7 rondes :)
Ik heb een part 3 gemaakt welke ook loops kan detecteren, en geeft dan terug na hoeveel rondes de loop begon. Het was niet de opdracht, maar op zaterdag mag ik overengineeren wat ik wil ;)

Me think, why waste time say lot word, when few word do trick.


Acties:
  • 0 Henk 'm!

Verwijderd

YoToP schreef op zaterdag 11 december 2021 @ 17:01:
[...]


En herhaalt zich elke 7 rondes :)
Ik heb een part 3 gemaakt welke ook loops kan detecteren, en geeft dan terug na hoeveel rondes de loop begon. Het was niet de opdracht, maar op zaterdag mag ik overengineeren wat ik wil ;)
Ik snap nog niet waarom, maar indien ik mijn input (of de repeterende van dataghost) pak en de rand opvul met extra 0'en (of het er nu 1 extra rand rondom of 200 zijn) kom ik altijd op hetzelfde aantal repeats uit voordat er een simultane flash komt...

Acties:
  • 0 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 23-08 10:21
Soultaker schreef op zaterdag 11 december 2021 @ 16:22:
[...]

Spoilers voor dag 9 en 11:
spoiler:
Ik heb eenzelfde aanpak gebruikt, maar ik gebruik een leuk trucje om breadth-first te implementeren in Python. In plaats van een deque gebruik in een normale list. Dat heeft twee voordelen: je kunt er met een simpele for-loop over itereren, en je kunt de lengte van de lijst op het eind gebruiken als totaal aantal stappen, zodat je die niet meer los hoeft bij te houden. Daardoor wordt de code erg simpel.

Voorbeeld van dag 9: https://github.com/maksve...er/2021/09-bfs.py#L24-L30

Voorbeeld van dag 11: https://github.com/maksve...master/2021/11.py#L30-L34

In theorie kost het meer geheugen maar in een situatie zoals deze maakt het niet uit aangezien het maximum aantal elementen toch O(N) is.
Nice, ga ik onthouden!

Acties:
  • +6 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Dames en heren, eerst was dit topic gewoon om je antwoorden te dumpen maar als iedereen nu opeens visualisaties gaat maken en “the ante gaat uppen” steken degene die het minimale willen doen (ik) wel wat bleekjes af hè? Denk ook eens aan uw mede deelnemer…

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 12-09 22:18

DataGhost

iPL dev

Verwijderd schreef op zaterdag 11 december 2021 @ 17:27:
[...]


Ik snap nog niet waarom, maar indien ik mijn input (of de repeterende van dataghost) pak en de rand opvul met extra 0'en (of het er nu 1 extra rand rondom of 200 zijn) kom ik altijd op hetzelfde aantal repeats uit voordat er een simultane flash komt...
Ik mis denk ik even waarom en hoe je een rand van nullen eromheen doet. Als die ook omhoog gaan triggeren die ook een flash toch? Dat is dan een compleet ander veld.
Edit: nou ja, het waarom kan ik nog wel verzinnen maar ik zie een groot risico op een foute implementatie :+
Heb je je code ergens staan anders?

[ Voor 11% gewijzigd door DataGhost op 11-12-2021 17:33 ]


Acties:
  • 0 Henk 'm!

  • YoToP
  • Registratie: Juli 2011
  • Laatst online: 25-07 16:56
armageddon_2k1 schreef op zaterdag 11 december 2021 @ 17:31:
Dames en heren, eerst was dit topic gewoon om je antwoorden te dumpen maar als iedereen nu opeens visualisaties gaat maken en “the ante gaat uppen” steken degene die het minimale willen doen (ik) wel wat bleekjes af hè? Denk ook eens aan uw mede deelnemer…
Oke, oke, maar dan mogen de inzendingen ook niet korter zijn dan 100 sloc.
Dit is toch niet de Demoscene

spoiler:
:D

Me think, why waste time say lot word, when few word do trick.


Acties:
  • +1 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
armageddon_2k1 schreef op zaterdag 11 december 2021 @ 17:31:
Dames en heren, eerst was dit topic gewoon om je antwoorden te dumpen maar als iedereen nu opeens visualisaties gaat maken en “the ante gaat uppen” steken degene die het minimale willen doen (ik) wel wat bleekjes af hè? Denk ook eens aan uw mede deelnemer…
* Creepy gaat bleekjes naast armageddon_2k1 zitten.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • +1 Henk 'm!

Verwijderd

DataGhost schreef op zaterdag 11 december 2021 @ 17:31:
[...]

Ik mis denk ik even waarom en hoe je een rand van nullen eromheen doet. Als die ook omhoog gaan triggeren die ook een flash toch? Dat is dan een compleet ander veld.
Edit: nou ja, het waarom kan ik nog wel verzinnen maar ik zie een groot risico op een foute implementatie :+
Heb je je code ergens staan anders?
Klopt, maar wat ik zo bizar vind is dat ongeacht hoe grot ik het speelveld maak (tot 410 tot nu toe)het aantal iteraties gelijk blijft. de code (zo kort dat ik het voor een keer hier wel durf te dumpen):
spoiler:
fileID = fopen('day_11_input.txt');
A=textscan(fileID,'%s');
fclose(fileID);
A=cell2mat(A{1});
clear inp
for i=1:size(A,1)
for j=1:size(A,2)
inp(i,j)=str2num(A(i,j));
end
end
add=1; % aantal 0'en dat aan idere zijde van het veld wordt toegevoegd
I=zeros(size(inp)+2+add*2);
I(2+add:end-1-add,2+add:end-1-add)=inp;
B=zeros(size(inp)+2+add*2);
B(2:end-1,2:end-1)=ones(size(I)-2);
flashes=0;
kernel=ones(3,3);kernel(2,2)=0;
step=1;
mask=zeros(size(I));
while(sum(sum(mask))~=numel(zeros(size(inp)+add*2)) )
mask=zeros(size(I));
I=(I+1).*B;
while any(any(I==10))
mask=(mask+(I==10))>0;
I=(I+filter2(kernel,double(I==10))).*B;
I=I.*~mask;
I(I>10)=I(I>10)*0+10;
end
surf(I)
shading flat
view(2)
drawnow;pause(0.01);
flashes=flashes+sum(sum(mask));
step=step+1;
end
disp(step-1)


p.s.ik weet dat het niet de bedoeling is, eenmalig en daarna nooit meer...

[ Voor 4% gewijzigd door Verwijderd op 11-12-2021 18:21 ]


Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 10-09 18:35

TrailBlazer

Karnemelk FTW

DataGhost schreef op zaterdag 11 december 2021 @ 17:31:
[...]

Ik mis denk ik even waarom en hoe je een rand van nullen eromheen doet. Als die ook omhoog gaan triggeren die ook een flash toch? Dat is dan een compleet ander veld.
Edit: nou ja, het waarom kan ik nog wel verzinnen maar ik zie een groot risico op een foute implementatie :+
Heb je je code ergens staan anders?
Ik heb er een rand van waarde 99 omheen gemaakt en in mijn filtering alleen octopussen met een waarde van minder dan 99 meegenomen. Een normale octopus zal nooit boven de 17 komen.

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 12-09 22:18

DataGhost

iPL dev

Ik heb nooit iets met Matlab (dat is dit toch?) gedaan en het is 1-indexed, dus *r-r-r-rilling*.
Maar waarom zet je die nullen er precies omheen en, hoe zeker weet je dat ze nodig zijn en hoe zeker weet je dat die nullen nullen blijven? Op de testinvoer krijg je wel een normaal verloop na elke stap?

Acties:
  • 0 Henk 'm!

Verwijderd

DataGhost schreef op zaterdag 11 december 2021 @ 18:27:
Ik heb nooit iets met Matlab (dat is dit toch?) gedaan en het is 1-indexed, dus *r-r-r-rilling*.
Maar waarom zet je die nullen er precies omheen en, hoe zeker weet je dat ze nodig zijn en hoe zeker weet je dat die nullen nullen blijven? Op de testinvoer krijg je wel een normaal verloop na elke stap?
Tja, als engineer heb ik toch meer houvast bij tellen vanaf 1, maar ieder z'n ding ;)
Waarom? Ik probeer te bedenken hoe de initiator van AOC tot de input data komt, voor specifiek deze case is dat voor mij althans niet voor de hand liggend.
Ook qua inputs was deze verrassend klein, met 10x10 datapunten, dus daar zal vast iets achter zitten. Wellicht simpelweg ook met brute force gemaakt, wellicht ook iets vernuftigers.
Ik las hier dat er een paar mensen een enorme toename zagen in iteraties tot simultane flash bij vergroten van het veld, dus ik dacht, laat ik dat eens uitproberen op de input die op 10x10 naar een loop gaat.
Toen bleek dat 10x10 +2,3..200 extra rijen en kolommen allemaal in exact dezelfde iteraties naar flash gaan hoopte ik dat er bij iemand die meer mathematisch geinspireerd is een lichtje zou gaan branden.
Die nullen blijven natuurlijk niet, die krijgen sowieso er 1 bij iedere stap en doen verder mee met de normale regels.
Op de testinvoer krijg ik de uitkomst die door AOC geaccepteerd wordt, op jouw test krijg ik de lus...

[ Voor 8% gewijzigd door Verwijderd op 11-12-2021 18:37 ]


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 12-09 22:18

DataGhost

iPL dev

Oh, dan heb ik je verkeerd begrepen. Ik dacht dat je er sowieso een rand van nullen omheen had gezet en daarmee voor de AoC-input wel de goede output kreeg maar voor mijn input geen lus, dat vond ik vreemd. Nee, met een rij eromheen zal het best. Ik heb mijn input overigens gewoon gegenereerd door een compleet random grid van 10x10 te maken. Na een paar pogingen deed 'ie dit. Ik denk dat dat ook voor de AoC-input de makkelijkste manier van genereren is, gewoon random en dan kijken welke in een acceptabele tijd klaar zijn. Ik heb nog geen puur wiskundige oplossingen langs zien komen dus het zal niet heel makkelijk zijn om een input te "construeren" gok ik.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 11:55

MueR

Admin Tweakers Discord

is niet lief

Vandaag zat ik echt even vast. Gelukkig gaf @Creepy me de hint die ik nodig had om deel 1 op te lossen, stomme oversight ook nog eens.
Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

[ Voor 16% gewijzigd door MueR op 11-12-2021 19:11 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • iThinkSo
  • Registratie: April 2011
  • Laatst online: 02-04 12:35

iThinkSo

Ik heb deze tekst en jij niet!

Kortste tijd tussen deel 1 en deel 2 tot nu toe: 1 minuut 16 seconden :P

Acties:
  • 0 Henk 'm!

Verwijderd

DataGhost schreef op zaterdag 11 december 2021 @ 18:44:
Oh, dan heb ik je verkeerd begrepen. Ik dacht dat je er sowieso een rand van nullen omheen had gezet en daarmee voor de AoC-input wel de goede output kreeg maar voor mijn input geen lus, dat vond ik vreemd. Nee, met een rij eromheen zal het best. Ik heb mijn input overigens gewoon gegenereerd door een compleet random grid van 10x10 te maken. Na een paar pogingen deed 'ie dit. Ik denk dat dat ook voor de AoC-input de makkelijkste manier van genereren is, gewoon random en dan kijken welke in een acceptabele tijd klaar zijn. Ik heb nog geen puur wiskundige oplossingen langs zien komen dus het zal niet heel makkelijk zijn om een input te "construeren" gok ik.
Ik zet idd een rand nullen om de input, die ik elke keer ook weer eruit filter, maar dat doe ik om de data makkelijk te convolueren. Zo zijn er nog wat trucjes in matlab die soms erg goed van pas komen. dag 9 bijvoorbeeld bijna dezelfde code gebruikt als vandaag. Daar kon ik het me besparen om een floodfill te implementeren door de input data n keer te vermenigvuldigen met een filter waarbij ik na iedere stap de uitkomst vermenigvuldigde met nul waar oorspronkelijk 9 stond. Zo kon ik 'lekken' voorkomen.

Acties:
  • 0 Henk 'm!

  • ydderf
  • Registratie: December 2017
  • Laatst online: 11:49
Dag 11 in C#
Deel 1 was wel ff puzzelen hoe dit op te lossen. Deel twee daarentegen was zo gepiept.

spoiler:
Voor deel twee had ik eigenlijk wel iets verwacht met na hoe veel stappen komt dezelfde situatie voor oid.
Of hoeveel flashes na heeeeel veel stappen.

Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat


Acties:
  • +7 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Dag 10 deel 1 in Brainfuck (geen spoiler tags want het is Brainfuck):
Brainfuck:
1
2
3
4
5
6
7
8
9
10
>>>+>>>+++++>,[---------->+<[------------------------------[-[------------------
-[--[-----------------------------[--[------------------------------[[-]>->>+>++
+<<<<]>[->+>>+++<<<]<]>[->>+>++<<<]<]>[->+>>++<<<]<]>[->>+>++++<<<]<]>[->+>>++++
<<<]<]>[->>+>+<<<]<]>[->+>>+<<<]>[->>[<<<<+>>>>-]<]>[-<<<<[->+<]>>+>>>[<<<<->>+>
>-]<<<<[[-]>->[<<+>>-]<<<<[[-]>>[<+>-]<<<]>+>-[-[-[-<-<<<[<<<]>>>>+++++++>>[-]+>
+++>>[-]+>+>>[-]+>+++++>>[-]+>++>>[>>>]>]<[-<<<[<<<]>>>>+++++++>>[-]+>+++++++++>
>[-]+>+>>[-]+>+>>[>>>]]>]<[-<<<[<<<]>>>>+++++++>>[-]+>+++++>>[>>>]]>]<[-<<<[<<<]
>>>>+++>>[>>>]]<<<[<<<]>>>[>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->[-]>
[-]>+<+<<[->+<]]]]]]]]]]]>[<+>-]>],----------[,----------]+++++>>]>[->[-]<]>]<<<
]>[-<<[[-]<]>+++++>>]<,]<[-]<<<[+++++[->++++++++<]>.[-]<<<<]++++++++++.[-]

Iets leesbaardere versie hier: https://github.com/maksve...de/blob/master/2021/10.bf ("leesbaar" is relatief)

Complexiteit is O(N log N) dus draait vrij vlot; zelfs de Dataghost inputs gaan in minder dan 1 seconde.

Ik was van plan om deel 2 ook te doen, maar ik weet niet of ik er nog tijd voor/zin in heb.

Acties:
  • 0 Henk 'm!

  • bakkerjangert
  • Registratie: Februari 2012
  • Laatst online: 11:14
Mijn code van vandaag in Python. Vond het prima te doen. Wel merk ik dat ik toch vaak het verhaaltje volg i.p.v. een meer abstracte oplossingsrichting te zoeken. Super leerzaam om de codes van andere hier te lezen.

Acties:
  • +2 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 08:08

P_Tingen

omdat het KAN

armageddon_2k1 schreef op zaterdag 11 december 2021 @ 17:31:
Dames en heren, eerst was dit topic gewoon om je antwoorden te dumpen maar als iedereen nu opeens visualisaties gaat maken en “the ante gaat uppen” steken degene die het minimale willen doen (ik) wel wat bleekjes af hè? Denk ook eens aan uw mede deelnemer…
En ik wil daar nog aan toevoegen dat het niet altijd voor iedereen een makkie is. Ik lees hier heel vaak dat het dat wel is voor een aantal mensen. Prima, maar to my fellow programmers die - net als ik - regelmatig strijden om het antwoord te vinden: je bent niet alleen.

In mijn geval ligt het niet aan gebrek aan ervaring, ik programmeer sinds mijn 16e en ben nu 51. Ik programmeer alleen altijd andere dingen dan hier, nml voornamelijk ERP-achtige dingen. Ik moet met mijn 4GL dingen uithalen waar het niet voor geschikt is en die ik ook niet gewend ben. Dat is ook precies waarom ik meedoe, maar het levert wel veel problemen op. Zo werkt Progress met 1-based arrays en zijn meerdimensionale arrays niet mogelijk. Hashing? Nope. Maps, vectoren, dictionaries en split- en joinfuncties? No way.

Ik heb dan wel weer andere middelen tot mijn beschikking maar die zijn vaak weer relatief traag. Zelfs in Progress. En die is van zichzelf al niet snel; in een vergelijkende test ong 100x trager dan dezelfde logica in .net

Een eerste oplossing van vandaag voor deel a deed er 4,5 seconden over. Dat was met temp-tables. Ik heb het herschreven naar een oplossing met een (1- dimensionaal) array en die was in zo'n 200ms klaar.

Alleen, omdat ik dus geen 2-dimensionale arrays heb moest ik het ombouwen naar 1-dimensionaal. En in een 1-based systeem. Maar door een fout in het omrekenen van x,y naar array-index, kostte het me bijna een uur extra....

https://github.com/patric...ster/2021/Day-11/day-11.p

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • Cranzai
  • Registratie: November 2012
  • Laatst online: 01-09 22:00
Soultaker schreef op zaterdag 11 december 2021 @ 22:15:
Dag 10 deel 1 in Brainfuck (geen spoiler tags want het is Brainfuck):
Brainfuck:
1
2
3
4
5
6
7
8
9
10
>>>+>>>+++++>,[---------->+<[------------------------------[-[------------------
-[--[-----------------------------[--[------------------------------[[-]>->>+>++
+<<<<]>[->+>>+++<<<]<]>[->>+>++<<<]<]>[->+>>++<<<]<]>[->>+>++++<<<]<]>[->+>>++++
<<<]<]>[->>+>+<<<]<]>[->+>>+<<<]>[->>[<<<<+>>>>-]<]>[-<<<<[->+<]>>+>>>[<<<<->>+>
>-]<<<<[[-]>->[<<+>>-]<<<<[[-]>>[<+>-]<<<]>+>-[-[-[-<-<<<[<<<]>>>>+++++++>>[-]+>
+++>>[-]+>+>>[-]+>+++++>>[-]+>++>>[>>>]>]<[-<<<[<<<]>>>>+++++++>>[-]+>+++++++++>
>[-]+>+>>[-]+>+>>[>>>]]>]<[-<<<[<<<]>>>>+++++++>>[-]+>+++++>>[>>>]]>]<[-<<<[<<<]
>>>>+++>>[>>>]]<<<[<<<]>>>[>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->[-]>
[-]>+<+<<[->+<]]]]]]]]]]]>[<+>-]>],----------[,----------]+++++>>]>[->[-]<]>]<<<
]>[-<<[[-]<]>+++++>>]<,]<[-]<<<[+++++[->++++++++<]>.[-]<<<<]++++++++++.[-]

Iets leesbaardere versie hier: https://github.com/maksve...de/blob/master/2021/10.bf ("leesbaar" is relatief)

Complexiteit is O(N log N) dus draait vrij vlot; zelfs de Dataghost inputs gaan in minder dan 1 seconde.

Ik was van plan om deel 2 ook te doen, maar ik weet niet of ik er nog tijd voor/zin in heb.
What the actual duck? Wat is dit voor taal joh _O-

Acties:
  • 0 Henk 'm!

  • Cranzai
  • Registratie: November 2012
  • Laatst online: 01-09 22:00
P_Tingen schreef op zaterdag 11 december 2021 @ 22:52:
[...]

En ik wil daar nog aan toevoegen dat het niet altijd voor iedereen een makkie is. Ik lees hier heel vaak dat het dat wel is voor een aantal mensen. Prima, maar to my fellow programmers die - net als ik - regelmatig strijden om het antwoord te vinden: je bent niet alleen.

In mijn geval ligt het niet aan gebrek aan ervaring, ik programmeer sinds mijn 16e en ben nu 51. Ik programmeer alleen altijd andere dingen dan hier, nml voornamelijk ERP-achtige dingen. Ik moet met mijn 4GL dingen uithalen waar het niet voor geschikt is en die ik ook niet gewend ben. Dat is ook precies waarom ik meedoe, maar het levert wel veel problemen op. Zo werkt Progress met 1-based arrays en zijn meerdimensionale arrays niet mogelijk. Hashing? Nope. Maps, vectoren, dictionaries en split- en joinfuncties? No way.

Ik heb dan wel weer andere middelen tot mijn beschikking maar die zijn vaak weer relatief traag. Zelfs in Progress. En die is van zichzelf al niet snel; in een vergelijkende test ong 100x trager dan dezelfde logica in .net

Een eerste oplossing van vandaag voor deel a deed er 4,5 seconden over. Dat was met temp-tables. Ik heb het herschreven naar een oplossing met een (1- dimensionaal) array en die was in zo'n 200ms klaar.

Alleen, omdat ik dus geen 2-dimensionale arrays heb moest ik het ombouwen naar 1-dimensionaal. En in een 1-based systeem. Maar door een fout in het omrekenen van x,y naar array-index, kostte het me bijna een uur extra....

https://github.com/patric...ster/2021/Day-11/day-11.p
spoiler:
Een 1 dimensional array oplossing heb ik ook nog aan gedacht nadat ik mijn code geschreven had.

Alleen dan hoef je toch niet perse om te zetten tussen x,y en hoeft 1-based geen probleem te zijn. Sterker nog, je kunt de neighbours zelfs makkelijker vinden zonder vage list comprehension.

Wanneer je de lengte van elke rij weet, dan is zijn de buren:
-1-len, -len, +1-len
-1, +1
-1+len, +len, +1+len

Hoef je alleen te checken of de index in de range valt

Was eerst nog bezig met een verfijning van mijn oplossing met list comprehensions maar die had een bug in mijn recursie die ik niet kon oplossen dus toen niet meer aan deze 1D oplossing begonnen.

Acties:
  • 0 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 23-08 10:21
Leuk puzzeltje! Weer net klein detail gemist in deel 2 waardoor ik er verkeerd aan was begonnen.

spoiler:
Recursief opgelost door visited state bij te houden en voor deel 2 een extra boolean of een lower cave al 2x bezocht is of niet.

https://github.com/arjand...ain/python/12/solution.py

Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Dag 12 in Kotlin

Dit soort puzzels vind ik erg leuk. Nou treft het wel dat ik toevallig in mijn werk de laatste dagen veel met pathfinding dingen bezig ben.

spoiler:
Wederom bevalt mijn techniek wel erg goed van het heel lokaal houden van de mogelijkheden van een searchnode, binnen die node zelf. Maakt het debuggen elke keer een stuk simpeler.


Daarnaast ging part 2 wel mis, omdat ik iets doms vergat:
spoiler:
"start" mag niet 2x bezocht worden....

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Jemig, lang vastgezeten op deel 2!

Dag 12 in Kotlin

spoiler:
Echt een domme fout. Ik hou wat 'visited' is bij in een immutable collection dus de nieuwe state is een kopie. dan moet je wel in de kopie kijken, en niet in de vorige state. Doh!


Ah, meteen de eerste dag ook dat ik op deel 2 lager rank dan op deel 1. Wel m'n hoogste rank tot nu toe dus...tja :D

[ Voor 13% gewijzigd door Hydra op 12-12-2021 09:37 ]

https://niels.nu


Acties:
  • +2 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 12-09 21:17

Dricus

ils sont fous, ces tweakers

Dag 12 in Clojure

Leuke puzzel! Ik heb nog wel een beetje moeite gehad met deel 2 vanwege niet goed lezen, zucht... Wel leuk dat ik eindelijk een keer een compactere oplossing heb (als ik mijn blokje metadata aan het eind niet meereken) dan de altijd-leuk-om-te-bekijken-prachtig-mooi-compacte Kotlin oplossingen van @Hydra en @armageddon_2k1 ;).

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 12-09 22:18

DataGhost

iPL dev

Deze was nog wel leuk in elkaar te hacken :)
Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

spoiler:
Natuurlijk ging het even mis doordat ik de boel te snel las en het zo had gemaakt dat je elke kleine node tweemaal mocht bezoeken in plaats van maximaal 1 kleine node per pad.

[ Voor 44% gewijzigd door DataGhost op 12-12-2021 10:15 ]


Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 08:08

P_Tingen

omdat het KAN

Cranzai schreef op zaterdag 11 december 2021 @ 23:25:
[...]
spoiler:
Een 1 dimensional array oplossing heb ik ook nog aan gedacht nadat ik mijn code geschreven had.

Alleen dan hoef je toch niet perse om te zetten tussen x,y en hoeft 1-based geen probleem te zijn. Sterker nog, je kunt de neighbours zelfs makkelijker vinden zonder vage list comprehension.

Wanneer je de lengte van elke rij weet, dan is zijn de buren:
-1-len, -len, +1-len
-1, +1
-1+len, +len, +1+len

Hoef je alleen te checken of de index in de range valt

Was eerst nog bezig met een verfijning van mijn oplossing met list comprehensions maar die had een bug in mijn recursie die ik niet kon oplossen dus toen niet meer aan deze 1D oplossing begonnen.
spoiler:
Je moet wel omrekenen, kijk maar in dit voorbeeld met len=5:

01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

De linkerbuurman van locatie 11 is niet locatie-1 want die ligt een rij hoger helemaal rechts
Hier moet ik dus bepalen of de locatie op de rand van het veld ligt of niet; dus de x en y positie.

... en gaat over tot de orde van de dag


Acties:
  • +1 Henk 'm!

  • Cranzai
  • Registratie: November 2012
  • Laatst online: 01-09 22:00
P_Tingen schreef op zondag 12 december 2021 @ 10:14:
[...]


spoiler:
Je moet wel omrekenen, kijk maar in dit voorbeeld met len=5:

01 02 03 04 05
06 07 08 09 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

De linkerbuurman van locatie 11 is niet locatie-1 want die ligt een rij hoger helemaal rechts
Hier moet ik dus bepalen of de locatie op de rand van het veld ligt of niet; dus de x en y positie.
spoiler:
Hmm ja bij de randen is het idd niet zo handig

Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Dricus schreef op zondag 12 december 2021 @ 10:01:
Dag 12 in Clojure

Leuke puzzel! Ik heb nog wel een beetje moeite gehad met deel 2 vanwege niet goed lezen, zucht... Wel leuk dat ik eindelijk een keer een compactere oplossing heb (als ik mijn blokje metadata aan het eind niet meereken) dan de altijd-leuk-om-te-bekijken-prachtig-mooi-compacte Kotlin oplossingen van @Hydra en @armageddon_2k1 ;).
Dank! Ik vind jouw Clojure ook altijd interessant. Ik wil graag nog eens iets met Clojure doen, maar moet de tijd vinden ervoor.

Overigens kwam ik erachter dat ik gewoon een algoritme kon hergebruiken van vorige keren :Z :Z :Z

Dus ik heb dat maar even gegeneraliseerd en nu heb ik hele mooie
spoiler:
tree-search (BFS, DFS)
helper functies en is mijn code nog compacter :)

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Dricus schreef op zondag 12 december 2021 @ 10:01:
Leuke puzzel! Ik heb nog wel een beetje moeite gehad met deel 2 vanwege niet goed lezen, zucht... Wel leuk dat ik eindelijk een keer een compactere oplossing heb (als ik mijn blokje metadata aan het eind niet meereken) dan de altijd-leuk-om-te-bekijken-prachtig-mooi-compacte Kotlin oplossingen van @Hydra en @armageddon_2k1 ;).
Helaas, heb 'em nog wat opgeschoond ;) En ja dat blokje telt gewoon mee ja :D

[ Voor 3% gewijzigd door Hydra op 12-12-2021 10:31 ]

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
armageddon_2k1 schreef op zondag 12 december 2021 @ 10:24:
Dus ik heb dat maar even gegeneraliseerd en nu heb ik hele mooie
spoiler:
tree-search (BFS, DFS)
helper functies en is mijn code nog compacter :)
Ja ik wil die dingen nog naar m'n Graph class verplaatsen zodat het herbruikbaar is.

https://niels.nu


Acties:
  • +1 Henk 'm!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Ik vond het ook een erg leuke puzzle. Ik zat kort vast totdat ik doorhad dat de inputs bidirectioneel waren.

https://github.com/varien...tofcode2021/Puzzle12.java

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 12-09 21:17

Dricus

ils sont fous, ces tweakers

Hydra schreef op zondag 12 december 2021 @ 10:29:
Helaas, heb 'em nog wat opgeschoond ;) En ja dat blokje telt gewoon mee ja :D
Haha, nietes, potjandrie! :D ;)

Ik heb mijn oplossing nog wat geoptimaliseerd, waardoor hij ongeveer 2x zo snel is geworden.

spoiler:
Ik hield eerst een lijst van routes bij en telde aan het einde het aantal items in die lijst. Nu houd ik alleen maar een tellertje bij van het aantal routes, plus het maximaal aantal keer dat in een route een kleine cave voorkomt.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • +1 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:39

Janoz

Moderator Devschuur®

!litemod

Deel 1 was zo af, maar veel te lang met deel 2 bezig geweest..

spoiler:
Eerst verkeerd gelezen en iets gemaakt waarbij je elke smallCave 2x mocht bezoeken. Daarna vergeten start en end te negeren. Vervolgens moest ik mijn dochter nog naar de hockey brengen. Vervolgens had ik nog allemaal dubbel tellingen omdat mijn algoritme een pad waarbij er geen smallCave dubbel bezocht werd dubbel telde. Dus toen heb ik gewoon maar een set van paden bijgehouden ipv alleen het aantal. Had ik de ontdubbeling vanzelf. (en omdat ik druk aan het debuggen was had ik toch al de code geschreven die de paden in een string omzette)


Aanpassing van vandaag

spoiler:
Mijn algo gaat trouwens wel gruwelijk de mist in wanneer er 2 grote caves aan elkaar zitten, maar dat kwam in de sets niet voor. Zal dat waarschijnlijk wel aan moeten passen waneer @DataGhost met z'n sets aankomt :D. Dan zullen we daarnaast ook de discussie krijgen of "any number" ook 0 bevat ;)

[ Voor 25% gewijzigd door Janoz op 12-12-2021 10:53 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • tarlitz
  • Registratie: Maart 2010
  • Niet online
Oef, dag 12 vond ik erg moeilijk. Ik kreeg m'n recursie gewoon niet goed. Meer dan een uur mee bezig geweest, en uiteindelijk wat hints gevonden op verschillende plekken 😅

Acties:
  • 0 Henk 'm!

  • Diderikdm
  • Registratie: December 2020
  • Laatst online: 04-01-2024
Python dag 12

Prima dagje vandaag! Zal vast nog wat kunnen refactoren aan de looptijd van part 2 (1.5s), maar nu even geen zin meer in :D

Acties:
  • 0 Henk 'm!

  • DataGhost
  • Registratie: Augustus 2003
  • Laatst online: 12-09 22:18

DataGhost

iPL dev

Janoz schreef op zondag 12 december 2021 @ 10:48:
spoiler:
Mijn algo gaat trouwens wel gruwelijk de mist in wanneer er 2 grote caves aan elkaar zitten, maar dat kwam in de sets niet voor. Zal dat waarschijnlijk wel aan moeten passen waneer @DataGhost met z'n sets aankomt :D. Dan zullen we daarnaast ook de discussie krijgen of "any number" ook 0 bevat ;)
Ook voor vandaag denk ik niet dat ik sets ga maken, ik heb een paar oplossingen gezien die een paar dingen onnodig langzaam en kwadratisch doen maar over het algemeen denk ik dat het allemaal wel meevalt. Maar wie weet :P

Anyway, wat betreft de testcase die je noemt waarbij je de mist in gaat, die mag niet voorkomen.
spoiler:
Dan is er namelijk een oneindig aantal paden mogelijk in beide delen. Als de vraag nou was om het kortste pad te vinden, sure, dan kan het wel, maar dan zal je sowieso geen enkele cave meer dan eenmaal bezoeken.

Acties:
  • +1 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:39

Janoz

Moderator Devschuur®

!litemod

Tijdens het tikken kreeg ik iig een ingeving en heb nu eindelijk een simpele manier gevonden om mijn dubbeltellingen er uit te krijgen

spoiler:
In de specifieke situatie dat mijn algoritme zonder dubbel bezoek naar het einde ging telde hij het pad meerdere keren. Elke kleine grot in het pad leverde een extra pad op met de optie om die grot nog eens te mogen bezoeken. Een kleine test toevoegen in mijn eindconditie, alle paden met de optie een grot nog eens te bezoeken terwijl dat niet gedaan is negeren, en mijn algo draaide als een zonnetje. Gelijk maar ff een nieuwe versie gepushed :)


https://github.com/Janoz-...com/janoz/aoc/y2021/day12


edit: Toch nog een paar regels weg kunnen slopen en in kunnen korten. Hoewel ik nog niet heel bedreven in Kotlin ben zie ik bij @Hydra en @armageddon_2k1 wel dezelfde techniek

spoiler:
gewoon alle paden onthouden en die aan het einde tellen. Een beetje mijn oplossing voordat ik mijn dubbeltelling er uit gesloopt had

[ Voor 33% gewijzigd door Janoz op 12-12-2021 11:46 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09:39

Janoz

Moderator Devschuur®

!litemod

DataGhost schreef op zondag 12 december 2021 @ 11:02:
spoiler:
Dan is er namelijk een oneindig aantal paden mogelijk in beide delen. Als de vraag nou was om het kortste pad te vinden, sure, dan kan het wel, maar dan zal je sowieso geen enkele cave meer dan eenmaal bezoeken.
spoiler:
Precies de reden waarom mijn oplossing dan een stackoverflow gaat krijgen. Maar je zou kunnen beredeneren/afspreken dat alle lusjes niet dubbel geteld mogen worden. Dus dat A-B-A hetzelfde is als A-B-A-B-A.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • Remcoder
  • Registratie: November 2004
  • Laatst online: 11-09 15:20
Deze ook weer opgelost, ik had voor deel 2 wat anders verwacht :D

Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen


spoiler:
Ik had voor deel 2 verwacht dat we het kortste, of het langste pad ofzo zouden moeten gaan vinden. Wel weer leuk recursief op kunnen lossen :)

Voor deel 2 haal ik van de caves verbonden met de startcave de verbinding naar de startcave eruit zodat ik in mijn route vind algoritme daar geen rekening meer mee hoef te houden :)

Het is wel handig als je voor je hashcode implementatie nog rekening ermee houdt dat je niet de connections meeneemt in je berekening, dan krijg je heel snel een stackoverflow :D

Acties:
  • +3 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Ik heb de search gegeneraliseerd naar m'n Graph class dus nu is mijn oplossing nog maar 21 regels :D
Ik heb mijn oplossing nog wat geoptimaliseerd, waardoor hij ongeveer 2x zo snel is geworden.

spoiler:
Ik hield eerst een lijst van routes bij en telde aan het einde het aantal items in die lijst. Nu houd ik alleen maar een tellertje bij van het aantal routes, plus het maximaal aantal keer dat in een route een kleine cave voorkomt.
Die van mij doet er op deel 2 300ms over. Dat vind ik echt wel snel genoeg. Heeft ook nog eens als voordeel dat m'n oplossing herbruikbaar is als er weer een graph traversal probleem komt.

https://niels.nu


Acties:
  • +3 Henk 'm!

  • deboder
  • Registratie: December 2021
  • Laatst online: 28-07 22:54
Hallo allemaal,

van mij geen spoiler maar een alternatieve scorelijst.

Per vraag laat ik zien hoe lang iedereen over vraag 2 gedaan heeft !
( sommige onder de 10 seconden )

https://pastebin.com/gJTFfK46

Acties:
  • 0 Henk 'm!

  • Remcoder
  • Registratie: November 2004
  • Laatst online: 11-09 15:20
Remcoder schreef op zondag 12 december 2021 @ 11:42:
Deze ook weer opgelost, ik had voor deel 2 wat anders verwacht :D


***members only***


spoiler:
Ik had voor deel 2 verwacht dat we het kortste, of het langste pad ofzo zouden moeten gaan vinden. Wel weer leuk recursief op kunnen lossen :)

Voor deel 2 haal ik van de caves verbonden met de startcave de verbinding naar de startcave eruit zodat ik in mijn route vind algoritme daar geen rekening meer mee hoef te houden :)

Het is wel handig als je voor je hashcode implementatie nog rekening ermee houdt dat je niet de connections meeneemt in je berekening, dan krijg je heel snel een stackoverflow :D
Toch nog een beetje optimized.

spoiler:
Als ik de ArrayList vervang door een HashSet wordt die ineens trager :D Ik vermoed dat dat komt doordat add een duurdere operatie is, duurder dan het scheelt dat contains een goedkopere operatie is.

Acties:
  • +1 Henk 'm!

  • iThinkSo
  • Registratie: April 2011
  • Laatst online: 02-04 12:35

iThinkSo

Ik heb deze tekst en jij niet!

deboder schreef op zondag 12 december 2021 @ 12:08:
Hallo allemaal,

van mij geen spoiler maar een alternatieve scorelijst.

Per vraag laat ik zien hoe lang iedereen over vraag 2 gedaan heeft !
( sommige onder de 10 seconden )

https://pastebin.com/gJTFfK46
Oof, niet uitgebreid moeten ontbijten tussen deel 1 en deel 2 vanochtend :P

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
Was weer prima te doen ondanks de storingen van vrouw en kinderen tussendoor ;)
https://github.com/CodeEn...er/aoc/aoc2021/Day12.java

spoiler:
Even moeten denken hoe ik voor stap 2 het beste de conditie kon inbouwen in de bestaande code, maar dat is goed gelukt. Ik begon met het bijhouden van alle correcte paden en dan het totaal te tellen maar bedacht me dat ik net zo goed alleen het aantal kon berekenen, dus dat alsnog omgebouwd.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Mschamp
  • Registratie: April 2014
  • Laatst online: 11:48
iThinkSo schreef op zondag 12 december 2021 @ 12:12:
[...]

Oof, niet uitgebreid moeten ontbijten tussen deel 1 en deel 2 vanochtend :P
Laat maar, ik had fout gelezen

[ Voor 36% gewijzigd door Mschamp op 12-12-2021 12:25 ]


Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 12-09 21:17

Dricus

ils sont fous, ces tweakers

Hydra schreef op zondag 12 december 2021 @ 11:42:
Ik heb de search gegeneraliseerd naar m'n Graph class dus nu is mijn oplossing nog maar 21 regels :D
Gaaf! Ik stel me zo voor dat de gasten aan de top van het leaderboard ook zo'n library van herbruikbare code hebben, om super snel oplossingen te kunnen maken.

Het wordt wel een beetje lastig vergelijken zo, want ik heb geen library met herbruikbare functies. Maargoed, alsnog ben ik blij met mijn compacte oplossing :D.
Die van mij doet er op deel 2 300ms over. Dat vind ik echt wel snel genoeg. Heeft ook nog eens als voordeel dat m'n oplossing herbruikbaar is als er weer een graph traversal probleem komt.
Mijn oplossing van deel 2 doet er nu tussen de 600 en 650 ms over. Wellicht dat het nog sneller kan, maar de immutable datastructuren hebben wel een zekere performance penalty.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • +1 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 23-08 10:21
deboder schreef op zondag 12 december 2021 @ 12:08:
Hallo allemaal,

van mij geen spoiler maar een alternatieve scorelijst.

Per vraag laat ik zien hoe lang iedereen over vraag 2 gedaan heeft !
( sommige onder de 10 seconden )

https://pastebin.com/gJTFfK46
Tip: met deze browser-extensie kan je delta's per dag ook zien op de leaderboard pagina

Acties:
  • 0 Henk 'm!

  • diabolofan
  • Registratie: Mei 2009
  • Laatst online: 11-09 11:09
Was weer leuk om te doen!

Members only:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

Acties:
  • +1 Henk 'm!

  • iThinkSo
  • Registratie: April 2011
  • Laatst online: 02-04 12:35

iThinkSo

Ik heb deze tekst en jij niet!

diabolofan schreef op zondag 12 december 2021 @ 12:32:
Was weer leuk om te doen!


***members only***
spoiler:
Als je het goed doet heb je toch helemaal geen duplicate paths?

Acties:
  • 0 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 23-08 10:21
spoiler:
Optimalisatie mbv memoization gaat mn Python oplossing van ~600ms naar ~80ms:
https://github.com/arjand...n/12/solution_memoized.py

Afbeeldingslocatie: https://tweakers.net/i/pMVJ2hlpuFA4fooGEvPkIg1yr5U=/800x/filters:strip_exif()/f/image/kUJr6iEXQkAgFDfUvyLFrPSu.png?f=fotoalbum_large

[ Voor 46% gewijzigd door MrHaas op 12-12-2021 13:01 ]


Acties:
  • 0 Henk 'm!

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Dat kostte langer dan gedacht... :X
https://github.com/FransB...src/AoC2021.Code/Day12.cs

spoiler:
Eerst aan de slag gegaan met mn eigen algorithm library Algorithmia die een geavanceerde graph class heeft maar het kostte op het eerste gezicht meer moeite om er een algoritme bij te maken in de graph dan een simpelere variant zelf maar te maken.

Ik liep wat vast door het vechten met de nieuwe datastructure maar uiteindelijk wel af gekregen. Oplossing voor puzzle 2 was straightforward maar omdat ik de paths copieer is deze niet zo efficient.


edit:
spoiler:
Nog een keer kijkend is het wel mogelijk met mn eigen directedgraph en zn DFS algo om dit op te lossen omdat het cycles kan toestaan, maar dat zag ik even niet in vanochtend 8)7

[ Voor 13% gewijzigd door EfBe op 12-12-2021 13:25 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Bij mij zat het mee vandaag. Wat ik bedacht had werkte in 1 keer.
https://github.com/gjscho...b/master/Day12/Program.cs

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Dricus schreef op zondag 12 december 2021 @ 12:27:
Gaaf! Ik stel me zo voor dat de gasten aan de top van het leaderboard ook zo'n library van herbruikbare code hebben, om super snel oplossingen te kunnen maken.
Oh, zeker hoor. Ik zei het eerder ook al maar een Point class hebben met allemaal standaard functies (neighbors, directions, etc.) echt wel echt een grote pre: die gebruik je in zo'n 40% van de oplossingen ofzo.
Het wordt wel een beetje lastig vergelijken zo, want ik heb geen library met herbruikbare functies. Maargoed, alsnog ben ik blij met mijn compacte oplossing :D.
Ja klopt, als het een code-golf contest zou zijn, dan is dit natuurlijk valsspelen :)
Mijn oplossing van deel 2 doet er nu tussen de 600 en 650 ms over. Wellicht dat het nog sneller kan, maar de immutable datastructuren hebben wel een zekere performance penalty.
Oh vast. Mijn oplossingen maakt ook iedere keer kopieen van de collections enzo. Zal vast efficienter kunnen maar onder de 1s vind ik het wel best.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Moofnor
  • Registratie: April 2010
  • Laatst online: 06:11

Moofnor

King of my castle

Oke, part 1 ging soepel. Maar voor part2 kreeg ik vanaf het 2e voorbeeld een max recursion depth terug...
Python, soortgelijke oplossing als @Diderikdm

spoiler:
def contains2small(self, path):
--c = [path.count(p) for p in path if (p.islower() and len(p) == 1)
--if c == []:
----return False
--return max(c) >= 2

deze functie gebruik ik om te kijken of er al een kleine cave 2 keer voorkomt. Na mijn check van de code van Diderikdm realiseerde ik dat alleen checken op "start" ook voldoende was.
Dus len(p) == 1 vervangen voor p is not "start", en toen werkte het opeens wel.

Ik heb alleen geen idee waarom :|

- I can accurately say I was born on Earth, but it's not very precise. I can precisely say I was born at latitude 37.229N, longitude 115.811W, but that is not at all accurate - Matt Parker


Acties:
  • 0 Henk 'm!

  • Diderikdm
  • Registratie: December 2020
  • Laatst online: 04-01-2024
Moofnor schreef op zondag 12 december 2021 @ 13:08:
Oke, part 1 ging soepel. Maar voor part2 kreeg ik vanaf het 2e voorbeeld een max recursion depth terug...
Python, soortgelijke oplossing als @Diderikdm

spoiler:
def contains2small(self, path):
--c = [path.count(p) for p in path if (p.islower() and len(p) == 1)
--if c == []:
----return False
--return max(c) >= 2

deze functie gebruik ik om te kijken of er al een kleine cave 2 keer voorkomt. Na mijn check van de code van Diderikdm realiseerde ik dat alleen checken op "start" ook voldoende was.
Dus len(p) == 1 vervangen voor p is not "start", en toen werkte het opeens wel.

Ik heb alleen geen idee waarom :|
spoiler:
Check je met len(p) niet op de lengte van de waarde en niet de count van de p in path? (len('dz') is bijvoorbeeld al 2)

Acties:
  • +1 Henk 'm!

  • Moofnor
  • Registratie: April 2010
  • Laatst online: 06:11

Moofnor

King of my castle

Diderikdm schreef op zondag 12 december 2021 @ 13:24:
[...]


spoiler:
Check je met len(p) niet op de lengte van de waarde en niet de count van de p in path? (len('dz') is bijvoorbeeld al 2)
spoiler:
Doh, inderdaad |:( Het was wel de bedoeling om op lengte te filteren, en zo start en end er uit te halen. Maar na het eerste voorbeeld waren er natuurlijk punten met meer dan 1 letter...
Ik ga mij even lopen schamen. Maar thx!

- I can accurately say I was born on Earth, but it's not very precise. I can precisely say I was born at latitude 37.229N, longitude 115.811W, but that is not at all accurate - Matt Parker


Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Hydra schreef op zondag 12 december 2021 @ 09:35:
Ah, meteen de eerste dag ook dat ik op deel 2 lager rank dan op deel 1. Wel m'n hoogste rank tot nu toe dus...tja :D
Aangezien er steeds meer mensen afhaken wordt je rank ook hoger ;) Het zou interessant zijn om te zien waar je valt in alle mensen die hem afhebben. Als ik in het begin in de top 20% zit en langzaam afdaal naar de top 40% al naar de dagen vorderen dan kan m’n netto rank wel stijgen maar al met al stijg ik niet mee met m’n mededeelnemers.

Overigens had ik m’n oplossing omgekat naar een functionele recursieve oplossing maar die deed er 12 seconden over….. vaag. M’n vermoeden is dat de list van Kotlin niet echt optimaal is voor m’n list operation. Kotlin heeft, in tegenstelling tot Scala/Clojure, geen immutable persistent data structures. Oftewel alles wordt elke keer volledig gekopieerd….. Ik blijf toch voor sommige dingen wel fan van gewoon korte imperatieve stukjes, netjes geïsoleerd in lazy sequences oid.

[ Voor 30% gewijzigd door armageddon_2k1 op 12-12-2021 13:56 ]

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
armageddon_2k1 schreef op zondag 12 december 2021 @ 13:53:
Aangezien er steeds meer mensen afhaken wordt je rank ook hoger ;)
Ja, maar het is wel substantieel. Normaal zit ik rond de 9k, nu 7k.
Het zou interessant zijn om te zien waar je valt in alle mensen die hem afhebben. Als ik in het begin in de top 20% zit en langzaam afdaal naar de top 40% al naar de dagen vorderen dan kan m’n netto rank wel stijgen maar al met al stijg ik niet mee met m’n mededeelnemers.
Ja, dat lijkt me ook wel wat. Moet wel te doen zijn met wat er nu gepubliceerd wordt ook.
Overigens had ik m’n oplossing omgekat naar een functionele recursieve oplossing maar die deed er 12 seconden over….. vaag. M’n vermoeden is dat de list van Kotlin niet echt optimaal is voor m’n list operation. Kotlin heeft, in tegenstelling tot Scala/Clojure, geen immutable persistent data structures. Oftewel alles wordt elke keer volledig gekopieerd…..
Is het geen fout in je datastructuur?

spoiler:
Mijn implementatie is een recursieve DFS waarbij alles ook gewoon gekopieerd wordt, en die doet 300ms over deel 2.

https://niels.nu


Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Dag 12 ook opgelost. Vrij klassiek probleem; niet al te ingewikkeld voor degenen die enigszins bekend zijn met graaftheorie. Normale oplossing (~150 ms in Python) en snelle variant (~30 ms in Python). Kom maar op met die DataGhost tests })

Acties:
  • +1 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Hydra schreef op zondag 12 december 2021 @ 15:12:
[...]


Is het geen fout in je datastructuur?

spoiler:
Mijn implementatie is een recursieve DFS waarbij alles ook gewoon gekopieerd wordt, en die doet 300ms over deel 2.
Ik heb het weer geprobeerd, maar nu is ie in 130ms (MB Air M1) klaar. Denk dat ik ergens iets heel lomps deed met lijsten.

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • deboder
  • Registratie: December 2021
  • Laatst online: 28-07 22:54
Soultaker schreef op zondag 12 december 2021 @ 15:57:
Dag 12 ook opgelost. Vrij klassiek probleem; niet al te ingewikkeld voor degenen die enigszins bekend zijn met graaftheorie. Normale oplossing (~150 ms in Python) en snelle variant (~30 ms in Python). Kom maar op met die DataGhost tests })
Wat zijn DataGhost tests eigenlijk ?

Acties:
  • +5 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
deboder schreef op zondag 12 december 2021 @ 17:44:
[...]


Wat zijn DataGhost tests eigenlijk ?
Dan ben je trots op je antwoord, dat ie binnen 50ms een antwoord heeft op je fanless MacBook Air en dan laad je dan speciale inputs die @DataGhost heeft gecureerd in en dan smelt je laptop door je eikenhouten tafel.

M.a.w. @DataGhost inputs tonen goed aan of je oplossingen goed schalen.

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • gedonie
  • Registratie: Januari 2011
  • Laatst online: 09-09 10:31
Ik heb vandaag maar even snel dag 11 en dag 12 in Java gedaan, had gisteren helaas geen tijd.

spoiler:
Moest we weer even diep graven hoe je ook al weer een pathfinding algoritme schrijft voor dag 12. Gelukkig had ik een opzet gekozen voor deel 1 die ik direct kon toepassen op deel 2.


Edit: updated van de links om direct naar de Java bestanden te gaan.

[ Voor 10% gewijzigd door gedonie op 12-12-2021 18:43 ]


Acties:
  • +1 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 10-09 18:35

TrailBlazer

Karnemelk FTW

Ik merk nu toch echt dat mijn gebrek aan theoretische achtergrond een probleem aan het worden is. Had ook eerste een fout dat ik alle routes aan een list appende. Ik had dus nogal veel duplicates in part 2.
Wel had ik mijn recursieve functie redelijk snel aan de praat alleen een mutable list gaf wat problemen in het begin.

Acties:
  • +1 Henk 'm!

  • Lisper
  • Registratie: September 2015
  • Laatst online: 05-09 20:26
Ik was van plan het in Rust te doen, maar geruzie met de borrow checker deed me vandaag naar Clojure uitwijken. De persistent datastructures komen goed van pas voor dit type probleem.

https://github.com/chrisb...ventofcode/2021/day12.clj

Acties:
  • 0 Henk 'm!

  • Cranzai
  • Registratie: November 2012
  • Laatst online: 01-09 22:00
Eerste reactie op de puzzel van vandaag was: que?
Daarna toch redelijk vlot deel A kunnen maken voor de F1
spoiler:
(had een beetje hulp nodig met de volgorde van de recursie en wat shallow/deep copy details)
. Deel B wel snel kunnen bedenken maar niet meer de tijd gehad het uit te voeren, zojuist nog ff er bij ingehackt.

spoiler:
Een heel lelijk if statementje erbij in gegooid met een extra variable die naar de class-functie gepasst wordt.


https://github.com/Cranza...021/day12/python/day12.py

Acties:
  • 0 Henk 'm!

  • ydderf
  • Registratie: December 2017
  • Laatst online: 11:49
Day 12 in C#

Deel 1 was nog redelijk te doen. Deel twee ben ik te lang mee aan het stoeien geweest. Kwam vaak in de buurt van de mogelijke routes, maar altijd een voor mij onverklaarbare afwijking.
Uiteindelijk wel wat voor elkaar gekregen, maar eigenlijk niet opgelost zoals ik eerst in mijn hoofd had.

Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat


Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 08:08

P_Tingen

omdat het KAN

Op een of andere manier had ik veel dubbele routes voor deel 1, snap niet precies hoe dat kan, maar een extra check loste dat weer op. Later ook nog zitten kijken maar een reden kon ik zo niet bedenken. Deel 2 bleef uiteindelijk hangen. De uitkomst van dat moment maar ingevuld en dat was goed; mijn algoritme eindigt dus kennelijk niet Ah well, niet de mooiste code vandaag. Het kan niet altijd feest zijn

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • ElkeBxl
  • Registratie: Oktober 2014
  • Laatst online: 02-07 09:03

ElkeBxl

Tassendraagster

Uiteindelijk toch nog dag 12 in Rust kunnen doen. Ik heb echt zo lang op deel 2 gezeten omdat ik niet deftig aan het lezen was en het gewoon verkeerd begrepen had 8)7
Lisper schreef op zondag 12 december 2021 @ 19:04:
Ik was van plan het in Rust te doen, maar geruzie met de borrow checker deed me vandaag naar Clojure uitwijken.
Ik zat ook echt in ruzie met de borrow checker vandaag. Uiteindelijk opgelost met een paar .clone() statements... There has to be a better way :?

Without nipples, boobs are pointless - 365 project - In mijn hoofd is het alle dagen Kerstmis - What type of bees make milk? Boobies! - What type of bees are scary? BoooOOOOOooobeees! - Cactusliefhebster


Acties:
  • 0 Henk 'm!

  • Varienaja
  • Registratie: Februari 2001
  • Laatst online: 14-06 16:43

Varienaja

Wie dit leest is gek.

Dag 13 in Java. Leuk! Niet al te lastig, al moest ik eerst dertien kronkels in mijn hoofd oplossen voordat ik in de gaten had hoe je vouwen moet in code.

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

  • bakkerjangert
  • Registratie: Februari 2012
  • Laatst online: 11:14
Leuke opdracht vandaag. Code in Python.

spoiler:
Al had ik verwacht dat part 1 al de code zou zijn en part 2 bijvoorbeeld wat het maximum aantal stippen op één positie is o.i.d. Nu had ik part 2 al met het programeren van part 1

Acties:
  • 0 Henk 'm!

  • armageddon_2k1
  • Registratie: September 2001
  • Laatst online: 27-07 10:18
Dag 13 in Kotlin.

Deze ging erg makkelijk voor me, maar had wat off-by-one errors.

spoiler:
De juiste data-set, namelijk een set, kiezen helpt. Dan krijg je het samenvoegen van dubbele posities gratis


Daarnaast ook wel weer handig dat ik een functie had liggen om een collectie van punten weg te schrijven tot een plaatje.

[ Voor 16% gewijzigd door armageddon_2k1 op 13-12-2021 08:07 ]

Engineering is like Tetris. Succes disappears and errors accumulate.


Acties:
  • 0 Henk 'm!

  • Dricus
  • Registratie: Februari 2002
  • Laatst online: 12-09 21:17

Dricus

ils sont fous, ces tweakers

Dag 13 in Clojure

Leuke puzzel voor de maandagochtend! Niet al te moeilijk en een leuke afwisseling. Aangezien ik alle benodigde functionaliteit voor deel 2 al bij deel 1 had gemaakt, hoefde ik voor deel 2 de boel alleen nog maar te visualiseren om de code te kunnen lezen.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...


Acties:
  • +1 Henk 'm!

  • Lisper
  • Registratie: September 2015
  • Laatst online: 05-09 20:26
ElkeBxl schreef op zondag 12 december 2021 @ 22:39:
Ik zat ook echt in ruzie met de borrow checker vandaag. Uiteindelijk opgelost met een paar .clone() statements... There has to be a better way :?
Ik zat al naar crates met persistent datastructures voor Rust te kijken, dat zou waarschijnlijk wel werken, maar had geen tijd en zin meer om dat eerst uit te vogelen.

Acties:
  • 0 Henk 'm!

  • Hydra
  • Registratie: September 2000
  • Laatst online: 21-08 17:09
Dag 13 in Kotlin

Niet erg moeilijk alleen had ik in eerste instantie een wat te complexe aanpak die voor een bug zorgde in deel 2. Moeilijke code weggegooid, makkelijke code ervoor in de plaats, en toen werkte het wel.

https://niels.nu


Acties:
  • 0 Henk 'm!

  • Mschamp
  • Registratie: April 2014
  • Laatst online: 11:48
Dag 13 in C#

Deze viel ook nog mee. Controleren van samenvallende punten ging vanzelf. en deel 1 perfect herbruikbaar voor deel 2.

Acties:
  • 0 Henk 'm!

  • ydderf
  • Registratie: December 2017
  • Laatst online: 11:49
Dag 13 in C#
Deze vond ik goed te doen, al had ik eerst de opdracht niet goed gelezen.
Deel 1 al iets uitgebreider gemaakt zodat deel twee lekker snel ging.
spoiler:
Voor deel één had ik al alle vouwen uitgevoerd, totdat ik zag dat je naar één vouw al klaar was

Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat


Acties:
  • 0 Henk 'm!

  • Diderikdm
  • Registratie: December 2020
  • Laatst online: 04-01-2024
Python dag 13

Prima dagje weer, wel even vast gezeten bij part 1: #beterlezen 8)7

Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 08:08

P_Tingen

omdat het KAN

Deze was heel goed te doen vandaag. Eigenlijk in 1x ingeklopt. Ook in 4GL code prima te doen, mooie oplossing in relatief weinig code.

Dag 13 in Progress 4GL

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • diabolofan
  • Registratie: Mei 2009
  • Laatst online: 11-09 11:09
Personal record: Deel 2 in 59 sec na deel 1 gesubmit :)

Wel nog even naar wat performance optimalisaties gaan kijken, want om de 1 of andere reden duurt dit 2 sec om uit te rekenen, terwijl er nou niet echt veel spannends gebeurd...

Acties:
  • 0 Henk 'm!

  • FrankMennink
  • Registratie: Mei 2011
  • Laatst online: 13-04 11:34
Dag 13 in Python

Leuke start van de week. Paar keer goed moeten lezen.

spoiler:
Ik zat met wat te doen met punten op de fold line, tot ik na 3 keer lezen zag staan dat "but dots will never appear exactly on a fold line"

Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Diderikdm schreef op maandag 13 december 2021 @ 09:41:
Python dag 13

Prima dagje weer, wel even vast gezeten bij part 1: #beterlezen 8)7
Nice. Ik had een iets uitgebreidere aanpak gekozen, omdat ik niet zeker wist of er punten op de vouwen mochten zitten (note to self: staat wel letterlijjk in de tekst, dus voortaan #beterlezen). Waar ik altijd de mist in ga in python is dat de x en y verkeerd om gebruikt worden en dat ik moet voorkomen dat ik loop over een lijst die ik vervolgens in de loop manipuleer.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 08:08

P_Tingen

omdat het KAN

KabouterSuper schreef op maandag 13 december 2021 @ 10:29:
[...]
Nice. Ik had een iets uitgebreidere aanpak gekozen, omdat ik niet zeker wist of er punten op de vouwen mochten zitten (note to self: staat wel letterlijjk in de tekst, dus voortaan #beterlezen). Waar ik altijd de mist in ga in python is dat de x en y verkeerd om gebruikt worden en dat ik moet voorkomen dat ik loop over een lijst die ik vervolgens in de loop manipuleer.
Dat laatste is heel vaak het probleem met de AoC opgaven, daar heb ik dus ook last van. Als je er niet op let, verander je de index, waardoor je nooit de lus verlaat.

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • evanraalte
  • Registratie: December 2008
  • Laatst online: 31-08 20:59
Dag 13 in Python

spoiler:
Ging goed vandaag, gebruikt gemaakt van een set om overlappende delen weg te filteren. Wel eerst de mist in gegaan omdat ik down/right aan het folden was.

[ Voor 4% gewijzigd door evanraalte op 13-12-2021 10:39 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
Ik had deel 2 niet zo verwacht :P
https://github.com/CodeEn...er/aoc/aoc2021/Day13.java
spoiler:
Ik had er bijna spijt van dat ik de print functie niet had gemaakt voor het oplossen van deel 2. En eigenlijk moet ik de doFold() nog wat refactoren aangezien het folden in beide gevallen zo goed als hetzelfde is. Maar goed, het werkt.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • diabolofan
  • Registratie: Mei 2009
  • Laatst online: 11-09 11:09
diabolofan schreef op maandag 13 december 2021 @ 10:25:
Personal record: Deel 2 in 59 sec na deel 1 gesubmit :)

Wel nog even naar wat performance optimalisaties gaan kijken, want om de 1 of andere reden duurt dit 2 sec om uit te rekenen, terwijl er nou niet echt veel spannends gebeurd...
Zat hem in het vullen van de map. Voor elke (x,y) door de lijst met coords zoeken om te kijken of daar een . of een # moest staan was beetje te traag. Omgebouwd dat bij inlezen de coords direct naar een object gaan die direct geaccessed kunnen worden, dit was uiteraard veel sneller.

Nog een tip voor die mensen boven me :+
Ik neem juist altijd echt even de tijd om voorbeelden te begrijpen en goed begrijpend te lezen, in plaats van direct in de prog-mode te springen, om dus te voorkomen dat ik dingen mis/verkeerd interpreteer. Gelukkig dus ook nog geen uurtjes kwijt geweest door verkeerde interpretaties oid (dus als mijn code qua uitkomst klopte voor het voorbeeld, was de echte input in +90% van de gevallen ook in 1 keer goed), laten we hopen dat dat zo blijft.
Wat had je dan verwacht? Deel 1 hoefde je maar 1 fold te doen, dus had in ieder geval al verwacht dat je bij Deel 2 alle folds zou moeten doen...?

[ Voor 22% gewijzigd door diabolofan op 13-12-2021 10:54 ]


Acties:
  • 0 Henk 'm!

  • Diderikdm
  • Registratie: December 2020
  • Laatst online: 04-01-2024
KabouterSuper schreef op maandag 13 december 2021 @ 10:29:
[...]

Nice. Ik had een iets uitgebreidere aanpak gekozen, omdat ik niet zeker wist of er punten op de vouwen mochten zitten (note to self: staat wel letterlijjk in de tekst, dus voortaan #beterlezen). Waar ik altijd de mist in ga in python is dat de x en y verkeerd om gebruikt worden en dat ik moet voorkomen dat ik loop over een lijst die ik vervolgens in de loop manipuleer.
Ja eens, ben ik ook veel te vaak tegen aan gelopen.. Ik probeer nu (wanneer dit niet volkomen onlogisch is gegeven de puzzel) een dict te gebruiken met (x,y) als key; dit is vooral handig wanneer je alleen de gevulde waarden in een dataset nodig hebt

[ Voor 7% gewijzigd door Diderikdm op 13-12-2021 11:38 ]


Acties:
  • 0 Henk 'm!

  • Devilfish
  • Registratie: Augustus 2001
  • Laatst online: 05-09 22:14
Deel 1 was eenvoudig, maar deel 2 ging even mis door het missen van de laatste kolom en rij... Daardoor was de code niet goed te lezen :(

Dag 13 in C#

Acties:
  • 0 Henk 'm!

  • EfBe
  • Registratie: Januari 2000
  • Niet online
Dat was lekker straightforward :) Had 1 klein bugje na puzzle 1.
https://github.com/FransB...ode/Day13Classes/Paper.cs
En aanroep:
https://github.com/FransB...src/AoC2021.Code/Day13.cs

spoiler:
Ik had verwacht dat de vouwen zo geplaatst zouden zijn dat upvouwen bv een deel niet zou overlappen dus ik had top/left ook gedefinieerd, zodat mn 'actieve' array niet gebonden was aan (0,0), maar dat was overkill.

Heb de uitkomst van 2 niet digitaal bepaald overigens, want dat zou kennis van fonts vereisen, dus maar het array afgedrukt en ingetikt wat er stond :) Was op zich nog wel een leuke toevoeging geweest

(edit) Ik heb dus een array gebruikt en niet een lijst met punten, en een array is achteraf gezien niet zo bijster efficient, maar goed :)

[ Voor 25% gewijzigd door EfBe op 13-12-2021 11:03 ]

Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com


Acties:
  • +1 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 09:18

Creepy

Tactical Espionage Splatterer

(jarig!)
diabolofan schreef op maandag 13 december 2021 @ 10:51:
Wat had je dan verwacht? Deel 1 hoefde je maar 1 fold te doen, dus had in ieder geval al verwacht dat je bij Deel 2 alle folds zou moeten doen...?
Alle folds had ik ook verwacht ja, maar niet het bepalen van de uitkomst bij deel 2 ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1 ... 9 ... 16 Laatste