Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Ik had ook m'n ranges veel te groot (x velocity negatief 🙄), maar was verder goed te brute forcen. Deel 2 was wel érg makkelijk.
Dag 16 was wel even pielen, ik dacht eerst dat het puur met iterators kon maar moest het toch anders aanpakken. Ik hoop dat BITS nog terug komt in latere opdrachten, net als Intcode in 2019.
Dag 17 gebruteforced, het zal vast efficienter kunnen, maar het was snel genoeg zo.
Waar een nachtje slapen wel niet goed voor kan zijn, vandaag nog eventjes weer voor gaan zitten en mijn oplossing aan kunnen passen zodat ik deel B wel kan uitrekenen.Cranzai schreef op donderdag 16 december 2021 @ 22:36:
Lang genoeg gepuzzeld met deze opdracht, heb uiteindelijk een list van operators en een list van waardes laten printen. Vervolgens deel B maar handmatig uitgerekend, want ik moest en zal dat domme sterretje van de dag binnenhalen.
Zit met mijn huidige format waarschijnlijk dicht bij oplossing waarin ik eenvoudig de post-processing kan verwerken maar ik ben dr klaar mee.
https://github.com/Cranza...y16/python/day16rework.py
Ergens in dit alles is de recursie en het terug doorgeven van waarden een beetje fout gegaan waardoor ik de som van alle versie nummers niet meer goed bij kan houden

