Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
Besloten via lambdas te werken (zoals de jump-puzzles uit 2016+), geinige puzzel
[ Voor 1% gewijzigd door Diderikdm op 02-12-2021 08:24 . Reden: Edit naar repo ]
Anyone who gets in between me and my morning coffee should be insecure.
Hou daar mee op! Straks maken ze je nog manager!
Anyone who gets in between me and my morning coffee should be insecure.
Anyway, Dag 2 https://github.com/CodeEn...eer/aoc/aoc2021/Day2.java
Dat was weer snel gebeurd idd
Edit: en lang leve Records en het "nieuwe" switch statement inderdaad
[ Voor 17% gewijzigd door Creepy op 02-12-2021 11:20 ]
"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://github.com/wouter...ob/master/day2/Program.cs
Wel 1 foutje gemaakt, ik had na "part 1" mijn values niet gereset
Maar t is weer gelukt
https://github.com/Gilott...e/blob/main/2021/Day02.fs
@MaNDaRK ik ben ook meer voor het leesbare dan het "zo compact mogelijk" opschrijven.
Ik benader de opdrachten dan ook alsof het een professioneel vraagstuk is en schrijf mijn code dan ook zoals ik het zakelijk ook zou doen.
If money talks then I'm a mime
If time is money then I'm out of time
https://github.com/Cranzai/AoC (ff snelle commit, moet nog ff uitzoeken hoe ik dit netjes wil gaan doen.) Heerlijk aan de slag met vim en gcc
Schrijven van de I/O module was ff wennen met de pointers e.d. maar uiteindelijk vrij content.
Zodra ik die lijst eenmaal in geheugen had was het een piece of cake.
Grootste uitdaging voor vandaag zal zijn om de I/O te updaten, hopelijk valt dit enigszins mee.
Plan is de fscanf( , "%d", ) om te zetten naar fscanf(, "%s %d", ) met dan een space-delimited character (want de input file is niet mooi evenly spaced
[ Voor 3% gewijzigd door Cranzai op 02-12-2021 10:41 ]
Part 1 en 2 kunnen dus in 1 pass.
Beetje overkill qua code structuur, maar het is wel leerzaam om daarop te focussen als de puzzeltjes nog makkelijk zijn
[ Voor 42% gewijzigd door evanraalte op 02-12-2021 11:09 ]
Ben persoonlijk niet helemaal content. Denk dat ik de oplossing wat generieker had kunnen maken. Lijkt toevalligerwijs heel veel op de Java oplossing met records.
Al met al krijg ik het prima aan het werk, maar het verschil tussen mijn code en die van een aantal andere gebruikers hier is enorm. Ik moet eens beter mijn best gaan doen met het gebruik van lambdas.
Dag 2 voltooid (Java)
Denk dat ik me gewoon vast houd aan gewoontes en idealen: Ben groot voorstander van Spring, Lombok en lambda's, maar tegen onnodige abstracties en interfaces
Ik vind je code heel goed leesbaar. Ik heb collega's gehad die er echt spijkerschrift van maakten.MrMaxedTank schreef op donderdag 2 december 2021 @ 13:18:
Tot zover best te doen, leuke uitdagingen omdat ik eigenlijk alleen in mijn vrije tijd wat knutsel met Python (telt niet echt blijkbaar zo las ik een paar pagina's terug).
Al met al krijg ik het prima aan het werk, maar het verschil tussen mijn code en die van een aantal andere gebruikers hier is enorm. Ik moet eens beter mijn best gaan doen met het gebruik van lambdas.
***members only***
Ik ben ook geen Python programeur en ik heb een beetje hetzelfde gebouwd als jij hebt. Wel maak ik een functie om de data in te lezen en eventueel al deels te parsenMrMaxedTank schreef op donderdag 2 december 2021 @ 13:18:
Tot zover best te doen, leuke uitdagingen omdat ik eigenlijk alleen in mijn vrije tijd wat knutsel met Python (telt niet echt blijkbaar zo las ik een paar pagina's terug).
Al met al krijg ik het prima aan het werk, maar het verschil tussen mijn code en die van een aantal andere gebruikers hier is enorm. Ik moet eens beter mijn best gaan doen met het gebruik van lambdas.
***members only***
https://gitlab.com/NetTinkerer/aoc-2021/-/raw/main/day2-2.py
het kan vast korter maar ik vind dit wel lekker leesbaar.
[ Voor 4% gewijzigd door TrailBlazer op 02-12-2021 14:40 ]
Maar waarom AtomicInteger's voor ints die qua scope puur in de methode worden gebruikt?ShitHappens schreef op donderdag 2 december 2021 @ 14:22:
***members only***
Dag 2 voltooid (Java)
Denk dat ik me gewoon vast houd aan gewoontes en idealen: Ben groot voorstander van Spring, Lombok en lambda's, maar tegen onnodige abstracties en interfaces![]()
spoiler:Dus vandaar geen enum gemaakt van direction of nog weer extra interfaces gemaakt, moet een beetje leuk blijven
"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
IO operaties hebben altijd baat bij MultithreadingCreepy schreef op donderdag 2 december 2021 @ 14:53:
[...]
Maar waarom AtomicInteger's voor ints die qua scope puur in de methode worden gebruikt?
* DevWouter gaat alvast voor straf in een hoek staan
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
Variabelen die je in een stream gebruikt moeten (effectively) final zijn, en als je een atomicinteger zo gebruikt is die dat, een gewone int die je aanpast is niet final.Creepy schreef op donderdag 2 december 2021 @ 14:53:
[...]
Maar waarom AtomicInteger's voor ints die qua scope puur in de methode worden gebruikt?
Daarom heb ik een aparte class gemaakt voor het bijhouden van de positie.
[ Voor 7% gewijzigd door Remcoder op 02-12-2021 15:00 ]
"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
MrMaxedTank schreef op donderdag 2 december 2021 @ 13:18:
Tot zover best te doen, leuke uitdagingen omdat ik eigenlijk alleen in mijn vrije tijd wat knutsel met Python (telt niet echt blijkbaar zo las ik een paar pagina's terug).
Al met al krijg ik het prima aan het werk, maar het verschil tussen mijn code en die van een aantal andere gebruikers hier is enorm. Ik moet eens beter mijn best gaan doen met het gebruik van lambdas.
***members only***
Ik ben ook maar aan de slag gegaan, dit keer in Kotlin. Voor mij ook een manier om Kotlin beter te leren kennen. Ik heb in ieder geval geprobeerd om het redelijk kort, maar wel goed leesbaar te houden.
Daarnaast heb ik daadwerkelijk Unit tests geschreven die de test input uit de opdracht met bijbehorende antwoorden gebruikt. Zie https://github.com/marcde...ent2021/DaySolverTests.kt voor de tests
De input zit trouwens in de resources folder, waarbij degene in de src de echte opdracht is en in test degene uit het voorbeeld van de opdracht.
[ Voor 11% gewijzigd door Marcj op 02-12-2021 15:43 ]
Dag 2 op Github
test = [0, 1, 2]
print(sum(test[0:8]))
Uitvoer = 3; maar ik had een index error verwacht?
@Diderikdm Dank voor het antwoord
[ Voor 17% gewijzigd door bakkerjangert op 02-12-2021 16:19 ]
omdat [0:8] een slice is.bakkerjangert schreef op donderdag 2 december 2021 @ 16:05:
Niet al te moeilijk vandaag inderdaad.
Dag 2 op Github
spoiler: Dag 1Nog even terugkomend op dag, weet iemand waarom de volgende code (python 3) niet resulteert in een index error?
test = [0, 1, 2]
print(sum(test[0:8]))
Uitvoer = 3; maar ik had een index error verwacht?
Geef me alle indexes van test ([1,2,3]) waarvan de index minimaal 0 is en maximaal 7 (Het is een conditie). (:8 is een tot 8 )
Van de waarden in [1,2,3] liggen alle indexes tussen 0 en 7 en worden dus alle drie de waarden teruggegeven.
Mocht je inderdaad test[5] aanroepen, roep je een harde call aan naar index 5 van test, en die bestaat niet. Hierdoor krijg je wel een error.
Mocht je test[5:8] aanroepen, krijg je een lege lijst terug, omdat geen van de indexes in test tussen de 5 en de 7 liggen
[ Voor 5% gewijzigd door Diderikdm op 02-12-2021 16:16 ]
Waarom split je het commando niet voordat je gaat kijken wat de richting is? Dan heb je maar een keer een split nodig om de richting en value te krijgen.bakkerjangert schreef op donderdag 2 december 2021 @ 16:05:
Niet al te moeilijk vandaag inderdaad.
Dag 2 op Github
Ik moest inderdaad ook heel erg denken aan de opdracht van vorig jaar, praktisch dezelfde opzet.
PS5 PSN: UnrealKazu
Nu ook op github: https://github.com/Cranzai/AoC/Cranzai schreef op donderdag 2 december 2021 @ 15:28:
[...]
spoiler:Day 2 gefixedDit was precies de inspiratie die ik nodig had, geen gedoe met arrays e.d. gewoon on the fly lezen en uitvoeren.
Nog eventjes wat gespeeld met python voor dag 1, daar wordt het wel een stuk makkelijker van
Moet alleen mijn python nog weer eventjes opfrissen.
Dat is voor mij ook echt een terugkerend issueydderf schreef op donderdag 2 december 2021 @ 08:14:
Hier ook ff snel dag 2 in C# gemaakt.
Ging eigenlijk verrassend snel totdat deel twee niet goed gerekend werd. Schijnbaar moet je de opdracht wel goed lezen.
https://niels.nu
Signature van nature
Wat goed. Wist helemaal niet dat F# een windowed function had standaard. Ik had dit jaar geen zin in F#, dus maar gewoon C# gepakt.Gilotto schreef op woensdag 1 december 2021 @ 14:45:
Lekkere opwarmer inderdaad.
Alles in een keer gelukt.
spoiler:Voor het eerst gebruik gemaakt van de windowed functie
***members only***
Signature van nature
Deze keer in Kotlin ook al heb ik dat nog nooit eerder gebruikt (Java was ook voor het laatst op school). Ik heb de Jetbrains Kotlin template gebruikt. Erg handig dat zij al een functie hebben gemaakt die valideert aan de hand van de testdata.
https://github.com/iruoy/advent-of-code-2021-kotlin
[ Voor 16% gewijzigd door -Dream op 02-12-2021 21:08 . Reden: Formatting ]
Alhoewel ik normaal werk met Kotlin en Typescript doe ik het in Python. Voor het eerst dat ik Python gebruik, dus het is lekker puzzelen.
Dag 2
https://github.com/rverst.../blob/main/Y2021/Day03.cs
“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.”
Siditamentis astuentis pactum.
Wel happy met het resultaat maar ik ga later nog ff kijken of ik die while loop weg kan poetsen. Nu aan het werk
https://niels.nu
Engineering is like Tetris. Succes disappears and errors accumulate.
En ik moest even rekening houden met het feit dat integer division weer een integer ipv een double oplevert.
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
https://github.com/rogier...er/AOC2021/Day03/Day03.fs
Dag 3 in Python
https://niels.nu
Haha, ik heb net dag 3 met Excel gedaan (oh jij ook zie ik nu).
Qua coderen kan ik alleen wat Jinja (vanwege Home Assistant templates).
Zou een goede basis voor Python kunnen zijn, wil ik me wel wat meer in gaan verdiepen.
[ Voor 3% gewijzigd door TheFes op 03-12-2021 09:35 ]
Het helpt dat ik geen developer ben, maar ik heb wel tijdens mijn werk de neiging om toch nog even te kijken of ik mijn oplossing kan verbeteren.Hydra schreef op vrijdag 3 december 2021 @ 09:33:
Hebben jullie dat ook dat als je dan in de ochtend zo'n opdracht maakt, je daarna niet zo'n zin heb je 'gewone' devwerk te doen? Of ben ik gewoon raar?
Het ligt er een beetje aan wat voor werk ik moet doen. Soms heb je van die leuke "uitzoek" problemen waar ik dan wel zin in heb. Maar iets "normaals" ontwikkelen is dan een stuk minder leuk jaHydra schreef op vrijdag 3 december 2021 @ 09:33:
Hebben jullie dat ook dat als je dan in de ochtend zo'n opdracht maakt, je daarna niet zo'n zin heb je 'gewone' devwerk te doen? Of ben ik gewoon raar?
“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.”
Viel weer mee. Wel even lopen rommelen op deel 2 om niet de oplossing te kopieren/plakken om beide getallen te berekenen maar het is nog steeds behoorlijk wat "dubbele" code.
Edit: toch nog een klein beetje gerefactored, zo valt de dubbele code weer mee.
[ Voor 13% gewijzigd door Creepy op 03-12-2021 09: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
De eerste opdracht ging (toevallig) goed, maar de tweede ga ik toch maar testgedreven oplossen.
If money talks then I'm a mime
If time is money then I'm out of time
"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
Creepy schreef op vrijdag 3 december 2021 @ 10:03:
spoiler:In de uitleg gaat het over het eerste bit. Ik heb echt een minuut lopen staren totdat ik doorhad dat "eerste bit" het eerste karakter uit de string is, en niet zoals ik gewend ben, de bit aan de rechterkant
Siditamentis astuentis pactum.
Ik ook, maar dat sluit niet uit dat we eventueel allebei raar zijnHydra schreef op vrijdag 3 december 2021 @ 09:33:
Hebben jullie dat ook dat als je dan in de ochtend zo'n opdracht maakt, je daarna niet zo'n zin heb je 'gewone' devwerk te doen? Of ben ik gewoon raar?
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Ligt aan je platformVarienaja schreef op vrijdag 3 december 2021 @ 10:18:
spoiler:Er ist natuurlijk een groot verschil tussen de eerste bit en de minst signifikante bit
https://niels.nu
Ja, het is ook slecht verwoord. Ik weet dat de meeste mensen hier raar zijn, maar ik vroeg me vooral af of ik uitzonderlijk raar wasJanoz schreef op vrijdag 3 december 2021 @ 10:50:
Ik ook, maar dat sluit niet uit dat we eventueel allebei raar zijn
https://niels.nu
Ik prefereer Random-Endian.
Siditamentis astuentis pactum.
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
"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
Creepy schreef op vrijdag 3 december 2021 @ 10:59:
Hmm,de Paula bean...
spoiler:Die had wel gebruikt kunnen worden in mijn oplossing. False indien meer 0'en, True indien meer 1'en en FIleNotFound indien evenveel 1'en en 0'n
Maar als je het graag wilt, kun je altijd een Boolean nemen. Die kan null zijn
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Daarna maar eens kijken of ik alles in een leuke python "submarine class" kan gaan verpakken voor de funfactor.
[ Voor 20% gewijzigd door TrailBlazer op 03-12-2021 12:17 ]
Ik nu ook met een foldGilotto schreef op vrijdag 3 december 2021 @ 11:12:
Was een leuke puzzel vandaag.
Part 2 was inderdaad even puzzelen. Wel een nette oplossing imo.
spoiler:Part 1: goede reden om transpose te gebruiken
@Rogier V Ik heb part 2 inderdaad recursief opgelost.
https://github.com/Gilott...e/blob/main/2021/Day03.fs
Ik had het bewust niet gedaan, omdat ik erop gokte dat je met deel 2 toch weer net iets anders moest doen. Ik probeer te anticiperen wat er in deel 2 moet gebeuren (en daarmee bedoel ik dus niet over-engineeren, maar netjes werken en niet teveel shortcuts nemen).TrailBlazer schreef op vrijdag 3 december 2021 @ 11:46:
Ik moet echt beter worden in list comprehensions in python en mijn kennis van built in functions is gewoon superslecht. Ik heb afaik nog nooit de count functie gebruikt bijvoorbeeld. Dat had deze opdracht wel eenvoudiger gemaakt.
spoiler:Ben ik de enige die voor de epsilon waarde gewoon 2^no_of_bits-1-gamma waarde heeft gedaan.
When life gives you lemons, start a battery factory
Siditamentis astuentis pactum.
Day 3 - C# al met al leesbaar, maar ik denk dat hier en daar nog wel wat optimalisatie mogelijk is
Yep, dat ga ik vanaf morgen ook weer doen. Bij elke opdracht deed ik iets stoms omdat ik iets verkeerd las met als gevolg dat ik overnieuw kan beginnen. Ook had ik zin om de debugger te pakken en dat is voor mij echt een rode lijn.Matis schreef op vrijdag 3 december 2021 @ 10:00:
Dag 3 begonnen, toch maar overgestapt op TDD.
De eerste opdracht ging (toevallig) goed, maar de tweede ga ik toch maar testgedreven oplossen.
Ik ga morgen ook eerst even een klein frameworkje opzetten. Kijkend naar vorige jaar lijkt de structuur van de puzzels toch erg vaak hetzelfde. Bovendien heb ik dan een excuus om met C# templates te spelen
dotnet new console; dotnet new gitignore; code .
"Doubt—the concern that my views may not be entirely correct—is the true friend of wisdom and (along with empathy, to which it’s related) the greatest enemy of polarization." -- Václav Havel
built-in functions zijn overratedTrailBlazer schreef op vrijdag 3 december 2021 @ 11:46:
Ik moet echt beter worden in list comprehensions in python en mijn kennis van built in functions is gewoon superslecht. Ik heb afaik nog nooit de count functie gebruikt bijvoorbeeld. Dat had deze opdracht wel eenvoudiger gemaakt.
spoiler:Ben ik de enige die voor de epsilon waarde gewoon 2^no_of_bits-1-gamma waarde heeft gedaan.
Zonder gekkigheid komen ze de leesbaarheid/overdraagbaarheid van de code vaak niet ten goede.
Wanneer de snelheid van je code van minder belang is probeer ik me altijd te houden aan "code your comments, don't comment your code"
Wat dat betreft is Python ideaal, de manier waarop je daar loops kan opzetten is uiterst leesbaar.
(Anderzijds wel weer een nadeel op het moment dat het makkelijker is met index-based te werken.)
Op het topic van talen, moest ik aan deze denken, welke taal is het meest energy efficient (beetje om het klimaat denken): https://greenlab.di.uminh...oads/2017/09/paperSLE.pdf
Arg.. Ik dacht dat er geen List.transpose was, dus uiteindelijk maar voor een oplossing met een mutable gegaan.Rogier V schreef op vrijdag 3 december 2021 @ 09:23:
Part 2 vond ik nog best lastig. in F# heb ik een mutable moeten gebruiken om tot het antwoord te komen. Vanmiddag maar eens kijken ik het netjes kan oplossen met een fold of een recursieve functie.
https://github.com/rogier...er/AOC2021/Day03/Day03.fs
@Gilotto @Rogier V Wel interessant om te zien hoeveel compleet verschillende oplossingen je kan maken in f#.
Uiteindelijk maar 32 regels in deze kotlin file:
Meestal als ik de code werkend heb voor het voorbeeld, heb ik het ook werkend voor mijn input.
Nope, doe ik ook altijd. Ook voor de deeloplossingen. bij deel 2 had ik ook een zuurstof en kooldioxide testRemcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
[ Voor 17% gewijzigd door Janoz op 03-12-2021 15:13 ]
Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'
Nee, dat doe ik ook steeds. Eerst voeg in de input en het resultaat uit het voorbeeld toe aan een unit test, zodat ik eenvoudig de huidige code kan testen. Pas als daar een groen vinkje komt, voer ik de echte input door.Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Meestal als ik de code werkend heb voor het voorbeeld, heb ik het ook werkend voor mijn input.
De stappen om te beginnen zijn bij mij:
- De test-input aanmaken in `src/test/resources/dayX.txt`
- De test-resultaten toevoegen aan de unit test
- De eche input aanmaken in `src/kotlin/resources/dayX.txt`
[ Voor 20% gewijzigd door Marcj op 03-12-2021 15:14 ]
Ik verifieer ook eerst of het antwoord klopt voor het voorbeeld alvorens ik verder ga met de echte input.Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Siditamentis astuentis pactum.
Ik gebruik het voorbeeld in de opgave vooral om eventuele shortcuts te bedenken.Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Tot nu toe heb ik het voorbeeld nog niet gebruikt als test case. Als de puzzel omvangrijker wordt dan gaat dat wel gebeuren denk ik.
Ik doe dat in eerste instantie niet maar het heeft er wel voor gezorgd dat ik deel 2 van vandaag goed kon debuggen. Morgen begin ik netjes met de testdata.Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Meestal als ik de code werkend heb voor het voorbeeld, heb ik het ook werkend voor mijn input.
Doe ik wel altijd, maar commit het niet altijd in de repo. Wat wel zo is, dat er altijd wel een kleine aanpassing nodig is om het op de echte input te laten werken. Bijv. voor vandaag was de uiteindelijke input 12 tekens ipv de 8 uit het voorbeeld. 8 past nog wel in een uint16 in f#, maar 12 niet meer...Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Meestal als ik de code werkend heb voor het voorbeeld, heb ik het ook werkend voor mijn input.
Vorige jaren ook goed op stuk gegaan, dus ik ga dit jaar maar eens goed letten op het verschil tussen voorbeeld en daadwerkelijke input.
[ Voor 10% gewijzigd door Caelorum op 03-12-2021 15:21 ]
- 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
"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
Als ik zie dat er een verschil tussen de voorbeeld input en de daadwerkelijke input zit probeer ik vaak de code zo te schrijven dat die met beide input vormen overweg kan. Zie het als een extra uitdagingCaelorum schreef op vrijdag 3 december 2021 @ 15:20:
[...]
Doe ik wel altijd, maar commit het niet altijd in de repo. Wat wel zo is, dat er altijd wel een kleine aanpassing nodig is om het op de echte input te laten werken. Bijv. voor vandaag was de uiteindelijke input 12 tekens ipv de 8 uit het voorbeeld. 8 past nog wel in een uint16 in f#, maar 12 niet meer...
Vorige jaren ook goed op stuk gegaan, dus ik ga dit jaar maar eens goed letten op het verschil tussen voorbeeld en daadwerkelijke input.
MrMaxedTank schreef op vrijdag 3 december 2021 @ 14:28:
Deel 2 viel me toch wel even zwaar. Bleek uiteindelijk een kleine fout in de logica te zijn, wat voor het oxygen gedeelte een geloofwaardig resultaat gaf, maar bij de CO2 duidelijk niet klopte. Goede oefening om te debuggen, maar als gevolg is de code niet zo compact als ik had gehoopt (en heb ik nu even geen tijd om de oxygen en co2 functies te mergen).
***members only***
Ik heb er heel simpel een soort inline functie van gemaakt met een callable als argument.Patriot schreef op vrijdag 3 december 2021 @ 14:30:
Had toch iets meer moeite met deel 2 van vandaag. Vind mijn oplossing een beetje iffy omdat ik twee functies heb die op één teken na hetzelfde zijn, maar het werkt iig.
***members only***
Voor Patriot, ik zie dat je een paar functies hebt gemaakt met namen die bijna hetzelfde zijn als een paar builtins:
Ik heb gewoon een simpel frameworkje wat al een paar jaar meegaat, waarmee ik makkelijk de meest-voorkomende manieren van input door kan geven aan een per-instance solver en die, bij de aanwezigheid van bestanden met testin- en -uitvoer deze ook vergelijkt, alsmede het geaggregeerde totaal. Er zijn echter nog genoeg cases, zeker in de latere dagen, waarbij de testinvoer zodanig gemaakt is dat de snel gemaakte oplossing er goed op werkt en de echte invoer iets als een off-by-one ofzo triggert. Die downloadt overigens ook automatisch de volledige invoer, alleen het submitten doe ik nog niet automatischRemcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Meestal als ik de code werkend heb voor het voorbeeld, heb ik het ook werkend voor mijn input.
[ Voor 6% gewijzigd door DataGhost op 03-12-2021 15:48 ]
Ik zou dolgraag je code zien maar heb je github niet terug kunnen vinden in dit topic. Kun je me die linken (of pmen als je dat prettiger vindt)?DataGhost schreef op vrijdag 3 december 2021 @ 15:43:
[...]
[...]
Ik heb er heel simpel een soort inline functie van gemaakt met een callable als argument.spoiler:Die callable komt bij mij uit de operator module.
Voor Patriot, ik zie dat je een paar functies hebt gemaakt met namen die bijna hetzelfde zijn als een paar builtins:
Ik heb ook geen repository online waar ik mijn spul heen post, maar een snippet kan altijd gemaakt worden natuurlijk:MrMaxedTank schreef op vrijdag 3 december 2021 @ 15:49:
[...]
Ik zou dolgraag je code zien maar heb je github niet terug kunnen vinden in dit topic. Kun je me die linken (of pmen als je dat prettiger vindt)?
Heel leesbare code is het misschien niet maar het werkt
Dat doe ik ook mits er een logische check is die je kan doen. Komt soms wel voor dat het voorbeeld niet precies te controleren is zoals de opdracht gecontroleerd moet worden.Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Meestal als ik de code werkend heb voor het voorbeeld, heb ik het ook werkend voor mijn input.
Mijn AoC helper main method (https://github.com/thijsl...blob/master/aoc_helper.py) roep ik bij iedere dag aan om de puzzels op te lossen en te timen. De code begint pas met de echte input als de uitkomst van het voorbeeld gelijk is aan de waarde die ik mee geef, of als ik de voorbeeld uitkomst op None zet.
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
Doe ik ook sinds day 2, part 2.Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Heb het wel in twee files gedaan. Weet niet of dit handig is, maar 'voelt' wel fijn ofzo.
Gisteren ook toegepast op dag 7 van 2020, waar ik vorig jaar gestrand was
Me think, why waste time say lot word, when few word do trick.
Ik ook altijd. Vooral voor debuggen en refactoren werkt het ideaal. En het kost niet veel tijd ze op te zetten.Remcoder schreef op vrijdag 3 december 2021 @ 15:07:
Ben ik trouwens de enige die eerst een testcase maakt van het voorbeeld?
Meestal als ik de code werkend heb voor het voorbeeld, heb ik het ook werkend voor mijn input.
https://github.com/rogier...C2021/Day03/Day03Tests.fs
Geen moeilijke opdracht op zich, maar ik vind het wel lastig om hier een beetje goed begrijpelijke code voor te schrijven. Komt ook doordat Clojure nog erg nieuw voor me is. Ik ga nog even geen andere oplossingen bekijken en even zelf puzzelen om te kijken of ik het eenvoudiger kan maken.
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
https://github.com/martyw/AOC2021/blob/main/day3.py
[ Voor 3% gewijzigd door martyw op 03-12-2021 18:26 ]
[ Voor 13% gewijzigd door Woy op 03-12-2021 18:36 ]
“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.”