Engineering is like Tetris. Succes disappears and errors accumulate.
Ging er iemand anders ook stuk bij het definieren van de functie: count_black_neighbours()? Ik heb toch maar een andere naam gekozen...
Um, nee. Dat was bij mij gewoon een built-in method van de native datastructuur die ik gebruikte dus daar heb ik helemaal geen aparte functie voor nodig gehad. En tbh, racisme in een kerstpuzzel over tegeltjes zien is wel erg vergezocht.Singelaar schreef op donderdag 24 december 2020 @ 15:45:
Even iets heel anders:
Ging er iemand anders ook stuk bij het definieren van de functie: count_black_neighbours()? Ik heb toch maar een andere naam gekozen...
[ Voor 13% gewijzigd door DataGhost op 24-12-2020 15:50 ]
Siditamentis astuentis pactum.
Singelaar schreef op donderdag 24 december 2020 @ 15:45:
Even iets heel anders:
Ging er iemand anders ook stuk bij het definieren van de functie: count_black_neighbours()? Ik heb toch maar een andere naam gekozen...

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Nu het stof van vandaag een beetje gezakt is, iemand die me hier mee kan helpen? Tx!MerijnB schreef op woensdag 23 december 2020 @ 10:21:
Ik heb een paar dagen niet zoveel tijd gehad, ben nu weer aan het inhalen, nog even een verlate vraag over day 19 part 2.
Kan iemand me vertellen waarom uit het voorbeeld "babbbbaabbbbbabbbbbbaabaaabaaa" als match zou gelden? Ik vind wel een match, maar die heb ik al voordat alle rules zijn afgelopen, dat geldt dan toch niet denk ik? Heeft iemand nog een app die log kan genereren over dit voorbeeld oid?
Hier een past van mijn log.
A software developer is someone who looks both left and right when crossing a one-way street.
Ik wil niet flauw doen hoor, maar er posten hier velen hun code. Ik zou zeggen doe er je voordeel mee: copy, paste, debug en vergelijk met je eigen code We blijven wel tweakers hé!MerijnB schreef op donderdag 24 december 2020 @ 17:21:
Nu het stof van vandaag een beetje gezakt is, iemand die me hier mee kan helpen? Tx!
Siditamentis astuentis pactum.
Anoniem: 511810
Volgens mij gaat het niet lukken alsje achter elkaar de rules gaat interpreteren (te langzaam,in ieder geval bij mij)MerijnB schreef op donderdag 24 december 2020 @ 17:21:
[...]
Nu het stof van vandaag een beetje gezakt is, iemand die me hier mee kan helpen? Tx!
Moet ook, want je string moet aan alle regels voldoen die uiteindelijk in de lijst voorkomen en niet maar een subset. Het zou bijvoorbeeld kunnen zijn dat je string dan eigenlijk te kort is en er nog een stuk aan hoort).
Alsje wilt kun je mijn matlab code bekijken, linkje staat hierboven wel ergens. Daar zit ook dag 19 tussen. Deel1 heb ik op de 'lompe' manier opgelost en in matlabkun je rustig breakpoints zetten en de output bekijken.
Anoniem: 511810 schreef op donderdag 24 december 2020 @ 18:30:
[...]
Volgens mij gaat het niet lukken alsje achter elkaar de rules gaat interpreteren (te langzaam,in ieder geval bij mij)
spoiler:wat ik gedaan heb, en volgens mij iedereen?, is een grote regexp maken waar alle rules inzitten, en die loslaten op de individuele strings.
Moet ook, want je string moet aan alle regels voldoen die uiteindelijk in de lijst voorkomen en niet maar een subset. Het zou bijvoorbeeld kunnen zijn dat je string dan eigenlijk te kort is en er nog een stuk aan hoort).
Alsje wilt kun je mijn matlab code bekijken, linkje staat hierboven wel ergens. Daar zit ook dag 19 tussen. Deel1 heb ik op de 'lompe' manier opgelost en in matlabkun je rustig breakpoints zetten en de output bekijken.
Dat er in de praktijk regex-engines zijn die niet-reguliere expressies accepteren betekent niet dat het dan opeens wel een reguliere expressie is. Daarom is m.i. in deel 2 de substitutie te "vriendelijk" gekozen waardoor het in pcre bijvoorbeeld nog steeds te doen is. Ik denk dat de bedoeling inderdaad was om in deel 1 mensen wat meer kennis te laten maken met reguliere expressies, maar dat in deel 2 duidelijk had moeten worden in welke gevallen die niet bruikbaar zijn.
@MerijnB je moet altijd een volledige match hebben. Een regel "a" "b" "b" matcht dus niet "a", "ab" of "abbb", maar alleen "abb". Afhankelijk van wat voor oplossingsrichting je gekozen hebt moet je waarschijnlijk opletten dat een "match" met een van de gesubstitueerde regels niet per se de juiste is. Probeer eerst even na te denken waarom dat zo is, anders heb ik een "spoiler" in de vorm van een voorbeeld wat ik eerder heb gemaakt, wat waarschijnlijk fout gaat met de code die je nu hebt.
Mij lijkt uitzoeken waar ik een fout in mijn code heb / waar ik de regels verkeerd interpreteer meer des tweakers dan iemand anders z'n code copy/pastenVarienaja schreef op donderdag 24 december 2020 @ 18:29:
[...]
Ik wil niet flauw doen hoor, maar er posten hier velen hun code. Ik zou zeggen doe er je voordeel mee: copy, paste, debug en vergelijk met je eigen code We blijven wel tweakers hé!
Deel 1 ging prima en best vlot ook, deel 2 weet ik nog niet natuurlijkAnoniem: 511810 schreef op donderdag 24 december 2020 @ 18:30:
[...]
Volgens mij gaat het niet lukken alsje achter elkaar de rules gaat interpreteren (te langzaam,in ieder geval bij mij)
Dank, daar kan ik wat mee, ga ik even naar kijken!DataGhost schreef op donderdag 24 december 2020 @ 19:02:
[...]
spoiler:Lang niet iedereen. Ik had het direct al afgeschreven (met mij nog anderen) omdat het simpelweg geen reguliere grammatica is, dus die kan ook niet met een reguliere expressie beschreven worden. In deel 1 was het dat wel, maar je kon er donder op zeggen dat het in deel 2 niet het geval zou zijn, en dan moet je alsnog iets anders vanaf scratch gaan implementeren. Ook ging ik ervan uit (wederom ten onrechte) dat de input zodanig gevormd zou zijn dat het een regex van 1GB of groter zou opleveren na alle substituties, dus het leek me op meerdere vlakken onhandig om dat als implementatie te kiezen.
Dat er in de praktijk regex-engines zijn die niet-reguliere expressies accepteren betekent niet dat het dan opeens wel een reguliere expressie is. Daarom is m.i. in deel 2 de substitutie te "vriendelijk" gekozen waardoor het in pcre bijvoorbeeld nog steeds te doen is. Ik denk dat de bedoeling inderdaad was om in deel 1 mensen wat meer kennis te laten maken met reguliere expressies, maar dat in deel 2 duidelijk had moeten worden in welke gevallen die niet bruikbaar zijn.
@MerijnB je moet altijd een volledige match hebben. Een regel "a" "b" "b" matcht dus niet "a", "ab" of "abbb", maar alleen "abb". Afhankelijk van wat voor oplossingsrichting je gekozen hebt moet je waarschijnlijk opletten dat een "match" met een van de gesubstitueerde regels niet per se de juiste is. Probeer eerst even na te denken waarom dat zo is, anders heb ik een "spoiler" in de vorm van een voorbeeld wat ik eerder heb gemaakt, wat waarschijnlijk fout gaat met de code die je nu hebt.
@DataGhost wat zou de uitkomst moeten zijn van je voorbeeld?
Nvm ik zie het (en je hebt ws gelijk).
A software developer is someone who looks both left and right when crossing a one-way street.
Moeilijkste dagen by far: monster messages waar ik bijna 7 uur over heb gedaan en de crab cubs, bijna 6 uur en de zeemonster puzzel (4 uur). Die drie nog eens goed bekijken hoe hier van te leren.
Hoogtepunt was de allergens puzzel (189), maar verder bijna altijd buiten de top 1000, (gemiddeld 2000, mediaan 1600). Alles voor dag 13 binnen 1 uur opgelost.
Was echt een belevenis, elke dag iets voor 6:00 opgestaan. Dan zijn 25 dagen wel veel. Maar met kinderen is dat enige rustige uurtje zo 's ochtends vroeg ook wel weer ideaal voor de puzzel.
Christofer Ohlsson en Niels gefeliciteerd met plek 1 en 2! Ennuh ik gebruik gewoon de 'stars' ordering :-)
En dan zit ik bij deel 2 alsnog gewoon 5 minuten die tekst te lezen, me afvragend wat ik moet doenVarienaja schreef op vrijdag 25 december 2020 @ 06:22:
Joepie! Dat was een eenvoudige uitsmijter. Nu kan ik terug naar bed en eindelijk uitslapen

