Wel grappig trouwens, dat IntelliJ
spoiler:
List<Octopus> o autocompletes naar "octopi", maar vervolgens deze in spellingscontrole een spelfout vindt 
Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.
Mooie. Deze herhaalt zichzelf inderdaad, dus de octopussen zullen nooit allemaal tegelijkertijd flashen.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
When life gives you lemons, start a battery factory
I stand corrected! Scherp gevondenDataGhost 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
Begon overigens vanuitKabouterSuper schreef op zaterdag 11 december 2021 @ 14:06:
[...]
Mooie. Deze herhaalt zichzelf inderdaad, dus de octopussen zullen nooit allemaal tegelijkertijd flashen.
1
2
3
4
5
6
7
8
9
10
| 7445734518 5163180850 2800640085 4678620284 2065543655 3405508127 2716226134 2134677770 7258654163 4458063276 |
Meestal zijn de Zaterdag opdrachten de moeilijke dus ik ben een beetje bang voor wat er mogen komen gaatCreepy schreef op zaterdag 11 december 2021 @ 11:42:
Echt een opdracht voor de zaterdag ochtend met een bakje koffie
https://niels.nu
ShitHappens schreef op zaterdag 11 december 2021 @ 14:04:
Wel grappig trouwens, dat IntelliJspoiler:List<Octopus> o autocompletes naar "octopi", maar vervolgens deze in spellingscontrole een spelfout vindt
"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
Spoilers voor dag 9 en 11:MrHaas schreef op zaterdag 11 december 2021 @ 06:50:
spoiler:BFS gebruikt om elke stap te berekenen: https://github.com/arjand...ain/python/11/solution.py
En herhaalt zich elke 7 rondesDataGhost schreef op zaterdag 11 december 2021 @ 14:08:
[...]
en komt pas na zo'n 150 stappen in die loop terecht.
Me think, why waste time say lot word, when few word do trick.
Verwijderd
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...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
Nice, ga ik onthouden!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.
Engineering is like Tetris. Succes disappears and errors accumulate.
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.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...
[ Voor 11% gewijzigd door DataGhost op 11-12-2021 17:33 ]
Oke, oke, maar dan mogen de inzendingen ook niet korter zijn dan 100 sloc.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…
Me think, why waste time say lot word, when few word do trick.
* Creepy gaat bleekjes naast armageddon_2k1 zitten.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…
"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
Verwijderd
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):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?
[ Voor 4% gewijzigd door Verwijderd op 11-12-2021 18:21 ]
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.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?
Verwijderd
Tja, als engineer heb ik toch meer houvast bij tellen vanaf 1, maar ieder z'n dingDataGhost 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?
[ Voor 8% gewijzigd door Verwijderd op 11-12-2021 18:37 ]
[ Voor 16% gewijzigd door MueR op 11-12-2021 19:11 ]
Anyone who gets in between me and my morning coffee should be insecure.
Verwijderd
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.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.
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
1
2
3
4
5
6
7
8
9
10
| >>>+>>>+++++>,[---------->+<[------------------------------[-[------------------ -[--[-----------------------------[--[------------------------------[[-]>->>+>++ +<<<<]>[->+>>+++<<<]<]>[->>+>++<<<]<]>[->+>>++<<<]<]>[->>+>++++<<<]<]>[->+>>++++ <<<]<]>[->>+>+<<<]<]>[->+>>+<<<]>[->>[<<<<+>>>>-]<]>[-<<<<[->+<]>>+>>>[<<<<->>+> >-]<<<<[[-]>->[<<+>>-]<<<<[[-]>>[<+>-]<<<]>+>-[-[-[-<-<<<[<<<]>>>>+++++++>>[-]+> +++>>[-]+>+>>[-]+>+++++>>[-]+>++>>[>>>]>]<[-<<<[<<<]>>>>+++++++>>[-]+>+++++++++> >[-]+>+>>[-]+>+>>[>>>]]>]<[-<<<[<<<]>>>>+++++++>>[-]+>+++++>>[>>>]]>]<[-<<<[<<<] >>>>+++>>[>>>]]<<<[<<<]>>>[>[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->+<[->[-]> [-]>+<+<<[->+<]]]]]]]]]]]>[<+>-]>],----------[,----------]+++++>>]>[->[-]<]>]<<< ]>[-<<[[-]<]>+++++>>]<,]<[-]<<<[+++++[->++++++++<]>.[-]<<<<]++++++++++.[-] |
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.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 gaat over tot de orde van de dag
What the actual duck? Wat is dit voor taal johSoultaker 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.
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
Engineering is like Tetris. Succes disappears and errors accumulate.
[ Voor 13% gewijzigd door Hydra op 12-12-2021 09:37 ]
https://niels.nu
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
[ Voor 44% gewijzigd door DataGhost op 12-12-2021 10:15 ]
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.
... en gaat over tot de orde van de dag
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.
Dank! Ik vind jouw Clojure ook altijd interessant. Ik wil graag nog eens iets met Clojure doen, maar moet de tijd vinden ervoor.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.
Engineering is like Tetris. Succes disappears and errors accumulate.
Helaas, heb 'em nog wat opgeschoondDricus 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.
[ Voor 3% gewijzigd door Hydra op 12-12-2021 10:31 ]
https://niels.nu
Ja ik wil die dingen nog naar m'n Graph class verplaatsen zodat het herbruikbaar is.armageddon_2k1 schreef op zondag 12 december 2021 @ 10:24:
Dus ik heb dat maar even gegeneraliseerd en nu heb ik hele mooiespoiler:helper functies en is mijn code nog compactertree-search (BFS, DFS)
https://niels.nu
Siditamentis astuentis pactum.
Haha, nietes, potjandrie!Hydra schreef op zondag 12 december 2021 @ 10:29:
Helaas, heb 'em nog wat opgeschoondEn ja dat blokje telt gewoon mee ja
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
[ 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'
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 weetJanoz 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. Dan zullen we daarnaast ook de discussie krijgen of "any number" ook 0 bevat
[ 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'
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.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Ik heb de search gegeneraliseerd naar m'n Graph class dus nu is mijn oplossing nog maar 21 regels
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.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.
https://niels.nu
Toch nog een beetje optimized.Remcoder schreef op zondag 12 december 2021 @ 11:42:
Deze ook weer opgelost, ik had voor deel 2 wat anders verwacht
***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
Oof, niet uitgebreid moeten ontbijten tussen deel 1 en deel 2 vanochtenddeboder 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
"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
Laat maar, ik had fout gelezeniThinkSo schreef op zondag 12 december 2021 @ 12:12:
[...]
Oof, niet uitgebreid moeten ontbijten tussen deel 1 en deel 2 vanochtend
[ Voor 36% gewijzigd door Mschamp op 12-12-2021 12:25 ]
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.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
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.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.
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Tip: met deze browser-extensie kan je delta's per dag ook zien op de leaderboard paginadeboder 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
[ Voor 46% gewijzigd door MrHaas op 12-12-2021 13:01 ]
[ Voor 13% gewijzigd door EfBe op 12-12-2021 13:25 ]
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
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.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.
Ja klopt, als het een code-golf contest zou zijn, dan is dit natuurlijk valsspelenHet wordt wel een beetje lastig vergelijken zo, want ik heb geen library met herbruikbare functies. Maargoed, alsnog ben ik blij met mijn compacte oplossing.
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.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.
https://niels.nu
- 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
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
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)
- 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
Aangezien er steeds meer mensen afhaken wordt je rank ook hogerHydra 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
[ Voor 30% gewijzigd door armageddon_2k1 op 12-12-2021 13:56 ]
Engineering is like Tetris. Succes disappears and errors accumulate.
Ja, maar het is wel substantieel. Normaal zit ik rond de 9k, nu 7k.armageddon_2k1 schreef op zondag 12 december 2021 @ 13:53:
Aangezien er steeds meer mensen afhaken wordt je rank ook hoger
Ja, dat lijkt me ook wel wat. Moet wel te doen zijn met wat er nu gepubliceerd wordt ook.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.
Is het geen fout in je datastructuur?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…..
https://niels.nu
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.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.
Engineering is like Tetris. Succes disappears and errors accumulate.
Wat zijn DataGhost tests eigenlijk ?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
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.
Engineering is like Tetris. Succes disappears and errors accumulate.
[ Voor 10% gewijzigd door gedonie op 12-12-2021 18:43 ]
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
... en gaat over tot de orde van de dag
Ik zat ook echt in ruzie met de borrow checker vandaag. Uiteindelijk opgelost met een paar .clone() statements... There has to be a better wayLisper 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.
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
Siditamentis astuentis pactum.
[ Voor 16% gewijzigd door armageddon_2k1 op 13-12-2021 08:07 ]
Engineering is like Tetris. Succes disappears and errors accumulate.
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
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.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
https://niels.nu
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
... en gaat over tot de orde van de dag
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.Diderikdm schreef op maandag 13 december 2021 @ 09:41:
Python dag 13
Prima dagje weer, wel even vast gezeten bij part 1: #beterlezen
When life gives you lemons, start a battery factory
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.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.
... en gaat over tot de orde van de dag
[ Voor 4% gewijzigd door evanraalte op 13-12-2021 10:39 ]
"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
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.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...
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...?Creepy schreef op maandag 13 december 2021 @ 10:36:
Ik had deel 2 niet zo verwacht
https://github.com/CodeEn.../codeengineer/aoc/aoc2021
[ Voor 22% gewijzigd door diabolofan op 13-12-2021 10:54 ]
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 hebtKabouterSuper 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.
[ Voor 7% gewijzigd door Diderikdm op 13-12-2021 11:38 ]
[ Voor 25% gewijzigd door EfBe op 13-12-2021 11:03 ]
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Alle folds had ik ook verwacht ja, maar niet het bepalen van de uitkomst bij deel 2diabolofan 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...?
"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
Apple iPhone 16e LG OLED evo G5 Google Pixel 10 Samsung Galaxy S25 Star Wars: Outlaws Nintendo Switch 2 Apple AirPods Pro (2e generatie) Sony PlayStation 5 Pro
Tweakers is onderdeel van
DPG Media B.V.
Alle rechten voorbehouden - Auteursrecht © 1998 - 2025
•
Hosting door TrueFullstaq