Zat voor deel 1 eerst ff te moeilijk te denken, maar uiteindelijk heel simpel kunnen bepalen wat de beste beginsnelheid is.
Deel twee wel een beetje brute force opgelost.
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
Ik schrijf de tussenliggende resultaten naar een debugfile maar ook dat lijkt goed.
Nog tips om uit mijn impasse te komen?
... en gaat over tot de orde van de dag
Niet rechtstreeks, maar misschien kan je debuggen met de input van @Remcoder hij heeft ook alle tussentijdse berekeningen gelogd.P_Tingen schreef op vrijdag 17 december 2021 @ 22:08:
Getver, ik krijg 16b niet goed. Alle testcase lopen goed, maar mijn input niet. De data is 1800 tekens lang dus succes met zoeken.
Ik schrijf de tussenliggende resultaten naar een debugfile maar ook dat lijkt goed.
Nog tips om uit mijn impasse te komen?
Remcoder schreef op donderdag 16 december 2021 @ 13:46:
spoiler:Toch maar even een print functie toegevoegd. Ik was wel benieuwd wat voor formule er nu precies uitgevoerd is. Wel interessant om te zien wat er allemaal in zit, vooral de lading geneste min/max/+/*
Aanschouw: https://pastebin.com/S5tAT5Bf
Ik heb vergelijkbare logging maar niet zijn input.Mschamp schreef op vrijdag 17 december 2021 @ 22:15:
[...]
Niet rechtstreeks, maar misschien kan je debuggen met de input van @Remcoder hij heeft ook alle tussentijdse berekeningen gelogd.
[...]
Kan iemand eens checken met mijn data?
Mijn uitkomst is 17513144899 maar dat is dus niet goed
Ik ben een beetje bang dat deze BITS computer nog weer terug gaat komen. De Intcode computer had ik ook al een bug in, zodat vervolgopdrachten dan ook niet goed gaan
... en gaat over tot de orde van de dag
wtf mijn parser crasht ook op deze inputP_Tingen schreef op vrijdag 17 december 2021 @ 22:36:
[...]
Ik heb vergelijkbare logging maar niet zijn input.
Kan iemand eens checken met mijn data?
Mijn uitkomst is 17513144899 maar dat is dus niet goed![]()
Ik ben een beetje bang dat deze BITS computer nog weer terug gaat komen. De Intcode computer had ik ook al een bug in, zodat vervolgopdrachten dan ook niet goed gaan
Kun je me jouw data en uitkomst eens sturen? Dan haal ik die door mijn BITS heeniThinkSo schreef op vrijdag 17 december 2021 @ 22:40:
[...]
wtf mijn parser crasht ook op deze input
... en gaat over tot de orde van de dag
Oh nee, toch niet, hier is een trace van jouw packet:P_Tingen schreef op vrijdag 17 december 2021 @ 22:45:
[...]
Kun je me jouw data en uitkomst eens sturen? Dan haal ik die door mijn BITS heen
https://gist.github.com/9ec5058da758d4bb2da11230f504e6e8
Hier mijn input:
https://gist.github.com/d1c51954d2fde168cba20d8f7c4b22b9
Het resultaat zou 1264485568252 moeten zijn.
Ik krijg met jouw input een antwoord dat 7x zo hoog is. Ik kan je verder niet aan debug info helpen. Mijn code crashte overigens eerst ook als de hex string met een 0 begon. Gewoon 4 nullen prefixen is overigens niet genoeg als het tweede karakter van de hex string kleiner dan 8 is.P_Tingen schreef op vrijdag 17 december 2021 @ 22:45:
[...]
Kun je me jouw data en uitkomst eens sturen? Dan haal ik die door mijn BITS heen
Ik ken die programmeertaal DIE JE GEBRUIKT NIET
[ Voor 13% gewijzigd door glrfndl op 17-12-2021 22:50 ]
Prepare for unforeseen consequences
De input staat ook op mijn githubP_Tingen schreef op vrijdag 17 december 2021 @ 22:36:
[...]
Ik heb vergelijkbare logging maar niet zijn input.
Kan iemand eens checken met mijn data?
Mijn uitkomst is 17513144899 maar dat is dus niet goed![]()
Ik ben een beetje bang dat deze BITS computer nog weer terug gaat komen. De Intcode computer had ik ook al een bug in, zodat vervolgopdrachten dan ook niet goed gaan
Hmm, met mijn code 2910843709. KakiThinkSo schreef op vrijdag 17 december 2021 @ 22:48:
[...]
Oh nee, toch niet, hier is een trace van jouw packet:
https://gist.github.com/9ec5058da758d4bb2da11230f504e6e8
Hier mijn input:
https://gist.github.com/d1c51954d2fde168cba20d8f7c4b22b9
Het resultaat zou 1264485568252 moeten zijn.
... en gaat over tot de orde van de dag
Verdacht dicht bij 2^32... Geen long gebruikt?
Oh nee, je andere resultaat is wel boven de 2^32 zie ik
[ Voor 12% gewijzigd door iThinkSo op 17-12-2021 22:59 ]
glrfndl schreef op vrijdag 17 december 2021 @ 22:48:
[...]
Ik krijg met jouw input een antwoord dat 7x zo hoog is. Ik kan je verder niet aan debug info helpen. Mijn code crashte overigens eerst ook als de hex string met een 0 begon. Gewoon 4 nullen prefixen is overigens niet genoeg als het tweede karakter van de hex string kleiner dan 8 is.
Ik ken die programmeertaal DIE JE GEBRUIKT NIET, maar op regel 18 staat iets van een conversie naar int32. Misschien dat daar iets overflowt?
/f/image/MfaO7DI7bfQL0wEsqXplz7Vc.png?f=fotoalbum_large)
You da man! Dank, dat was het inderdaad. Bij het omzetten van INT32 naar INT64 heb ik deze over het hoofd gezien.
... en gaat over tot de orde van de dag
Heb het parsen werkend maar de implemenantatie...Bah.
https://niels.nu

Hoop dat ik er nog aan toe kom binnen 24u! Ziet eruit als een lastige puzzel qua uitleg
Dit soort puzzels... bah, meer tekstverklaren dan programmeren, lijkt teveel op werk
... en gaat over tot de orde van de dag
Mijn Python oplossing: https://github.com/arjand...ain/python/18/solution.py
[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]] + [7,[[[3,7],[4,3]],[[6,3],[8,8]]]] = [[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]]
Ik heb [[[[4,0],[5,4]],[[7,7],[6,5]]],[[[0,6],[6,6]],[[6,8],[5,6]]]]
Waar o waar zit de fout?
[[[[4,0],[5,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 4 and 5
[[[[4,0],[5,4]],[[0,[7,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 7 and 6
[[[[4,0],[5,4]],[[7,0],[15,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 3 and 7
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[0,[11,3]],[[6,3],[8,8]]]]] explode 11 and 3
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,0],[[9,3],[8,8]]]]] explode 9 and 3
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[0,[11,8]]]]] explode 11 and 8
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[11,0]]]] split 15 to 7 and 8
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[10,[[11,9],[11,0]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[[5,5],[[11,9],[11,0]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[[5,5],[[[5,6],9],[11,0]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[[5,5],[[[5,6],9],[[5,6],0]]]] explode 7 and 8
[[[[4,0],[5,4]],[[7,7],[0,13]]],[[5,5],[[[5,6],9],[[5,6],0]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[0,13]]],[[5,10],[[0,15],[[5,6],0]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[0,13]]],[[5,10],[[0,20],[0,6]]]] split 13 to 6 and 7
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,10],[[0,20],[0,6]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,20],[0,6]]]] split 20 to 10 and 10
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,[10,10]],[0,6]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,[[5,5],10]],[0,6]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,[[5,5],[5,5]]],[0,6]]]] explode 6 and 7
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[0,[[5,5],[5,5]]],[0,6]]]] explode 5 and 5
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[5,[0,[10,5]]],[0,6]]]] explode 10 and 5
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[5,[10,0]],[5,6]]]] explode 10 and 0
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[15,0],[5,6]]]] split 12 to 6 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,5]],[[15,0],[5,6]]]] split 15 to 7 and 8
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,5]],[[[7,8],0],[5,6]]]] explode 7 and 8
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,12]],[[0,8],[5,6]]]] split 12 to 6 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,[6,6]]],[[0,8],[5,6]]]] explode 6 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[11,0]],[[6,8],[5,6]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[[5,6],0]],[[6,8],[5,6]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,11],[0,6]],[[6,8],[5,6]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,[5,6]],[0,6]],[[6,8],[5,6]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[11,0],[6,6]],[[6,8],[5,6]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[[5,6],0],[6,6]],[[6,8],[5,6]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,5]]],[[[0,6],[6,6]],[[6,8],[5,6]]]]
Siditamentis astuentis pactum.
Varienaja schreef op zaterdag 18 december 2021 @ 09:03:
AoC zegt:
[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]] + [7,[[[3,7],[4,3]],[[6,3],[8,8]]]] = [[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]]
Ik heb [[[[4,0],[5,4]],[[7,7],[6,5]]],[[[0,6],[6,6]],[[6,8],[5,6]]]]
Waar o waar zit de fout?![]()
spoiler:[[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 4 and 5
[[[[4,0],[5,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 4 and 5
[[[[4,0],[5,4]],[[0,[7,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 7 and 6
[[[[4,0],[5,4]],[[7,0],[15,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 3 and 7
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[0,[11,3]],[[6,3],[8,8]]]]] explode 11 and 3
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,0],[[9,3],[8,8]]]]] explode 9 and 3
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[0,[11,8]]]]] explode 11 and 8
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[11,0]]]] split 15 to 7 and 8
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[10,[[11,9],[11,0]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[[5,5],[[11,9],[11,0]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[[5,5],[[[5,6],9],[11,0]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[[5,5],[[[5,6],9],[[5,6],0]]]] explode 7 and 8
[[[[4,0],[5,4]],[[7,7],[0,13]]],[[5,5],[[[5,6],9],[[5,6],0]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[0,13]]],[[5,10],[[0,15],[[5,6],0]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[0,13]]],[[5,10],[[0,20],[0,6]]]] split 13 to 6 and 7
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,10],[[0,20],[0,6]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,20],[0,6]]]] split 20 to 10 and 10
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,[10,10]],[0,6]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,[[5,5],10]],[0,6]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[[5,[5,5]],[[0,[[5,5],[5,5]]],[0,6]]]] explode 6 and 7
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[0,[[5,5],[5,5]]],[0,6]]]] explode 5 and 5
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[5,[0,[10,5]]],[0,6]]]] explode 10 and 5
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[5,[10,0]],[5,6]]]] explode 10 and 0
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[5,5]],[[15,0],[5,6]]]] split 12 to 6 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,5]],[[15,0],[5,6]]]] split 15 to 7 and 8
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,5]],[[[7,8],0],[5,6]]]] explode 7 and 8
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,12]],[[0,8],[5,6]]]] split 12 to 6 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,[6,6]]],[[0,8],[5,6]]]] explode 6 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[11,0]],[[6,8],[5,6]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[[5,6],0]],[[6,8],[5,6]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,11],[0,6]],[[6,8],[5,6]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,[5,6]],[0,6]],[[6,8],[5,6]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[11,0],[6,6]],[[6,8],[5,6]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[[5,6],0],[6,6]],[[6,8],[5,6]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,5]]],[[[0,6],[6,6]],[[6,8],[5,6]]]]
[[[[4,0],[5,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 4 and 5
[[[[4,0],[5,4]],[[0,[7,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 7 and 6
[[[[4,0],[5,4]],[[7,0],[15,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] explode 3 and 7
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[0,[11,3]],[[6,3],[8,8]]]]] explode 11 and 3
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,0],[[9,3],[8,8]]]]] explode 9 and 3
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[0,[11,8]]]]] explode 11 and 8
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[11,0]]]] split 15 to 7 and 8
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[10,[[11,9],[11,0]]]] explode 7 and 8
[[[[4,0],[5,4]],[[7,7],[0,13]]],[10,[[11,9],[11,0]]]] split 13 to 6 and 7
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[10,[[11,9],[11,0]]]] explode 6 and 7
[[[[4,0],[5,4]],[[7,7],[6,0]]],[17,[[11,9],[11,0]]]] split 17 to 8 and 9
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,9],[[11,9],[11,0]]]] split 11 to 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,9],[[[5,6],9],[11,0]]]] explode 5 and 6
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,14],[[0,15],[11,0]]]] split 14 to 7 and 7
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[0,15],[11,0]]]] split 15 to 7 and 8
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[0,[7,8]],[11,0]]]] explode 7 and 8
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,0],[19,0]]]] split 19 to 9 and 10
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,0],[[9,10],0]]]] explode 9 and 10
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[0,10]]]] split 10 to 5 and 5
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[0,[5,5]]]]] explode 5 and 5
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]]
Je doet split terwijl explode voorrang heeft
+1Mschamp schreef op zaterdag 18 december 2021 @ 09:11:
Amai, veel leeswerk vandaag. Dit type puzzels spreekt me niet echt aan: ik heb liever korte opgave waar je dan meer tijd aan moet spenderen om oplossing te bedenken, dan een puzzel die een half uur lezen is (en dan nog moeilijk te volgen is)
Liever code die je slim moet schrijven op basis van een algemene uitleg om de edge-cases ook op te vangen dan dit geneuzel in de marge
Ben nog niet klaar, maar wat ik gemaakt heb tot nu toe
Niet echt vermakelijk overigens. Complexe omschrijvingen die leiden tot hoofdpijn en oeverloos debuggen wanneer je een regeltje mist. Mn code is op dit moment niet al te best want doe alles dubbel voor links en rechts maar lekker belangrijk...
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
daarna was het inderdaad lezen. Iets te lang bezig geweest met leesfoutjes achterhalen maar het is uiteindelijk gelukt
Damn, ik dacht dat ik hard kon schelden en met toetsenborden gooien (daarom mag ik geen draadloze muis van mijn collega's), maar dit is wel next level!EfBe schreef op zaterdag 18 december 2021 @ 12:28:
..., wellicht omdat ik zo hard gevloekt heb tijdens het coden dat de code bang was te falen.
... en gaat over tot de orde van de dag
If any pair is nested inside four pairs, the leftmost such pair explodes.
en dan als voorbeeld:
[7,[6,[5,[4,[3,2]]]]] becomes [7,[6,[5,[7,0]]]]
maar [3,2] is niet a left most pair, het is nl. de right operand, niet de left. Ik kan uiteraard het voorbeeld volgen en het zo implementeren, maar de omschrijving is fucked.
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Het is inderdaad lastige opgave om te lezen: ik had het gelezen als: degene die 4 niveau's diep zit. En als er meer zijn de linkse. Dus op het voorbeeld:EfBe schreef op zaterdag 18 december 2021 @ 13:45:
Split + explode was toch niet correct. Maar lezende, dit klopt toch niet:
If any pair is nested inside four pairs, the leftmost such pair explodes.
en dan als voorbeeld:
[7,[6,[5,[4,[3,2]]]]] becomes [7,[6,[5,[7,0]]]]
maar [3,2] is niet a left most pair, het is nl. de right operand, niet de left. Ik kan uiteraard het voorbeeld volgen en het zo implementeren, maar de omschrijving is fucked.
[7,[6,[5,[4,[3,2]]]]] becomes [7,[6,[5,[7,0]]]]
[[6,[5,[4,[3,2]]]]],[6,[5,[4,[3,2]]]]]] becomes [[6,[5,[7,0]]]] ,[6,[5,[4,[3,2]]]]]]
Je leest over het woordje "such" heen. De zin betekent iets heel anders dan je denkt.EfBe schreef op zaterdag 18 december 2021 @ 13:45:
Split + explode was toch niet correct. Maar lezende, dit klopt toch niet:
If any pair is nested inside four pairs, the leftmost such pair explodes.
en dan als voorbeeld:
[7,[6,[5,[4,[3,2]]]]] becomes [7,[6,[5,[7,0]]]]
maar [3,2] is niet a left most pair, het is nl. de right operand, niet de left. Ik kan uiteraard het voorbeeld volgen en het zo implementeren, maar de omschrijving is fucked.
Ik zal wel debiel zijn, maar ik snap die zin echt niet. wat betekent such in die zin?DataGhost schreef op zaterdag 18 december 2021 @ 14:00:
[...]
Je leest over het woordje "such" heen. De zin betekent iets heel anders dan je denkt.
verder: "the first regular number to the right of the exploding pair (if any)"
is dat de eerste die je tegenkomt wanneer je de boom volgt, of de 1e die je tegenkomt in de string representatie? Want dat maakt nogal uit.
Ik probeer de mogelijkheden wel uit, welke door tests komt zal wel de juiste zijn, maar JFC wat een gezeik
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Such is hier "van degenen die aan de voorwaarde voldoen". Dus zoiets als "als er paren zijn op vier niveaus diep, explodeert het meest linker paar daarvan". Leftmost is ook "meest linker", niet "linker".EfBe schreef op zaterdag 18 december 2021 @ 14:12:
[...]
Ik zal wel debiel zijn, maar ik snap die zin echt niet. wat betekent such in die zin?
Of jij er intern een boomstructuur van maakt of niet, dat is niet in de opgave genoemd. Het gaat dus om de stringrepresentatie. Dat maakt het "such" dingetje misschien ook wat makkelijker te begrijpen.verder: "the first regular number to the right of the exploding pair (if any)"
is dat de eerste die je tegenkomt wanneer je de boom volgt, of de 1e die je tegenkomt in de string representatie? Want dat maakt nogal uit.
[ Voor 38% gewijzigd door DataGhost op 18-12-2021 14:17 ]
dus als de rechteroperand kan worden geexplode en de linkeroperand niet, dan moet ik de rechteroperand exploden?DataGhost schreef op zaterdag 18 december 2021 @ 14:15:
[...]
Such is "van degenen die aan de voorwaarde voldoen". Dus zoiets als "als er paren zijn op vier niveaus diep, explodeert het meest linker paar daarvan". Leftmost is ook "meest linker", niet "linker".
Ligt voor de hand toch? Expression tree? Maar goed dit was voor mij dus totaal onduidelijk. Het vervalt dus tot string manipulatie en niet expression tree reduction. ZuchtOf jij er intern een boomstructuur van maakt of niet, dat is niet in de opgave genoemd. Het gaat dus om de stringrepresentatie. Dat maakt het "such" dingetje misschien ook wat makkelijker te begrijpen.
3 uur verkloot en me dood geergerd.
[ Voor 33% gewijzigd door EfBe op 18-12-2021 14:21 ]
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Zie m'n edit. Denk niet in jouw structuur, denk alleen aan de string en hoe het er daarin uitziet mbt "links", "verder links", "minder ver links" en "meest linker"EfBe schreef op zaterdag 18 december 2021 @ 14:17:
[...]
dus als de rechteroperand kan worden geexplode en de linkeroperand niet, dan moet ik de rechteroperand exploden?
[ Voor 18% gewijzigd door DataGhost op 18-12-2021 14:20 ]
Dat zeg ik nietEfBe schreef op zaterdag 18 december 2021 @ 14:17:
[...]
Ligt voor de hand toch? Expression tree? Maar goed dit was voor mij dus totaal onduidelijk. Het vervalt dus tot string manipulatie en niet expression tree reduction. Zucht
Als ik het nou fijner vond om deze opgave met omgekeerde strings te doen, kan ik ook niet meer uit de voeten met "meest linker", ondanks dat dat wel in de opgave staat. Daar moet ik dan zelf de denkstap naar "meest rechter" van maken, omdat mijn structuur omgekeerd is. Dus ook een heel ander soort structuur als de string in de opgave zorgt ervoor dat je vertaalstappen nodig hebt.
Het 4e en 5e voorbeeld na "Here are some examples of a single explode action:" leggen het toch duidelijk uit lijkt me?
[ Voor 48% gewijzigd door DataGhost op 18-12-2021 14:31 ]
Goed.. vanmorgen zat ik vast. Dankje @MrHaas, al ontdekte ik zelf de fout vlak voordat ik je hint zag. Dus ik had alles omgebouwd tot een hoofdpijn-veroorzakende ellende, waar echter het goede antwoord uit kwam. Nu had ik even tijd, en kon mijn originele oplossing werkend krijgen: Java dag 18
Siditamentis astuentis pactum.
In code valt het eigenlijk nog mee, maar om de tekst om te zetten naar code was toch wat werk
C# dag 18
Nu al een eeuwigheid aan het kutten met alle brackets....
GEEN LEUKE OPDRACHT
Ik snap dat je het niet leuk vindt als je het zo wilt doenCranzai schreef op zaterdag 18 december 2021 @ 16:16:
Wat een gepriegel....
spoiler:Eerst begonnen met nested lists, toen het besef dat een string eenvoudiger kon zijn.
Nu al een eeuwigheid aan het kutten met alle brackets....
GEEN LEUKE OPDRACHT
Check, andere aanpak dusDataGhost schreef op zaterdag 18 december 2021 @ 16:17:
[...]
Ik snap dat je het niet leuk vindt als je het zo wilt doen

[ Voor 11% gewijzigd door Creepy op 18-12-2021 16:57 ]
"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

Daarom heb ik ook mijn eerder gelinkte code heel subtiel aangepast, want
Dat hoeft helemaal niet moeilijk te zijn als je het concept een beetje door hebt.Cranzai schreef op zaterdag 18 december 2021 @ 16:51:
[...]
Check, andere aanpak dus![]()
spoiler:Hoewel ik er nou ook niet echt blij van wordt een tree op te moeten zetten.
Stiekem was ik ook al een uitgebreide studie aan het maken van jouw codeDataGhost schreef op zaterdag 18 december 2021 @ 17:00:
[...]
Dat hoeft helemaal niet moeilijk te zijn als je het concept een beetje door hebt.spoiler:Uitstekend moment om nog eens met classes/objects aan de slag te gaan, die zijn daar bij uitstek geschikt voor. En dan kan je direct een setje tree-operaties op die classes definiëren die verder identiek zijn voor alle andere (binary) trees waardoor je dat later gewoon kan copy/pasten.
Gheghe nou, ik snap er de ballen van.DataGhost schreef op zaterdag 18 december 2021 @ 17:23:
Ik weet alleen niet 100% zeker of het 100% correct is, ik heb iemand anders met ook twee sterren mijn Up1 laten oplossen en die kreeg een andere uitkomsten die van @MrHaas crasht helaas. Mijn code was in ieder geval correct genoeg voor twee sterren
Ik programmeer vooral op algemene logica en dan merk ik de beperking daarvan op het moment dat je wat meer taal specifieke dingen moet gaan gebruiken zoals classes.

Cranzai schreef op zaterdag 18 december 2021 @ 17:33:
[...]
Gheghe nou, ik snap er de ballen van.
Ik programmeer vooral op algemene logica en dan merk ik de beperking daarvan op het moment dat je wat meer taal specifieke dingen moet gaan gebruiken zoals classes.
spoiler:Kan me wel visualiseren hoe je een boom zou opbouwen bijvoorbeeld maar hoe dat dan slim te doen en hoe je dan de naast liggende nodes op een andere depth bijvoorbeeld weer opspoort is voor mij abracadaba.Mocht ik vandaag eigenhandig willen oplossen zou ik waarschijnlijk mijn string oplossing verder moeten uitwerken maar daar heb ik de kracht niet voor.
Ik heb ook nog een mini-parser geschreven voor de invoer hoewel Python's eval() in theorie ook gewerkt had. Hoe hebben andere mensen dat opgelost?
Ik zit er bijna aan te denken om ook een json parser te pakken en de boel volledig om te bouwen.
[ Voor 51% gewijzigd door Creepy op 18-12-2021 17:55 ]
"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
Soultaker schreef op zaterdag 18 december 2021 @ 17:48:
Oef, bij deel 1 had ik m'n getallen als mutable geïmplementeerd, maar dat maakt deel 2 lastig. Ik heb het uiteindelijk lomp opgelost door alles maar te kopiëren.
Ik heb ook nog een mini-parser geschreven voor de invoer hoewel Python's eval() in theorie ook gewerkt had. Hoe hebben andere mensen dat opgelost?
Creepy schreef op zaterdag 18 december 2021 @ 17:52:
Hmm, ik zie al waar mijn code de mist in gaat.
spoiler:Ik zit er bijna aan te denken om ook een json parser te gebruiken.....
Leuke gedachte over eval() trouwens, misschien leuk voor nog een testinput
[ Voor 4% gewijzigd door DataGhost op 18-12-2021 17:57 ]
Alles opnieuw geschreven want door een domme beslissing om operands OF snailfishnumbers OF ints te laten zijn (ipv nodes met wel of niet een value) werd de code onnodig complex en zag ik de fouten niet.
Nu puzzle 2
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Fijn dat ondanks de taalbarriere alsnog het kwartje gevallen isEfBe schreef op zaterdag 18 december 2021 @ 17:58:
Puzzle 1 DONE. Holy crap.
Alles opnieuw geschreven want door een domme beslissing om operands OF snailfishnumbers OF ints te laten zijn (ipv nodes met wel of niet een value) werd de code onnodig complex en zag ik de fouten niet.
Nu puzzle 2
Nee hoor.DataGhost schreef op zaterdag 18 december 2021 @ 17:59:
[...]
Fijn dat ondanks de taalbarriere alsnog het kwartje gevallen isIk hoop dat ik het niet nodeloos veel complexer heb gemaakt in m'n poging het uit te leggen zonder het volledig voor te kauwen.
Dag 18: https://github.com/FransB...src/AoC2021.Code/Day18.cs
Als morgen net zo'n nachtmerrie wordt is dit mn laatste dag
[ Voor 26% gewijzigd door EfBe op 18-12-2021 18:29 ]
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Ik heb eval gebruiktSoultaker schreef op zaterdag 18 december 2021 @ 17:48:
Oef, bij deel 1 had ik m'n getallen als mutable geïmplementeerd, maar dat maakt deel 2 lastig. Ik heb het uiteindelijk lomp opgelost door alles maar te kopiëren.
Ik heb ook nog een mini-parser geschreven voor de invoer hoewel Python's eval() in theorie ook gewerkt had. Hoe hebben andere mensen dat opgelost?
Ach het is bijna kerstCranzai schreef op zaterdag 18 december 2021 @ 16:51:
[...]
Check, andere aanpak dus![]()
spoiler:Hoewel ik er nou ook niet echt blij van wordt een tree op te moeten zetten.
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Wat geeft jouwe voor uitkomst op deze input?
Geen probleem als je 10 petabyte RAM hebt.DataGhost schreef op zaterdag 18 december 2021 @ 18:39:
Wat geeft jouwe voor uitkomst op deze input?
spoiler:[x for x in range(9999999999999999)]
Zoals een error message in een van de programma's die ik gebruik aangeeft:DataGhost schreef op zaterdag 18 december 2021 @ 18:39:
[...]
Wat geeft jouwe voor uitkomst op deze input?
spoiler:[x for x in range(9999999999999999)]
"There's no problem big enough, that it can't be run away from"
Gereduceerde getallen bij elkaar optellen kan andere antwoorden opleveren dan ze zonder eerst reduceren bij elkaar op te tellen. Eerst reduceren maakt mijn code stukken sneller (op jouw invoer ineens binnen een seconde in plaats van 53 seconden), maar het antwoord is niet hetzelfde.DataGhost schreef op zaterdag 18 december 2021 @ 16:58:
Hm, ik heb de opdracht nog nauwkeurig gelezen en er wordt hier door minimaal 1 persoon een ongefundeerde aanname gedaan over de input. De invariant is wel een beetje jammer want die zorgt ervoor dat de input alsnog aan een best wel kleine maximale grootte is gebonden, dus kwadratische oplossingen zullen niet een zo heel gek veek langzamer zijn. Anyway, ik ben toch tot een testset gekomen die op mijn laptopje in 8 en 14 seconden draait: Up1 met de antwoorden (aangenomen dat mijn code klopt).
spoiler:In deel twee moest ik nog wel iets subtiels wijzigen aan mijn code want dat duurde opeens vele minuten, maar ik had gelukkig snel genoeg door wat er aan de hand was![]()
Daarom heb ik ook mijn eerder gelinkte code heel subtiel aangepast, want
spoiler:ik rekende in deel 2 de trees steeds vanaf de input uit voordat ik ze bij elkaar optelde, in plaats van de gereduceerde kopieën bij elkaar op te tellen
Met vooraf reduceren deel 1: 3670, deel 2: 4489
Op de officiële input maakt dit niet uit, daarin zijn de gegeven getallen al gereduceerd
Die invoer voldoet niet aan de specificatie omdat je begint met non-reduced numbers, en die zijn niet geldig. Als ik de invoer eerst reduceer dan krijg ik er dezelfde antwoorden uit (in ongeveer 30 seconden).DataGhost schreef op zaterdag 18 december 2021 @ 16:58:
Anyway, ik ben toch tot een testset gekomen die op mijn laptopje in 8 en 14 seconden draait: Up1 met de antwoorden (aangenomen dat mijn code klopt).
*edit:*
Precies wat dcm360 hierboven zegt.
[ Voor 3% gewijzigd door Soultaker op 18-12-2021 19:31 ]
[ Voor 18% gewijzigd door DataGhost op 18-12-2021 20:10 ]
Tree maken met immutable records, deel 1 op de laptop ging in 33ms, deel 2 in 178ms.
Dit zie ik optreden bij het samenvoegen van deze 2 nummers:
1
2
| [[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]] [7,[[[3,7],[4,3]],[[6,3],[8,8]]]] |
Daar worden bij mij de volgende reductie stappen genomen:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| [[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[0,[7,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,0],[15,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[0,13]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[14,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,7],[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,10],[[0,[11,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,5]],[[0,[11,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,5]],[[11,0],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,5]],[[[5,6],0],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,10]],[[0,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,[5,5]]],[[0,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[10,0]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[[5,5],0]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[0,5]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[5,15],[0,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[5,[7,8]],[0,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[12,0],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[[6,6],0],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,11]],[[0,6],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,[5,6]]],[[0,6],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,6],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,6],[19,0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,6],[[9,10],0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,15],[0,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,[7,8]],[0,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[13,0],[8,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[[6,7],0],[8,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[8,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[8,[5,5]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[13,0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[[6,7],0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,13],[0,7]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,[6,7]],[0,7]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[6,0],[7,7]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[6,0],[7,7]]]] |
Zoals je ziet sluipt er een fout in, want het resultaat zou dit moeten zijn:
1
| [[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]] |
Als iemand voor mij een vergelijkbare lijst met reductiestappen kan maken kan ik mogelijk uitvogelen wat hier aan de hand is.
Mocht je heel erg veel van een brainfuck houden is mijn code ook hier te vinden (op eigen risico betreden!):
Best wel trots op deze solution! Blij dat het me vanavond nog is gelukt na klussen
[[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]Remcoder schreef op zaterdag 18 december 2021 @ 21:41:
Kan iemand even helpen, bij mij gaat het mis bij de additie operatie van 2 snailnumbers. Ze worden goed samengevoegd, maar de reductie daarna gaat fout. Alle andere reductie voorbeelden uit de opdracht werken goed, en ik mis de tussenstappen om hier te zien waar het mis gaat.
Dit zie ik optreden bij het samenvoegen van deze 2 nummers:
code:
1 2 [[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]] [7,[[[3,7],[4,3]],[[6,3],[8,8]]]]
Daar worden bij mij de volgende reductie stappen genomen:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 [[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[0,[7,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,0],[15,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[0,13]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[14,[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,7],[[[3,7],[4,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,10],[[0,[11,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,5]],[[0,[11,3]],[[6,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,5]],[[11,0],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,5]],[[[5,6],0],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,10]],[[0,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[5,[5,5]]],[[0,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[10,0]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[7,[[5,5],0]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[12,[0,5]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[5,6],[[9,3],[8,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[5,15],[0,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[5,[7,8]],[0,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[12,0],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,5]],[[[6,6],0],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,11]],[[0,6],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[0,[5,6]]],[[0,6],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,6],[8,[11,8]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,6],[19,0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,6],[[9,10],0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,15],[0,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[6,[7,8]],[0,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[13,0],[8,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,0]],[[[6,7],0],[8,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[8,10]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[8,[5,5]]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[13,0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,7],[[6,7],0]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,13],[0,7]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[0,[6,7]],[0,7]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[6,0],[7,7]]]] Reduced to:[[[[4,0],[5,4]],[[7,7],[6,0]]],[[[6,6],[5,6]],[[6,0],[7,7]]]]
Zoals je ziet sluipt er een fout in, want het resultaat zou dit moeten zijn:
code:
1 [[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]]
Als iemand voor mij een vergelijkbare lijst met reductiestappen kan maken kan ik mogelijk uitvogelen wat hier aan de hand is.
Mocht je heel erg veel van een brainfuck houden is mijn code ook hier te vinden (op eigen risico betreden!):
***members only***
[[[[4,0],[5,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[0,[7,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[0,[11,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,0],[[9,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[0,[11,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[0,13]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[17,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,9],[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,9],[[[5,6],9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,14],[[0,15],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[0,15],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[0,[7,8]],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,0],[19,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,0],[[9,10],0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[0,10]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[0,[5,5]]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]]
Ooooooh, moet je eerst het hele nummer nalopen of er ergens een explode gedaan kan worden, en dáárna pas gaan zoeken naar een split...ZieglerNichols schreef op zaterdag 18 december 2021 @ 21:59:
[...]
[[[[0,[4,5]],[0,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,0]],[[[4,5],[2,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[0,[7,6]],[9,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[7,[[[3,7],[4,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[0,[11,3]],[[6,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,0],[[9,3],[8,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[0,[11,8]]]]]
[[[[4,0],[5,4]],[[7,0],[15,5]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,0],[[7,8],5]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[0,13]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[0,[6,7]]]],[10,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[17,[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,9],[[11,9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,9],[[[5,6],9],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,14],[[0,15],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[0,15],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[0,[7,8]],[11,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,0],[19,0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,0],[[9,10],0]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[0,10]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[0,[5,5]]]]]
[[[[4,0],[5,4]],[[7,7],[6,0]]],[[8,[7,7]],[[7,9],[5,0]]]]

Mijn dank is groot, deel 1 opgelost!
Gelukkig had ik een tostring functie gemaakt die ze in het juiste formaat uitspuugde, dus een kwestie van de strings gewoon opnieuw parsen en ik heb een compleet vers snailnumber om te vergelijken met een ander compleet vers snailnumber
... en gaat over tot de orde van de dag
Poef mn laptop stijgt opDataGhost schreef op zaterdag 18 december 2021 @ 16:58:
Anyway, ik ben toch tot een testset gekomen die op mijn laptopje in 8 en 14 seconden draait: Up1 met de antwoorden (aangenomen dat mijn code klopt).
3670
0:00:42.969364
4489
0:00:29.527643
Zal vast iets met stringmanipulatie te maken hebben
Ik voor nu ook. Met het gezinsleven tussendoor is een paar uur voor 1 opdracht te lang en dan niet even een uurtje ongestoord er aan bezig kunnen zijn leidt enorm af.P_Tingen schreef op zaterdag 18 december 2021 @ 22:30:
Ik ga vandaag lekker overslaan. Geen zin in eindeloos gepiel met strings of trees. Ik zie morgen wel weer wat er komt.
"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
Leuk deze input. Ik moest mijn origineel wel aanpassen wantDataGhost schreef op zaterdag 18 december 2021 @ 16:58:Anyway, ik ben toch tot een testset gekomen die op mijn laptopje in 8 en 14 seconden draait: Up1 met de antwoorden (aangenomen dat mijn code klopt).
Voor rust is dit blijkbaar een eitje:
1
2
3
4
| % time target/release/day18 ~/Downloads/aoc-2021-day18-up1.txt 18a: 3670 18b: 4489 target/release/day18 ~/Downloads/aoc-2021-day18-up1.txt 0,10s user 0,00s system 99% cpu 0,102 total |
Edit: en ja, ik was te gaar om iets fatsoenlijks te schrijven om via de tree het eerste linker of rechter getal te kunnen bepalen, vandaar het plat slaan
[ Voor 17% gewijzigd door Creepy op 19-12-2021 00:49 ]
"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
Uiteindelijk wel heel blij met plek 557 op lb. En binnen 2 uur opgelost tov ruim 4 uur gisteren
Daarna gewoon zeggen dat scanner 1 klopt en kijken of je matches kan vinden door herhaaldelijk de lijst met niet gematchte scanners te loopen.
Code hier Niet heel mooi met al die geneste for loops maar het werkt en de functies aardig uit elkaar gehaald.
Asgardian28 schreef op zondag 19 december 2021 @ 08:31:
Zo weer een lastige vandaag, zeker na die debughel van gisteren!
Uiteindelijk wel heel blij met plek 557 op lb. En binnen 2 uur opgelost tov ruim 4 uur gisteren
spoiler:Snapte niets van de 24 orientaties. Na een tijdje turen heb ik gewoon 48 opties gemaakt (x,y,z allen *1 of *-1 en dan gehusseld bv z,y,x. Zo blij dat dit werkte anders erg lastig goed te krijgen.
Daarna gewoon zeggen dat scanner 1 klopt en kijken of je matches kan vinden door herhaaldelijk de lijst met niet gematchte scanners te loopen.
Code hier Niet heel mooi met al die geneste for loops maar het werkt en de functies aardig uit elkaar gehaald.
EDIT: Ah, natuurlijk. De offset ligt vast van de twee probes, dus als je 12 items vind die precies dezelfde offset hebben..... dan heb je een match natuurlijk.
[ Voor 5% gewijzigd door armageddon_2k1 op 19-12-2021 09:10 ]
Engineering is like Tetris. Succes disappears and errors accumulate.
Dat snap ik niet. Ik reken met 48 oriëntaties.AoC schreef:
In total, each scanner could be in any of 24 different orientations
Siditamentis astuentis pactum.
Stel je een camera voor, die kan als bovenkant de x, y of z as hebben (3 opties).
Maar per opties kan ook op zn kop, nu hebben we 3x2=6opties.
Nu kan je per optie de camera 4 kwartslagen draaien: 6x4 is 24
Overigens kon dag 18, realiseerde ik me vanochtend, ook
[ Voor 3% gewijzigd door EfBe op 19-12-2021 09:51 ]
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Ik denk morgen geen kraker zoals afgelopen twee dagen.
^ Klopt, zo heb ik het inderdaad gedaanEfBe schreef op zondag 19 december 2021 @ 09:50:
Mja, dag 18 was de laatste denk ik. Ik kom er wellicht nog wel uit, die puzzle voor dag 19, maar weer veel tijd hier insteken, dat gaat me niet lukken.
Overigens kon dag 18, realiseerde ik me vanochtend, ookspoiler:in een list van integers, waarbij je `[` als bv -1 en `]` als -2 opslaat en dan bv voor explode haakjes tellen, (dus zie je een `[` dan +1, zie je een `]` dan -1 totdat je teller op 5 staat), dan de elements verwijderen (2 haakjes ints en 2 number ints). een List<T> heeft veelal wel remove/insert capaciteiten dus dat is makkelijk. Zoeken links/rechts is een offsetscan dus ook straightforward. Het lastigste wordt nu de magnitude berekenen (niet zo lastig maar toch)
Edit: Nee helemaal niet.. verkeerd gelezen
Diderikdm schreef op zondag 19 december 2021 @ 09:58:
[...]
spoiler:Zit wel nog de nuance in dat de numbers meerdere indexes kunnen bezetten, bijv ('16'), en de nummers links en rechts dit ook kunnen zijn.
Ah dank je. Dit is de 1e adventofcode waar ik serieus aan meedoe dus ken de karakteristieken nog nietAsgardian28 schreef op zondag 19 december 2021 @ 09:58:
@EfBe je kan ook deze tijdelijk overslaan. Vaak zijn de moeilijkste puzzels in het weekend voor kerst (dit weekend)
Ik denk morgen geen kraker zoals afgelopen twee dagen.
[ Voor 25% gewijzigd door EfBe op 19-12-2021 10:36 ]
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Engineering is like Tetris. Succes disappears and errors accumulate.
"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
https://niels.nu
Eens. Ik was gewoon chagrijning vanochtend dat het me weer heel veel tijd ging kosten. En dat is natuurlijk niet goedHydra schreef op zondag 19 december 2021 @ 11:49:
Okay, dit is wel het punt waar ik afhaak. Ik weet hoe ik het aan moet pakken maar we zitten helaas weer in een jaar waar "heul veul werk" als 'uitdagend' gezien wordt. Na gister heb ik hier dus echt ff geen zin in.
En ik wil het dan weer oplossen met quaternions enzo... dus tja.
Engineering is like Tetris. Succes disappears and errors accumulate.
Iemand hier een goede python tutorial voor?
TrailBlazer schreef op zondag 19 december 2021 @ 12:00:
spoiler:Ik heb nu de afstanden tussen alle punten per scanner bepaalt. Als ik vervolgens kijk welke scanners vergelijkbare afstanden hebben dan kan ik wel zien welke scanners er een overlap hebben. Alleen bepalen welke rotatie ik moet doen gaat boven mijn wiskunde skills
Iemand hier een goede python tutorial voor?
Engineering is like Tetris. Succes disappears and errors accumulate.
Engineering is like Tetris. Succes disappears and errors accumulate.
Asgardian28 schreef op zondag 19 december 2021 @ 08:31:
Snapte niets van de 24 orientaties. Na een tijdje turen heb ik gewoon 48 opties gemaakt
Ik stelde me de scanner voor alsVarienaja schreef op zondag 19 december 2021 @ 09:10:
[...]
Dat snap ik niet. Ik reken met 48 oriëntaties.
Mijn oplossing van vandaag had een paar minuten nodig om alles uit te rekenen dus strikt genomen is 'ie niet correct genoeg. Ik heb wel een paar ideetjes qua optimalisatie maar die kunnen behoorlijk complex worden en ik moet nog andere dingen doen vandaag
[ Voor 18% gewijzigd door DataGhost op 19-12-2021 13:11 ]
Quaternions zijn niet nodig, het zijn 90 graden rotaties, dus je kunt gewoon x/y/z swappenarmageddon_2k1 schreef op zondag 19 december 2021 @ 12:00:
[...]
En ik wil het dan weer oplossen met quaternions enzo... dus tja.
Creator of: LLBLGen Pro | Camera mods for games
Photography portfolio: https://fransbouma.com
Ja weet ik, maar ik doe gewoon moeilijk.EfBe schreef op zondag 19 december 2021 @ 13:37:
[...]
Quaternions zijn niet nodig, het zijn 90 graden rotaties, dus je kunt gewoon x/y/z swappen
Engineering is like Tetris. Succes disappears and errors accumulate.
Ik had gewoon geen idee hoe ik dit in Clojure op moest lossen. Ook heb ik me heel lang blind lopen staren op de voorbeelden bij deel 1. Bij een aantal voorbeelden komt mijn algoritme tot een ander resultaat dan wat in de opdracht staat. Echter, het antwoord dat mijn algoritme op mijn persoonlijke input geeft is blijkbaar wel goed...
Als iemand tijd en zin heeft, zou je dan eens een lijst kunnen genereren van de reduce tussenstappen van dit getal?
[[[[[7,0],[7,7]],[[7,7],[7,8]]],[[[7,7],[8,8]],[[7,7],[8,7]]]],[7,[5,[[3,8],[1,4]]]]]
Mijn algoritme maakt daar dit van:
[[[[7,7],[7,8]],[[9,5],[8,7]]],[[[7,8],[0,8]],[[8,9],[9,0]]]]
Dit moet het volgens de omschrijving zijn:
[[[[7,7],[7,8]],[[9,5],[8,7]]],[[[6,8],[0,8]],[[9,9],[9,0]]]]
Mijn algoritme reduceert het in 113 stappen.
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
https://pastebin.com/aLGwcVNLDricus schreef op zondag 19 december 2021 @ 14:13:
Dag 18 in Kotlin
Ik had gewoon geen idee hoe ik dit in Clojure op moest lossen. Ook heb ik me heel lang blind lopen staren op de voorbeelden bij deel 1. Bij een aantal voorbeelden komt mijn algoritme tot een ander resultaat dan wat in de opdracht staat. Echter, het antwoord dat mijn algoritme op mijn persoonlijke input geeft is blijkbaar wel goed...
Als iemand tijd en zin heeft, zou je dan eens een lijst kunnen genereren van de reduce tussenstappen van dit getal?
[[[[[7,0],[7,7]],[[7,7],[7,8]]],[[[7,7],[8,8]],[[7,7],[8,7]]]],[7,[5,[[3,8],[1,4]]]]]
Mijn algoritme maakt daar dit van:[[[[7,7],[7,8]],[[9,5],[8,7]]],[[[7,8],[0,8]],[[8,9],[9,0]]]]
Dit moet het volgens de omschrijving zijn:[[[[7,7],[7,8]],[[9,5],[8,7]]],[[[6,8],[0,8]],[[9,9],[9,0]]]]
Mijn algoritme reduceert het in 113 stappen.
Thanks! Ik heb het probleem intussen toch nog op eigen houtje weten te vinden:
099 [[[[7,7],[7,8]],[[9,5],[8,0]]],[[[9,10],20],[8,[9,0]]]] (ex: null | sp: 10) 100 [[[[7,7],[7,8]],[[9,5],[8,0]]],[[[9,10],[10,10]],[8,[9,0]]]] (ex: null | sp: 10)
In stap 100 had de 10 van stap 99 gesplitst moeten worden. In plaats daarvan werd de 20 gesplitst. Deze edge case kwam in mijn input blijkbaar niet voor.
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...