Maar, yeay
Vanaf morgen gewoon uitslapen in mijn kerstvakantie

Fijn, zo'n lekker makkelijke uitsmijter.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Ik ben benieuwd of er nog een shortcut mogelijk is, of inderdaad gewoon lekker makkelijk brute-forcen.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Dankje! Ik had tussen het marineren van de veganistische kalfshaasparfait en het opschuimen van de pastinaakbouillon nog net even tijd om mijn code een beetje op te schonen.Woy schreef op vrijdag 25 december 2020 @ 07:46:
@Dricus nette oplossing! Ik heb gewoon de simpele lelijke versie gedaan, geen zin om netter te maken vandaag, ik moet mijn kado's nog in gaan pakken
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Helaas als je eenmaal de code van een ander gezien hebt, is het extreem triviaal. En ook geen leuke deel 2. Nouja. Jammer.
[ Voor 80% gewijzigd door Hydra op 25-12-2020 08:14 ]
https://niels.nu
Mooi! Ik ga 'em later nog ombouwen denk ik. Eerst 24 even opschonen nog.Dricus schreef op vrijdag 25 december 2020 @ 07:23:
Dag 25 (Kotlin)
Fijn, zo'n lekker makkelijke uitsmijter.
https://niels.nu
Deze was wel heeeeeeeeeel erg makkelijk zeg. In 5 minuten opgeschreven en in 1x goed (nu nog even opschonen). Kwestie van even goed lezen, maar de tekst was vrij duidelijk.
Anyway, lekker makkelijk einde zodat ik niet de hele dag met mijn hoofd ergens anders ben
Fijne kerst allemaal!
Engineering is like Tetris. Succes disappears and errors accumulate.
Deze is heel mooi.Dricus schreef op vrijdag 25 december 2020 @ 07:23:
Dag 25 (Kotlin)
Fijn, zo'n lekker makkelijke uitsmijter.
spoiler:Ik zat ook nog uitgebreid deel 2 te lezen in de verwachting dat er nog meer zou komen.
Engineering is like Tetris. Succes disappears and errors accumulate.
Hydra schreef op vrijdag 25 december 2020 @ 07:59:
spoiler:Edit: Ik heb naar jullie code gekeken en ik snap nu wat er gebeurt, maar ik snap nog steeds echt de uitleg hierbij niet. Ik kom vanuit de tekst echt niet uit op dat beide dingen tegelijkertijd in de loop gebeuren. Ben ik nu zo dom?
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Okay, ligt aan mij dusarmageddon_2k1 schreef op vrijdag 25 december 2020 @ 08:32:
Deze was wel heeeeeeeeeel erg makkelijk zeg. In 5 minuten opgeschreven en in 1x goed (nu nog even opschonen). Kwestie van even goed lezen, maar de tekst was vrij duidelijk.
https://niels.nu
Ja, het stoort me dat ik er zelf niet opkom een loop tail-recursive te maken. Moet ik nog aan werken.armageddon_2k1 schreef op vrijdag 25 december 2020 @ 08:35:
Deze is heel mooi.
https://niels.nu
Ik kom er zelf ook niet op. Vind het mooi wat Dricus doet. Ligt er maar net aan waar je voorkeur ligt denk ik. Vanwege ontwikkelsnelheid maak ik nou eerst altijd gewoon imperatief loopje. Daarna bouw ik het om. Ik ontwikkel vaak door wat code neer te plempen en breakpoints te zetten en er doorheen te stappen om dubbel te checken. Als ik dan megafunctioneel met al die Kotlin extension functies bezig ben is dat een stuk lastiger vind ik.Hydra schreef op vrijdag 25 december 2020 @ 08:51:
[...]
Ja, het stoort me dat ik er zelf niet opkom een loop tail-recursive te maken. Moet ik nog aan werken.
Als het allemaal werkt en gecheckt wordt met wat tests ga ik het ombouwen.
Daarnaast vind ik sequences nu eventjes erg leuk.
[ Voor 3% gewijzigd door armageddon_2k1 op 25-12-2020 08:57 ]
Engineering is like Tetris. Succes disappears and errors accumulate.
Ja, zo begin ik ook. Mijn eerste opzet is vrijwel altijd iteratief. Zo zie je maar dat 22 jaar imperatief programmeren behoorlijk ingesleten zitarmageddon_2k1 schreef op vrijdag 25 december 2020 @ 08:56:
Ik kom er zelf ook niet op. Vind het mooi wat Dricus doet. Ligt er maar net aan waar je voorkeur ligt denk ik. Vanwege ontwikkelsnelheid maak ik nou eerst altijd gewoon imperatief loopje. Daarna bouw ik het om.
Ik knal voor deel 1 zo snel mogelijk wat code neer en check 't tegen de voorbeeld input. Werkt 't; mooi. Zo niet; breakpoints en erdoorheen steppen. Vooral bij de eerste opdrachten gaat 't meestal in 1 keer goed. Maar in de latere dagen gaat dat tegen me werken omdat ik de tekst verkeerd geinterpreteerd heb. Dat leidt dan vaak tot aardig wat frustraties aan mijn kant.Ik ontwikkel vaak door wat code neer te plempen en breakpoints te zetten en er doorheen te stappen om dubbel te checken. Als ik dan megafunctioneel met al die Kotlin extension functies bezig ben is dat een stuk lastiger vind ik.
Als het allemaal werkt en gecheckt wordt met wat tests ga ik het ombouwen.
Daarnaast vind ik sequences nu eventjes erg leuk.
Het is ook een heel andere manier van werken dan je normale 'day to day' werk. Ik merk wel dat ik vaak te snel wil. Vanochtend ook. Ik begrijp ook echt nog steeds de tekst niet. Maargoed; ben altijd al beter geweest in formules lezen dan ellenlange teksten.
https://niels.nu
bedankt. Heel leuk om te doen en op deze manier bij te leren. Fijne Kerst!
[ Voor 18% gewijzigd door Mschamp op 25-12-2020 09:48 ]
Het is nooit te laat om te leren! Ik programmeer al zo'n 30 jaar bijna uitsluitend in imperatieve talen en heb me de functional style pas in de laatste paar jaren meer eigen kunnen maken. Daarbij heeft het enorm geholpen dat de meeste mainstream imperatieve talen zo veel concepten uit FP overgenomen hebben!Hydra schreef op vrijdag 25 december 2020 @ 09:10:
Ja, zo begin ik ook. Mijn eerste opzet is vrijwel altijd iteratief. Zo zie je maar dat 22 jaar imperatief programmeren behoorlijk ingesleten zitEn het gaat mij er ook niet zozeer om dat ik vind dat alles perse tailrecursive moet, ik stoor me eraan dat ik niet op het idee kom
Maar heb dankzij de code van @Dricus hier nu wel wat meer gevoel voor ontwikkeld.
Ik werk al heel wat jaren met Test Driven Development. Daarmee leer je jezelf aan om in kleine stappen te denken en tussenresultaten te valideren. Voor AoC heb ik de moeilijkere puzzels ook veelal in kleine stapjes aangepakt. Daardoor houd je het overzicht over de code die je maakt en ben je meer bezig met het oplossen van het probleem, dan met het worstelen met je code.Ik knal voor deel 1 zo snel mogelijk wat code neer en check 't tegen de voorbeeld input. Werkt 't; mooi. Zo niet; breakpoints en erdoorheen steppen. Vooral bij de eerste opdrachten gaat 't meestal in 1 keer goed. Maar in de latere dagen gaat dat tegen me werken omdat ik de tekst verkeerd geinterpreteerd heb. Dat leidt dan vaak tot aardig wat frustraties aan mijn kant.
Dat is wel erg herkenbaar! Mijn haast zat hem vooral in onzorgvuldig lezen, of de return 0 vergeten te vervangen door de echte oplossingHet is ook een heel andere manier van werken dan je normale 'day to day' werk. Ik merk wel dat ik vaak te snel wil. Vanochtend ook. Ik begrijp ook echt nog steeds de tekst niet. Maargoed; ben altijd al beter geweest in formules lezen dan ellenlange teksten.

Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Dat doe ik ook wel hoor. Ik werk als sinds Java 8 op een meer functionele manier en vooral in Kotlin gebruik ik veel map, filter, etc. Ik had 't ook specifiek over dit soort opdrachten waarbij je een loop moet doen; dan kom ik niet snel op 't idee dit tail-recursive te doen. Recursion zelf natuurlijk wel, maar de stap om van een loop naar specifiek tail recursion te gaan zit er nog niet in. Ook omdat dat soort dingen bij de meeste collega's een "WTF is deze?" reactie teweeg zou brengenDricus schreef op vrijdag 25 december 2020 @ 09:29:
Het is nooit te laat om te leren! Ik programmeer al zo'n 30 jaar bijna uitsluitend in imperatieve talen en heb me de functional style pas in de laatste paar jaren meer eigen kunnen maken. Daarbij heeft het enorm geholpen dat de meeste mainstream imperatieve talen zo veel concepten uit FP overgenomen hebben!
Ik ook hoor. Alleen ben je dan langer bezig. Dus ik gok er eerst op dat ik 't in 1 keer goed heb (want dan heb je in 5-10 minuten een oplossing). Lukt dat niet, dan moet ik op de 'juiste' manier aan de gang. En dan ben je een stuk langer bezig vaak.Ik werk al heel wat jaren met Test Driven Development. Daarmee leer je jezelf aan om in kleine stappen te denken en tussenresultaten te valideren.
En ik zie dan dat die gok de eerste 7 dagen ofzo werkt, maar daarna niet meer, omdat de opdrachten net te complex zijn om in 1 keer "YOLO" de code uit te schrijven.
Of gewoon de voorbeeldinput nog laten staan en daarvoor het resultaat te submittenDat is wel erg herkenbaar! Mijn haast zat hem vooral in onzorgvuldig lezen, of de return 0 vergeten te vervangen door de echte oplossing.
https://niels.nu
Ja zeg dat wel. Mooi iedere dag om kwart voor zes op. Wassen, aankleden en puzzelen! Zonder leaderbord had ik dat niet gedaan. En zonder jullie hulp en inspiratie had ik het ook niet tot het einde volgehouden. Mijn vrouw is blij dat deze bevlieging over is. En ben ook blij dat de wekker uit kan.Dido schreef op vrijdag 25 december 2020 @ 06:48:
En dat leaderboard heeft wel geholpen om (bijna) elke dag om 6 uur te beginnen!
Vanaf morgen gewoon uitslapen in mijn kerstvakantie
Iedereen bedankt voor het meedoen en meeposten. Prettige feestdagen allemaal!
Siditamentis astuentis pactum.
Haha, dit vooral ja. Morgen de eerste keer een beetje uitslapen deze vakantie. Het was weer erg leuk om een beetje hoog in het leaderboard te blijven.Varienaja schreef op vrijdag 25 december 2020 @ 10:10:
[...]
Ja zeg dat wel. Mooi iedere dag om kwart voor zes op. Wassen, aankleden en puzzelen! Zonder leaderbord had ik dat niet gedaan. En zonder jullie hulp en inspiratie had ik het ook niet tot het einde volgehouden. Mijn vrouw is blij dat deze bevlieging over is. En ben ook blij dat de wekker uit kan.
Iedereen bedankt voor het meedoen en meeposten. Prettige feestdagen allemaal!
40D | 8 | 50 | 100 | 300
Hetzelfde! Ook aan de restVarienaja schreef op vrijdag 25 december 2020 @ 10:10:
Iedereen bedankt voor het meedoen en meeposten. Prettige feestdagen allemaal!
https://niels.nu
Dat viel vies tegen. Voorgaande jaren ben ik redelijk hoog geeindigd maar een grote groep fanatiekelingen + 3 dagen ziek zijn, en je zit op plek 30ppx17 schreef op vrijdag 25 december 2020 @ 10:11:
Haha, dit vooral ja. Morgen de eerste keer een beetje uitslapen deze vakantie. Het was weer erg leuk om een beetje hoog in het leaderboard te blijven.
https://niels.nu
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Ja, mee eens. Het zal nog wel even duren voor dat dat mainstream wordt. Kotlin is voor zover ik weet tussen de andere grote imperatieve talen wel een vreemde eend in de bijt met zijn support voor tail call optimization. Hmm, misschien ga ik over dit onderwerp op het werk eens een show & tell geven ter bevordering van de mainstreamisering van tailrecHydra schreef op vrijdag 25 december 2020 @ 10:08:
Dat doe ik ook wel hoor. Ik werk als sinds Java 8 op een meer functionele manier en vooral in Kotlin gebruik ik veel map, filter, etc. Ik had 't ook specifiek over dit soort opdrachten waarbij je een loop moet doen; dan kom ik niet snel op 't idee dit tail-recursive te doen. Recursion zelf natuurlijk wel, maar de stap om van een loop naar specifiek tail recursion te gaan zit er nog niet in. Ook omdat dat soort dingen bij de meeste collega's een "WTF is deze?" reactie teweeg zou brengen
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Ja, ik vind het jammer dat dat niet in C# zit, de CLR schijnt er wel support voor te hebben.Dricus schreef op vrijdag 25 december 2020 @ 10:18:
[...]
Ja, mee eens. Het zal nog wel even duren voor dat dat mainstream wordt. Kotlin is voor zover ik weet tussen de andere grote imperatieve talen wel een vreemde eend in de bijt met zijn support voor tail call optimization. Hmm, misschien ga ik over dit onderwerp op het werk eens een show & tell geven ter bevordering van de mainstreamisering van tailrec.
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”
Dat klopt. De F# compiler ondersteunt wel tail call optimization.Woy schreef op vrijdag 25 december 2020 @ 10:33:
Ja, ik vind het jammer dat dat niet in C# zit, de CLR schijnt er wel support voor te hebben.
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Haha, dat was dit jaar voor mij juist een drama... Normaal gesproken vroeg de deur uit om de files voor te zijn, dat hoeft dit jaar niet, dan is het heel verleidelijk om toch nog wat langer te blijven liggen.Dido schreef op vrijdag 25 december 2020 @ 06:48:
[...]
En dat leaderboard heeft wel geholpen om (bijna) elke dag om 6 uur te beginnen!
Al met al vond ik dit de perfecte workload als dagelijks puzzeltje. Dag 13 kostte me wel veel tijd op die desbetreffende zondag en over dag 20 heb ik langer dan een dag gedaan, mede omdat ik een aantal dagen ziek was. Maar geen van de puzzels waren onmogelijk, zonder dat je een vaag wiskundig truukje kende.
Ook leuk dat de simpele puzzels hier nog verder uitgewerkt, geoptimaliseerd en verbeterd werden door elkaars feedback en ideeën, gaaf!
Bedankt allemaal, een fijne kerst en tot volgend jaar!
[ Voor 4% gewijzigd door Reynouts op 25-12-2020 11:03 ]
(Echte oplossing in Python.)
Vond het wel leuke puzzels dit jaar. Helaas hier en daar wat herhaling t.o.v. vorig jaar en zelfs eerder dit jaar (cellular automata aka Conway's Game of Life), maar het is ook niet eenvoudig om elk jaar 25 originele problemen te verzinnen.
Ik was begonnen met het oplossen van de problemen in Haskell. Ik ben nu halverwege dus daar ben ik de rest van het jaar nog wel zoet mee, denk ik.
[ Voor 3% gewijzigd door Soultaker op 25-12-2020 16:36 ]
Ik had eigenlijk niet verwacht zo ver te komen, dus kan straks tevreden aan het kerst diner. Helaas wegens tijdgebrek drie sterren nog niet binnen, maar dat ga ik binnenkort nog wel proberen recht te trekken. Ik vond het leuk om te doen en heb her en der nog wat kunnen opsteken van de mede Tweakers in dit topic!
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
ydderf schreef op vrijdag 25 december 2020 @ 15:42:
Laten we het er voor vandaag maar op houden, dat de tekst lezen lastiger is dan de uiteindelijke code.
Klopt, is eigenlijk een beetje overbodige bouwpuin of een voorbereiding voor een extra checkSoultaker schreef op vrijdag 25 december 2020 @ 16:38:
[...]
spoiler:Eigenlijk hoef je loopSizeDoor helemaal niet te berekenen, hè

Ik ben voor het laatste gegaan....
Tevens dag 24 deel 2 nog ff afgerond. Al heeft hij wel een minuutje nodig om de uitkomst te berekenen, vind ik dat voor de 1e kerstdag acceptabel.
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
Ik heb wel een hint voor je om een andere oplossingsrichting uit te denken die je vrijwel instant het antwoord geeft, in plaats van na een minuut pas. Als je nou eens doet alsofydderf schreef op vrijdag 25 december 2020 @ 16:49:
[...]
Klopt, is eigenlijk een beetje overbodige bouwpuin of een voorbereiding voor een extra check.
Ik ben voor het laatste gegaan....
Tevens dag 24 deel 2 nog ff afgerond. Al heeft hij wel een minuutje nodig om de uitkomst te berekenen, vind ik dat voor de 1e kerstdag acceptabel.
(-100000000,-100000000)
(-100000001,-100000001)
(100000000,100000000)
(100000001,100000001)
is het uiteindelijke antwoord na slechts 1.2 seconden ongeveer 7000 zwarte tegeltjes. Jouw huidige code gaat dit niet vóór 2025 oplossen.

Ik ben te lui om het verder op te kuisen...

Was leuk om mee te doen, dit is mijn eerste AoC die ik afwerk
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
Haha, ja, hier zijn ze ook blij dat het voorbij is. En ik stond er niet eens extra vroeg voor op (deed elke dag nadag ik de kids naar school gebracht had/we samen ontbeten hadden de challenge live streamen op Twitch).Varienaja schreef op vrijdag 25 december 2020 @ 10:10:
[...]
Ja zeg dat wel. Mooi iedere dag om kwart voor zes op. Wassen, aankleden en puzzelen! Zonder leaderbord had ik dat niet gedaan. En zonder jullie hulp en inspiratie had ik het ook niet tot het einde volgehouden. Mijn vrouw is blij dat deze bevlieging over is. En ben ook blij dat de wekker uit kan.
Iedereen bedankt voor het meedoen en meeposten. Prettige feestdagen allemaal!
Zelf vind ik het erg jammer dat het nu voorbij is, maar ik heb nog een dag of 10 te editen voor YT; dus mijn AoC is voorlopig nog niet voorbij 😅 maar verheug me nu al op volgend jaar
Denk erover om de andere jaren ook te gaan livestreamen, maar ik vermoed dat dat thuis te veel gedoe gaat opleveren 😅
Moest nog ff zweten met dag 19 deel 2 en dag 20 deel 2.
Bij dag 19 deel 2 (oneindige loop met rules met combinaties van A en B ) een tijdje lopen te stoeien, maar bij elke oplossing had mijn laptop alle 32GB intern geheugen nodig voor ruim een uur zonder met een oplossing te komen. Uiteindelijk een simpele oplossing bedacht die onder de 20msec beide delen uitvoert;
Wanneer alle karakters passen, dan is het een geldige tekst.
Bij dag 20 deel 2 (tegels aan elkaar plakken en een monster vinden) een tijd aan het klooien geweest omdat ik de tegels niet correct aan elkaar plakte (wel de juiste maar niet in de juiste oriëntatie). Het vervelende was alleen dat hiermee het antwoord van het voorbeeld wel klopte en met de echte input ook monsters werden gevonden. Alleen natuurlijk niet het juiste aantal. Maar gelukkig na wat debuggen dit ook kunnen oplossen.
Meteen maar een aantal hulp functies gemaakt die waarschijnlijk volgens jaar ook wel weer van pas komen.
Nu nog ff een aantal dagen doorkijken hoe andere het hebben opgelost en wat ik slimmer/anders had kunnen doen.
[ Voor 3% gewijzigd door ydderf op 29-12-2020 20:00 ]
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
https://niels.nu
Maar eh, wat begint er 1 januari voor jou?
Gewoon weer werk en een nieuw jaarSingelaar schreef op woensdag 30 december 2020 @ 15:07:
Hahaha zeker. Het voelt 'leeg'. Maar ook wel stress vrij, ik was wel toe aan vrij van aoc.
Maar eh, wat begint er 1 januari voor jou?
https://niels.nu
Voorbeeld move 7
1
2
3
4
5
| cups: 7 2 5 8 4 1 (9) 3 6 pick up: 3, 6, 7 destination: 8 result: 8 3 6 7 4 1 9 2 5 |
Maar als ik de regels volg krijg je toch:
1
2
3
4
5
6
7
8
9
| cups: 7 2 5 8 4 1 (9) 3 6 pick up: 3, 6, 7 destination: 8 haal cups weg: intermediate: 2 5 8 4 1 9 insert bij 8 result: 2 5 8 3 6 7 4 1 9 |
Ik vermoed een denk fout met het wrappen in de cirkel, maar ik zie hem niet, wie-o-wie heeft de gouden tip voor me?
Not just an innocent bystander
Dat klopt toch: het is een cirkel dus er is niet echt een eerste element, enkel een volgorde. Schrijf het eens in een cirkel en vergelijk dan (of haal de 2 elementen vooraan jouw lijst weg, en zet ze eens achteraan)Camulos schreef op donderdag 31 december 2020 @ 13:41:
Ik zit al een tijdje vast in Dag 23, en met name in het voorbeeld dat op de site staat.
Voorbeeld move 7
code:
1 2 3 4 5 cups: 7 2 5 8 4 1 (9) 3 6 pick up: 3, 6, 7 destination: 8 result: 8 3 6 7 4 1 9 2 5
Maar als ik de regels volg krijg je toch:
code:
1 2 3 4 5 6 7 8 9 cups: 7 2 5 8 4 1 (9) 3 6 pick up: 3, 6, 7 destination: 8 haal cups weg: intermediate: 2 5 8 4 1 9 insert bij 8 result: 2 5 8 3 6 7 4 1 9
Ik vermooed een denk fout met het wrappen in de circel, maar ik zie hem niet, wie-o-wie heeft de gouden tip voor me?
dat zie ik wel, dat de eerste elementen achteraan zou kunnen zetten, but why?Mschamp schreef op donderdag 31 december 2020 @ 13:44:
[...]
Dat klopt toch: het is een cirkel dus er is niet echt een eerste element, enkel een volgorde. Schrijf het eens in een cirkel en vergelijk dan (of haal de 2 elementen vooraan jouw lijst weg, en zet ze eens achteraan)
Impliceert dit dat de start-index ook op hetzelfde start-index moet blijven staan?
(aka dat de 9 niet verplaatst in de platte lijst?)
Not just an innocent bystander
Er is niet echt een eerste element (of dat is toch hoe ik het opgelost heb) voor je antwoord moet je ook bekijken tov de beker met tag '1'. In het voorbeeld is gewoon een keuze gemaakt wat als 1 getoond wordt, en jij (en ik ook) gebruiken blijkbaar een ander algoritme waardoor ons 1e element anders is. Zou voor je resultaat geen verschil mogen makenCamulos schreef op donderdag 31 december 2020 @ 13:47:
[...]
dat zie ik wel, dat de eerste elementen achteraan zou kunnen zetten, but why?
Impliceert dit dat de start-index ook op hetzelfde start-index moet blijven staan?
(aka dat de 9 niet verplaatst in de platte lijst?)
representatie was wel correct, behalve dat mijn 'volgende element' nu moet matchen met de '2' in het voorbeeld.
Not just an innocent bystander

Dan maar het komende jaar rustig aan de puzzels oplossen en klaar zijn voor AoC 2021
Misschien in de tussentijd eens een cursus Python starten en ook AoC gebruiken om extra te leren.