Advent of Code 2023 Vorige deel Overzicht Laatste deel

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

Pagina: 1 2 ... 11 Laatste
Acties:

Acties:
  • +22 Henk 'm!

  • ElkeBxl
  • Registratie: Oktober 2014
  • Laatst online: 16-05 11:22

ElkeBxl

Tassendraagster

Topicstarter
Wederom komt december eraan, voor de puzzel fanaten is de Advent of Code er dus weer! Van 1 tot en met 25 december zijn er elke dag 2 puzzels beschikbaar, om zo het grote raadsel van dit jaar op te lossen. De raadsels zijn zo opgezet dat ze het beste met een stuk programmatuur kunnen worden opgelost. Uiteindelijk krijg je elke dag jouw eigen unieke input, waarbij één bepaalde output hoort.

Een puzzel is gebruikelijk in een soort verhaal vorm geschreven. Een goed voorbeeld, ook om te oefenen vind je hier.

Ook in 2015, 2016, 2017, 2018, 2019, 2020, 2021 en 2022 deed de Tweakers community mee, dus ook dit jaar kunnen we weer aan de slag:
JaarLeaderboard
2015
2016
2017Leaderboard
2018Leaderboard
2019Leaderboard
2020Leaderboard
2021Leaderboard
2022Leaderboard


Je kan je aanmelden via website: https://www.adventofcode.com. Op de website is er weer een tweakers leaderboard (let op: de code is anders dan voorgaande jaren!). Meld je hier aan met code:

Members only: Leaderboard code
Alleen zichtbaar voor ingelogde gebruikers. Inloggen


Het kan zijn dat het leaderboard vol is, (max. 200), na een aantal dagen kan ik wat inactieve accounts eruit gooien, stuur mij dan een berichtje, als er weer plek is laat ik weten wanneer je het nog een keer kan proberen.

Discussie over de puzzels mag, maar probeer niets te spoilen voor de rest! (of gebruik de spoiler tag)

Dit jaar is er ook expliciet aangehaald om geen AI te gebruiken bij het oplossen van de puzzels.

Members only: Overzicht van de deelnemers, taal en hun code repo:
Alleen zichtbaar voor ingelogde gebruikers. Inloggen


Stuur ElkeBxl even een PM om ook in de lijst te komen. Stuur hierbij de link naar de repository en de taal/talen die je gebruikt.

Met dank aan Daanoz voor de organisatie van vorige jaren en waar ik schaamteloos deze topic text van geript heb dit jaar en vorig jaar. If we ever meet, trakteer ik je eens iets :9B

[ Voor 32% gewijzigd door ElkeBxl op 21-11-2024 22:52 ]

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


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:59

Creepy

Tactical Espionage Splatterer

Ik heb er weer zin in, ondanks dat ik blijkbaar na een dag of 10-12 vaak afhaak :P
Anyways, tot nu toe altijd Java gebruikt om mee te doen. Dit jaar gaan we Go eens proberen: https://github.com/CodeEngineerNL/AdventOfCode2023

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


Acties:
  • 0 Henk 'm!

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

Varienaja

Wie dit leest is gek.

Ik heb er zin in! Maar ik ben niet van plan om elke dag om 6 uur 's morgens klaar te zitten. Het slaapgebrek werd in vorige jaren een beetje al te gek.
Op het werk strooi ik AoC zoveel mogelijk. Ik heb al een stuk of 5 collega's bij elkaar en het worden er hopelijk nog wat meer.
Sinds een jaar werk ik met Cpp ipv Java. En hoewel ik nog steeds oneindig veel liever Java gebruik zal ik eens zien of ik niet ook hier en daar een opgave met Cpp ga oplossen. Of met allebei.

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 15:42

P_Tingen

omdat het KAN

Doe ook weer mee, al zijn er weinig die in mijn nichetaal meedoen (openedge ABL, aka Progress 4gl). Ik ga het waarschijnlijk weer niet volmaken, want het kost me op een gegeven moment te veel tijd, maar leuk is het wel

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


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:03

MueR

Admin Tweakers Discord

is niet lief

Ik ga het begin ook maar eens meedoen.. meestal haak ik halverwege af :P Anyway, Go dit keer.. https://github.com/MueR/adventofcode.go

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


Acties:
  • 0 Henk 'm!

  • mbe81
  • Registratie: Juni 2008
  • Laatst online: 16-06 20:48
Ook ik ga dit jaar weer eens een poging wagen. Tot nu toe heb ik de reeks nooit af weten te maken.
Ik zal dit doen met Go. Op dit moment mijn favoriete taal.

https://github.com/mbe81/advent-of-code-2023

Succes allemaal!

Acties:
  • 0 Henk 'm!

  • Daanoz
  • Registratie: Oktober 2007
  • Laatst online: 18-05 11:44
Top @ElkeBxl dat je het weer op pakt dit jaar!

Ik ga dit jaar alleen Rust gebruiken, dat gaat waarschijnlijk sommige dagen betekenen dat ik er niet uitkom, maar anders blijf ik jaar in jaar uit alleen talen gebruiken die ik toch al goed ken... Ben op dit moment bezig om al mijn AOC2022 oplossingen om te zetten van TS naar Rust om er wat meer feeling voor te krijgen, maar dat blijven lastige constructies af en toe.

https://github.com/Daanoz/AOC2023

Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Eens kijken hoeveel tijd ik dit jaar heb. Ik schat dat ik dit jaar niet mee doe voor de hogere posities, maar we zullen zien.

https://github.com/realmathack/advent-of-code

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • Camulos
  • Registratie: Januari 2009
  • Laatst online: 01-06 14:27

Camulos

Stampert

Ik doe ook weer mee dit jaar! en zal verder gaan met mijn C# oplossingen :)

https://github.com/fluttert/AdventOfCode

Not just an innocent bystander


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Ik ben ook van de partij! Ik hoop dit jaar op veel leuke opgaven met wiskundige grapjes en niet teveel optimalisatie vragen.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • Basje
  • Registratie: November 2008
  • Laatst online: 14:33
Leuk, ik doe mee! Mijn streven is 30+ sterren dit jaar (wat een nieuw PR zou zijn).

Mijn taal is C# en de code zal hier te vinden zijn: https://github.com/Basje/advent-of-code

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 17:33

Janoz

Moderator Devschuur®

!litemod

Dit jaar sla ik hem even over. Ik ga halverwege de maand op vakantie en ik denk niet dat mijn wederhelft het gaat waarderen dat ik op de vakantie achter mijn laptopje loop te knutselen..

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


Acties:
  • 0 Henk 'm!

  • MaNDaRK
  • Registratie: Oktober 2001
  • Laatst online: 16:43
Jaaaa, ik doe zeker weer mee! Python en misschien wel een deel in C# om te leren :)

https://github.com/wouter075/aoc_2023_python

Acties:
  • 0 Henk 'm!

  • Br3wmaster
  • Registratie: November 2013
  • Laatst online: 18:23
Ik ga dit jaar ook voor het eerst mee doen. Lijkt me leuk om op deze manier ook gelijk een nieuwe taal te leren. Ga het denk ik proberen in Go. Een taal die ik sowieso graag nog is wil leren

PSN: Brwmaster


Acties:
  • +2 Henk 'm!

  • jeroenheijmans
  • Registratie: Maart 2012
  • Laatst online: 07-12-2024
Had een paar jaar geleden al eens een Tweakers draadje over AoC gevolgd en het leaderboard gejoined, zie nu dat er een vers leaderboard en draadje per jaar en ook dit jaar is, nice :)

Mijn code zal op https://github.com/jeroenheijmans/advent-of-code-2023 komen maar een taal moet ik nog kiezen 🙈 - meeste jaren kies ik een verse taal, wellicht dat ik dit jaar weer terugval op JavaScript...

Dan nog wat shameless plugs voor community content die ik maak voor AoC:Veel plezier met puzzelen allemaal! 😊

Acties:
  • +6 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:27
Oh, is het alweer zover? De tijd vliegt! Om in de stemming te komen is hier alvast een probleem dat jullie morgen op kunnen lossen:


AoC dag -1
Het is kerstochtend en de kerstman heeft een aantal cadeautjes in de huiskamer achtergelaten voor jou en je tweelingbroer/-zus, netjes opgesteld in een rij. Helaas staan er geen namen op dus jullie zullen de cadeaus onderling moeten verdelen. Jullie spreken daarvoor de volgende spelregels af:
  1. Jullie nemen om de beurt een cadeautje.
  2. Wie aan de beurt is mag alleen het cadeautje uiterst links of uiterst rechts in de rij nemen (anders pakt iedereen natuurlijk steeds het grootste cadeau).
  3. Jij mag beginnen (omdat je als eerste beneden was).
Iedereen weet dat grote cadeaus beter zijn dan kleine. Je kunt de cadeaus dus omschrijven als een reeks getallen die corresponderen met de grootte van de cadeautjes. De totale waarde van de cadeaus die je kiest is dan gelijk aan de som van die getallen. Nu wil je natuurlijk de totale waarde van de cadeautjes die je krijgt maximaliseren.

Bijvoorbeeld, als er vier cadeautjes zijn met groottes:
5 9 3 4

Dan is het optimaal om eerst cadeautje 4 te pakken, daarna pakt je tweeling 5, dan jij 9, en je tweeling tenslotte 3. Dan heb jij een score van 4 + 9 = 13, en je tweeling 5 + 3 = 8.

Deel 1: de groottes van de cadeautjes in de huiskamer zijn als volgt:

1 5 5 7 9 7 5 2 8 3 5 2 8 5 8 5 4 7 3 4


Vraag: Wat is de maximale waarde die je kunt realizeren, aangenomen dat zowel jij als je tweelingbroer optimaal kiezen?

Deel 2: nadat jullie klaar zijn met cadeautjes uitpakken ontdekken jullie dat er op de gang nog veel méér cadeaus staan! Ze hebben de volgende groottes:

89 96 2 97 62 47 31 93 86 87 25 72 90 94 91 85 40 24 95 75 60 89 33 83 91 33 88 51 8 50 99 73 31 97 16 91 64 96 1 37 9 58 91 24 34 34 41 31 31 8 73 20 51 46 5 25 91 21 7 70 22 47 36 41 95 20 50 91 71 1 2 80 6 11 79 88 84 17 36 73 42 19 49 29 10 47 45 99 69 87 8 10 48 19 47 60 82 94 64 12


Zelfde vraag als hierboven. DM me je antwoord(en).


Leaderboard
  1. @MrHaas
(Volgende probleem: Dag 0)

[ Voor 3% gewijzigd door Soultaker op 30-11-2023 16:47 . Reden: Leaderboard toegevoegd ]


Acties:
  • 0 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 13-06 21:17
Mooie opwarmer, @Soultaker, zou zomaar een echte AoC puzzel kunnen zijn!
spoiler:
Heb het opgelost met dynamic programming, ben benieuwd of er andere takes zijn.

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
@Soultaker ik ben wat aan het prutsen in R... deel 1 komt ik nog wel uit met brute forcen (alle mogeliike permutaties van beurtelings pakken van Links of Rechts), maar deel 2 gaat bij mij over de 2^31-1 mogelijkheden heen :+
dat moet optimaler kunnen... ben wel benieuwd hoe :) Kom je voor de start van de echte AoC met het antwoord?

Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
@Soultaker
Vraag: Wat is de maximale waarde die je kunt realizeren, aangenomen dat zowel jij als je tweelingbroer optimaal kiezen?
Wat is de definitie van "optimaal kiezen"?

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
eheijnen schreef op woensdag 29 november 2023 @ 12:28:
@Soultaker

[...]

Wat is de definitie van "optimaal kiezen"?
Heb ik geïnterpreteerd als “beiden een zo hoog mogelijke score”.
edit: waarbij "ik" de hoogste score heb

[ Voor 7% gewijzigd door breew op 29-11-2023 13:40 ]


Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
breew schreef op woensdag 29 november 2023 @ 13:03:
[...]

Heb ik geïnterpreteerd als “beiden een zo hoog mogelijke score”.
Dat is één optie :+ ....

Maar daar moet je dan toch wel een extreem goed brein voor bezitten...

[ Voor 14% gewijzigd door eheijnen op 29-11-2023 13:24 ]

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

  • bakkerjangert
  • Registratie: Februari 2012
  • Laatst online: 13-06 16:19
eheijnen schreef op woensdag 29 november 2023 @ 13:23:
[...]

Dat is één optie :+ ....

Maar daar moet je dan toch wel een extreem goed brein voor bezitten...
Dat had ik ook bedacht, maar...

spoiler:
dan klopt het voorbeeld antwoord niet; dan zou het (5 + 4) = 9 en (9 + 3) = 12 moeten zijn met een delta van 3 ipv 5. Ik neig naar deze optie, maar dan dat ik als beginner altijd 'win', dan klopt het gegeven voorbeeld wel.

Acties:
  • +1 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 13-06 21:17
bakkerjangert schreef op woensdag 29 november 2023 @ 13:36:
[...]


Dat had ik ook bedacht, maar...

spoiler:
dan klopt het voorbeeld antwoord niet; dan zou het (5 + 4) = 9 en (9 + 3) = 12 moeten zijn met een delta van 3 ipv 5. Ik neig naar deze optie, maar dan dat ik als beginner altijd 'win', dan klopt het gegeven voorbeeld wel.
spoiler:
Dan heb je toch niet de juiste gekozen, want je had 13 kunnen hebben ook als je tegenstander optimaal speelt.

Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:27
breew schreef op woensdag 29 november 2023 @ 11:16:
dat moet optimaler kunnen... ben wel benieuwd hoe :) Kom je voor de start van de echte AoC met het antwoord?
Zal ik doen!
eheijnen schreef op woensdag 29 november 2023 @ 12:28:
@Soultaker
Wat is de definitie van "optimaal kiezen"?
Beide partijen proberen elk hun éigen score te maximaliseren, onder de aanname dat de ander hetzelfde doet. Je kunt het ook zo formuleren: wat is de minimale score die je kunt realiseren ongeacht wat de ander doet?

Neem bijvoorbeeld nog eens de voorbeeldinvoer: 5 9 3 4.

De maximale som is 5 + 9 = 14. Maar die is niet haalbaar: als jij begint met cadeautje 5, dan pakt je tweeling cadeautje 9, niet 4, want hij wil zélf zo'n hoog mogelijke score hebben. Dan kun jij dus hooguit cadeautje 4 pakken voor een totale score van 5 + 4 = 9.

De maximaal haalbare som is 4 + 9 = 13, want als je begint met cadeautje 4, dan kan, ongeacht welk cadeautje de ander neemt, jij daarna cadeautje 9 pakken. Daarom is 13 het juiste antwoord.

Acties:
  • +6 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:27
Een tweede (en laatste) pre-AoC-probleem (tenslotte is er nog 1 dag te gaan), voor wie er zin in heeft. Wederom kun je mij DM'en met de oplossing om op het leaderbord te komen.

(Vorige probleem: Dag -1)


AoC dag 0
Kerstmis komt er aan, en je wil je huis gaan versieren met slingers. Een slinger bestaat uit verschillende kleuren die altijd in een vaste volgorde voorkomen. Voor dit probleem gebruiken we letters om de kleuren te representeren, en definiëren een slinger als een string van lengte 1 of meer, bestaande uit kleine letters in alfabetische volgorde.

Bijvoorbeeld: "abcde", "s", en "xyz" zijn slingers, maar "ace" of "aba" zijn geen slingers.

Een doos met slingers kun je representeren als een tekstbestand met regels van gelijke lengte. Bijvoorbeeld, de volgende doos van 4x5:

abhij
gcgfe
fdekh
edcji


Bevat 4 slingers:

  ab...    .....    ..hij   .....
  .c...    g....    ..gfe   .....
  .de..    f....    .....   ...kh
  .....    edc..    .....   ...ji

 "abcde"  "cdefg"  "efghij" "hijk"


Delen van slingers moeten horizontaal of verticaal aan elkaar grenzen (en dus niet diagonaal!)


Deel 1
Je hebt een doos met slingers van zolder gehaald. Die is wat groter dan het voorbeeld hierboven. De inhoud staat hier: slingers.txt

Vraag 1: Hoeveel slingers bevat die doos?

Je mag er vanuit gaan dat er een unieke indeling in slingers te vinden is. Bijvoorbeeld, de substring "abcb" komt niet voor, want die kan ambigu geïnterpreteerd worden als "abc" en "b", of "ab" en "bc" (van rechts naar links) waardoor het niet duidelijk zou zijn bij welke slinger de 'c' hoort.


Deel 2
Om je huis te versieren heb je eigenlijk alleen slingers van lengte 7 nodig. Hoewel er een aantal slingers van lengte 7 in de doos zitten, zijn het er niet genoeg om echt in de kerstsfeer te komen.

Gelukkig heb je een schaar en een pot lijm, dus kun je slingers in stukken knippen en de stukken weer aan elkaar plakken, om meer slingers van lengte 7 te construeren.

Bijvoorbeeld, van de 4 slingers uit de voorbeeldinvoer ("abcde", "cdefg", "efghij", "hijk") kun je 2 slingers van lengte 7 maken:
  1. Splits "cdefg" in "cde" en "fg". Combineer "abcde" + "fg = "abcdefg".
  2. Splits "efghij" in "efg" en "hij". Combineer "efg" + "hijk" = "efghijk".
Vraag 2: Hoeveel slingers van lengte 7 kun je maken met de slingers die je bij deel 1 gevonden hebt?


Leaderboard
Deel 1
  1. @Varienaja
  2. @bakkerjangert
  3. @breew
  4. @KabouterSuper
Deel 2
  1. @bakkerjangert
  2. @KabouterSuper

[ Voor 13% gewijzigd door Soultaker op 30-11-2023 16:47 . Reden: Leaderboard geüpdatet ]


Acties:
  • +1 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 15:42

P_Tingen

omdat het KAN

Pff, gelukkig zijn de eerste AoC opgaven wat simpeler om er "in" te komen.....

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


  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Soultaker schreef op donderdag 30 november 2023 @ 00:12:
Een tweede (en laatste) pre-AoC-probleem (tenslotte is er nog 1 dag te gaan), voor wie er zin in heeft. Wederom kun je mij DM'en met de oplossing om op het leaderbord te komen.



Kerstmis komt er aan, en je wil je huis gaan versieren met slingers. Een slinger bestaat uit verschillende kleuren die altijd in een vaste volgorde voorkomen. Voor dit probleem gebruiken we letters om de kleuren te representeren, en definiëren een slinger als een string van lengte 1 of meer, bestaande uit kleine letters in alfabetische volgorde.

Bijvoorbeeld: "abcde", "s", en "xyz" zijn slingers, maar "ace" of "aba" zijn geen slingers.

Een doos met slingers kun je representeren als een tekstbestand met regels van gelijke lengte. Bijvoorbeeld, de volgende doos van 4x5:

abhij
gcgfe
fdekh
edcji


Bevat 4 slingers:

  ab...    .....    ..hij   .....
  .c...    g....    ..gfe   .....
  .de..    f....    .....   ...kh
  .....    edc..    .....   ...ji

 "abcde"  "cdefg"  "efghij" "hijk"


Delen van slingers moeten horizontaal of verticaal aan elkaar grenzen (en dus niet diagonaal!)


Deel 1
Je hebt een doos met slingers van zolder gehaald. Die is wat groter dan het voorbeeld hierboven. De inhoud staat hier: slingers.txt

Vraag 1: Hoeveel slingers bevat die doos?

Je mag er vanuit gaan dat er een unieke indeling in slingers te vinden is. Bijvoorbeeld, de substring "abcb" komt niet voor, want die kan ambigu geïnterpreteerd worden als "abc" en "b", of "ab" en "bc" (van rechts naar links) waardoor het niet duidelijk zou zijn bij welke slinger de 'c' hoort.


Deel 2
Om je huis te versieren heb je eigenlijk alleen slingers van lengte 7 nodig. Hoewel er een aantal slingers van lengte 7 in de doos zitten, zijn het er niet genoeg om echt in de kerstsfeer te komen.

Gelukkig heb je een schaar en een pot lijm, dus kun je slingers in stukken knippen en de stukken weer aan elkaar plakken, om meer slingers van lengte 7 te construeren.

Bijvoorbeeld, van de 4 slingers uit de voorbeeldinvoer ("abcde", "cdefg", "efghij", "hijk") kun je 2 slingers van lengte 7 maken:
  1. Splits "cdefg" in "cde" en "fg". Combineer "abcde" + "fg = "abcdefg".
  2. Splits "efghij" in "efg" en "hij". Combineer "efg" + "hijk" = "efghijk".
Vraag 2: Hoeveel slingers van lengte 7 kun je maken met de slingers die je bij deel 1 gevonden hebt?


Leaderboard
Nog niemand.
Twee vraagjes:
* mag ik aannemen dat de slingers opeenvolgend alfabetisch geordend zijn? abyz is ook alfabetisch geordend.
* in je voorbeeld zie ik 20 slingers van lengte 1. Wat is de extra eis dat ervoor zorgt dat dit niet als oplossing telt?

When life gives you lemons, start a battery factory


Acties:
  • +1 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 13-06 21:17
KabouterSuper schreef op donderdag 30 november 2023 @ 08:36:
[...]

Twee vraagjes:
* mag ik aannemen dat de slingers opeenvolgend alfabetisch geordend zijn? abyz is ook alfabetisch geordend.
* in je voorbeeld zie ik 20 slingers van lengte 1. Wat is de extra eis dat ervoor zorgt dat dit niet als oplossing telt?
1:
Bijvoorbeeld: "abcde", "s", en "xyz" zijn slingers, maar "ace" of "aba" zijn geen slingers.
2: ben ik ook benieuwd naar :)

  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
MrHaas schreef op donderdag 30 november 2023 @ 08:38:
[...]


1:
[...]


2: ben ik ook benieuwd naar :)
ik ga er vanuit dat de slingers altijd een maximale lengte hebben.

  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
deel 1 met de slingers: hebbes (hoop/denk ik).
Slingers mogen ook lengte 1 hebben, en dan kom ik op
spoiler:
7682
slingers in de doos... Iemand hetzelfde antwoord?

Acties:
  • +1 Henk 'm!

  • bakkerjangert
  • Registratie: Februari 2012
  • Laatst online: 13-06 16:19
breew schreef op donderdag 30 november 2023 @ 10:52:
deel 1 met de slingers: hebbes (hoop/denk ik).
Slingers mogen ook lengte 1 hebben, en dan kom ik op
spoiler:
7682
slingers in de doos... Iemand hetzelfde antwoord?
Ja, daar kom ik ook op uit :*) . Nog even in afwachting of het het juiste antwoord is.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:27
KabouterSuper schreef op donderdag 30 november 2023 @ 08:36:
Twee vraagjes:
* mag ik aannemen dat de slingers opeenvolgend alfabetisch geordend zijn? abyz is ook alfabetisch geordend.
Ja, dat staat zo ook in de vraag (en als het niet zo was zou het voorbeeld op z'n minst ambigu zijn).
* in je voorbeeld zie ik 20 slingers van lengte 1. Wat is de extra eis dat ervoor zorgt dat dit niet als oplossing telt?
Het idee is om slingers van maximale lengte te tellen. Als er bijvoorbeeld een 'a' en een 'b' naast elkaar staan, dan zitten die delen aan elkaar vast, en zijn dus onderdeel van dezelfde slinger. Op die manier kom je op 4 slingers in de voorbeeldinvoer.

Misschien is het zo iets duidelijker:
a--b  h--i--j
   |  |
g  c  g--f--e
|  |
f  d--e  k  h
|        |  |
e--d--c  j--i

[ Voor 8% gewijzigd door Soultaker op 30-11-2023 16:41 ]


Acties:
  • +1 Henk 'm!

  • Remcoder
  • Registratie: November 2004
  • Laatst online: 10-06 15:08
Hoeveel mensen hier hebben eigenlijk alle puzzels opgelost?

Het is mij begin dit jaar gelukt om alle puzzels opgelost te krijgen. Dit jaar is het doel om op 25 december op 450 sterren te staan. :)

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
Remcoder schreef op donderdag 30 november 2023 @ 17:08:
Hoeveel mensen hier hebben eigenlijk alle puzzels opgelost?
Ik denk de top 25 van de tweakers-leadership wel. Ik ook trouwens, hoewel ik een paar jaar achteraf heb gedaan.

When life gives you lemons, start a battery factory


Acties:
  • +1 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
Mij niet. Ik probeer alles altijd in R te doen. Maar dat is voor sommige typen problemen eigenlijk helemaal niet handig…

Meestal krijg ik het vanaf dag 10 erg lastig 😅

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 13-06 21:17
@Soultaker, wat betreft deel 2: mag je elke slinger opknippen in zoveel stukjes als je wilt en die stukjes gebruiken waar je maar wilt? En: mag je slingers van 7 lang ook opknippen?

Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:27
Remcoder schreef op donderdag 30 november 2023 @ 17:08:
Hoeveel mensen hier hebben eigenlijk alle puzzels opgelost?
Ik heb alles opgelost sinds 2015 (zie GitHub) maar ik heb niet alle sterretjes op de site omdat ik het eerste jaar onder een ander account gewerkt had (geen idee welke). Ik weet niet of dat verder ergens voor uitmaakt.
MrHaas schreef op donderdag 30 november 2023 @ 19:31:
@Soultaker, wat betreft deel 2: mag je elke slinger opknippen in zoveel stukjes als je wilt en die stukjes gebruiken waar je maar wilt? En: mag je slingers van 7 lang ook opknippen?
Ja en ja.

Acties:
  • +1 Henk 'm!

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

Varienaja

Wie dit leest is gek.

Remcoder schreef op donderdag 30 november 2023 @ 17:08:
Hoeveel mensen hier hebben eigenlijk alle puzzels opgelost?

Het is mij begin dit jaar gelukt om alle puzzels opgelost te krijgen. Dit jaar is het doel om op 25 december op 450 sterren te staan. :)
Ik heb vorige week dag 25 van 2019 opgelost. Dat was de laatste die ik nog open had staan.

Siditamentis astuentis pactum.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Ik ga dit jaar ook weer proberen wat op te lossen. Maar met een pasgeboren baby den ik dat ik niet veel verder dan de eerste paar dagen ga komen.

“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.”


  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
Woy schreef op donderdag 30 november 2023 @ 20:57:
Ik ga dit jaar ook weer proberen wat op te lossen. Maar met een pasgeboren baby den ik dat ik niet veel verder dan de eerste paar dagen ga komen.
wel makkelijker om om 06u klaar te zitten :)

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
breew schreef op donderdag 30 november 2023 @ 21:01:
[...]

wel makkelijker om om 06u klaar te zitten :)
Haha, mijn beste jaar was toen ik in quarantaine zat.

When life gives you lemons, start a battery factory


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik ga er dit jaar denk ik wel een paar in Rust doen :)
Woy schreef op donderdag 30 november 2023 @ 20:57:
Ik ga dit jaar ook weer proberen wat op te lossen. Maar met een pasgeboren baby den ik dat ik niet veel verder dan de eerste paar dagen ga komen.
Haha, dapper. Niet vreemd opkijken dus als jij om 4:30 maar eens achter je computer kruipt omdat je toch al wakker bent :Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:27
Aangezien het bijna tijd is voor de echte AoC, plaats ik hier de oplossingen van mijn pre-AoC uitdagingen. (Niet lezen als je ze nog zelf wil oplossen!)


Probleem -1 (cadeautjes verdelen)
spoiler:
Het is duidelijk dat elk cadeautje bij de ene of de andere persoon eindigt, dus de som van de twee scores is uiteindelijk altijd gelijk aan de som van de getallen in de invoer. Je eigen score maximaliseren is dus hetzelfde als het minimaliseren van de score van je tegenstander.

Je kunt de oplossing dus simpelweg recursief berekenen, waarbij speler 1 steeds probeert zijn score te maximaliseren, en speler 2 dezelfde score (van speler 1) probeert te minimaliseren. Aangezien je alleen cadeautjes aan het begin en einde kunt nemen, kun je een subprobleem representeren met twee integers: de indices van het eerste en het laatste cadeautje dat nog over is.


Oplossing in Python

spoiler:
Voor wie niet bekend is met Python: de @cache decorator zorgt ervoor dat de resultaten van de functies voor elk paar argumenten gecached worden. Zonder die optimalisatie draait het algorithm in O(2N) tijd (waarbij N het aantal elementen in de invoer is), aangezien je steeds tussen 2 opties kiest. Dat is snel genoeg voor de kleine invoer (N=20) maar niet de grote (N=100). Mét die optimalisatie wordt het O(N2) tijd en geheugen (er zijn exact N×(N + 1)/2 paren (i, j) zo dat 0 ≤ i ≤ j < N).


De oplossing van MrHaas in Python is ook erg netjes en duidelijk, maar die loopt in O(N3) in plaats van O(N2), wat voor N=100 ook nog snel genoeg is.



Probleem 0 (slingers)
Dit probleem is eenvoudiger dan het in eerste opzicht lijkt! Je kunt eerst alle slingers identificeren, maar eigenlijk is dat niet eens nodig.

Voor deel 1
spoiler:
hoef je alleen beginnetjes van slingers te tellen. Een 'a' is altijd een begin. Een 'b' is een begin, tenzij er een 'a' naast staat. Een 'c' is een begin, tenzij er een 'b' naast staat. Enzovoorts. (Equivalent kun je ook eindes tellen.) Op die manier hoef je dus maar één keer door het grid te lopen en de (maximaal) 4 buren te bekijken om te concluderen of een letter een begin is of niet.


Voor deel 2
spoiler:
kun je eerst alle slingers opknippen in stukjes van 1 lang; immers kun je ze altijd weer aan elkaar plakken als het nodig is. Maar dat betekent ook dat je de slingers in deel 1 helemaal niet hoeft te identificeren: je kunt simpelweg alle letters in de invoer als losse slingers van lengte 1 beschouwen! Je hoeft dus alleen te tellen hoe vaak elke letter voorkomt.

Nu kun je slingers maken: eerst maak je zoveel slingers "abcdefg" als je kan (dat wil zeggen: zolang je nog a's, b'c, .. én g's over hebt). Daarna zoveel mogelijk slingers "bcdefgh". Enzovoorts.

Dit is een greedy algoritme. Om in te zien dat het correct is, kun je terugredeneren vanuit een optimale oplossing: stel dat je een slinger "bcdefgh" hebt gemaakt en je hebt óók nog een letter 'a' over. Dan kun je die net zo goed veranderen in "abcdefg" (en nu de 'h' overhouden), wat het aantal slingers niet verandert. Het is daarom nooit verkeerd om een slinger met een zo klein mogelijke beginletter te maken.


Oplossing in Python

Acties:
  • 0 Henk 'm!

  • MadEgg
  • Registratie: Februari 2002
  • Laatst online: 14:47

MadEgg

Tux is lievvv

Soultaker schreef op vrijdag 1 december 2023 @ 01:16:
Aangezien het bijna tijd is voor de echte AoC, plaats ik hier de oplossingen van mijn pre-AoC uitdagingen. (Niet lezen als je ze nog zelf wil oplossen!)


Probleem -1 (cadeautjes verdelen)
spoiler:
Het is duidelijk dat elk cadeautje bij de ene of de andere persoon eindigt, dus de som van de twee scores is uiteindelijk altijd gelijk aan de som van de getallen in de invoer. Je eigen score maximaliseren is dus hetzelfde als het minimaliseren van de score van je tegenstander.

Je kunt de oplossing dus simpelweg recursief berekenen, waarbij speler 1 steeds probeert zijn score te maximaliseren, en speler 2 dezelfde score (van speler 1) probeert te minimaliseren. Aangezien je alleen cadeautjes aan het begin en einde kunt nemen, kun je een subprobleem representeren met twee integers: de indices van het eerste en het laatste cadeautje dat nog over is.


Oplossing in Python

spoiler:
Voor wie niet bekend is met Python: de @cache decorator zorgt ervoor dat de resultaten van de functies voor elk paar argumenten gecached worden. Zonder die optimalisatie draait het algorithm in O(2N) tijd (waarbij N het aantal elementen in de invoer is), aangezien je steeds tussen 2 opties kiest. Dat is snel genoeg voor de kleine invoer (N=20) maar niet de grote (N=100). Mét die optimalisatie wordt het O(N2) tijd en geheugen (er zijn exact N×(N + 1)/2 paren (i, j) zo dat 0 ≤ i ≤ j < N).


De oplossing van MrHaas in Python is ook erg netjes en duidelijk, maar die loopt in O(N3) in plaats van O(N2), wat voor N=100 ook nog snel genoeg is.
spoiler:
Oef, caching. Da's valsspelen >:)

Ik had 'm in Kotlin gedaan, met een 15-step look ahead. Niet gegarandeerd optimaal maar ik krijg wel dezelfde antwoorden, na iets van 20 seconde. Net de Python-referentie-uitwerking maar even in Kotlin geimplementeerd inclusief caching en dat is wel sneller.

Tja


Acties:
  • +1 Henk 'm!

  • MrHaas
  • Registratie: Maart 2009
  • Laatst online: 13-06 21:17
spoiler:
note to future self: `re.findall` matcht (terecht) alleen de eerste in een overlap |:(, dus bv 'eightwo' yield alleen 'eight'

Acties:
  • 0 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Part 2 van vandaag heeft meer moeite gekost dan het zou moeten :X

spoiler:
Zat veels te moeilijk te doen door alle voorkomens te vervangen, in eerste instantie op volgorde van de nummer-teksten (dus replace "one" met 1, etc.) en later nog hetzelfde maar dan gelezen van links naar rechts door de string. Maar bij beide oplossingen vervang je dan uiteindelijk delen van nummer dat je eigenlijk moet hebben (voornamelijk aan het einde van de regel).

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • FCA
  • Registratie: April 2000
  • Laatst online: 16:42

FCA

Best tevreden, voor het eerst bij de 1e 1000 :D
spoiler:
Ik dacht eerst veel te moeilijk voor deel2 doordat het voorbeeld "sixteen" bevatte (maar daarvan is de laatste digit, ingeacht hoe je de opgave leest) natuurlijk altijd 6. Toen ik eerst t/m 26 had zitten schrijven bedacht ik daarna even de input.txt eens te bekijken tot waar ik eigenlijk moest gaan schrijven, en besefte ik dat je alleen enkele cijfers kon krijgen :F

Verandert z'n sig te weinig.


Acties:
  • 0 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
MatHack schreef op vrijdag 1 december 2023 @ 07:46:
Part 2 van vandaag heeft meer moeite gekost dan het zou moeten :X

spoiler:
Zat veels te moeilijk te doen door alle voorkomens te vervangen, in eerste instantie op volgorde van de nummer-teksten (dus replace "one" met 1, etc.) en later nog hetzelfde maar dan gelezen van links naar rechts door de string. Maar bij beide oplossingen vervang je dan uiteindelijk delen van nummer dat je eigenlijk moet hebben (voornamelijk aan het einde van de regel).
spoiler:
Die aanpak heb ik ook gekozen, maar dan wat slimmer.Je moet inderdaad voorkomen dat eightwo eigh2 wordt.

When life gives you lemons, start a battery factory


Acties:
  • +1 Henk 'm!

  • ZieglerNichols
  • Registratie: Mei 2015
  • Niet online
spoiler:
Probeerde net als anderen ook eerst de naive find/replace, maar dat ging dus niet goed. 'one' --> 'o1e' en 'two' --> 't2o' gaat wel prima. Hoeft ook niet bij alle cijfers, alleen als er overlap mogelijk is.

Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 15:42

P_Tingen

omdat het KAN

spoiler:
Ik ging de mist in bij string "2dpzvd39eightwohjc". Hierbij ging ik eerst van links naar rechts door de string om uitgeschreven woorden te vervangen maar dat resulteerde dus in 2dpzvd398wohjc omdat ik er geen rekening mee hield dat er ook nog een gewoon getal in de string kon staan. Duurde even voor ik daar achter was omdat het met de testinvoer wel goed ging

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


Acties:
  • 0 Henk 'm!

  • eheijnen
  • Registratie: Juli 2008
  • Niet online
spoiler:
Als je door de string loopt (van links of rechts) kun je steeds de "single digit" eerst testen en als dat niets oplevert, neem je de substring icm. de loop index die weer op "zero" ... "nine" getest kan worden.
Zodra er een gevonden is ben je klaar.

Wie du mir, so ich dir.


Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 16-06 05:41

TrailBlazer

Karnemelk FTW

spoiler:
ik heb bekijk van alle mogelijke values 1 2 3 .. seven, eight nine de index in de string en als dat de laagste is dan is dat de linker value. Trucje nog een keer maar dan de regel en de zoekvalue reversed voor de rechter value.

wel gemeen dat de 2e waarde maar 1 verschilde van mijn 1e oplossing

Acties:
  • 0 Henk 'm!

  • Diderikdm
  • Registratie: December 2020
  • Laatst online: 04-01-2024
Hi, leuk dat het weer is begonnen! Doe ook weer mee :)

Python

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 16-06 05:41

TrailBlazer

Karnemelk FTW

Diderikdm schreef op vrijdag 1 december 2023 @ 09:53:
Hi, leuk dat het weer is begonnen! Doe ook weer mee :)

Python
spoiler:
Waarom beschouw je de digits ook niet als string bij het zoeken?

Acties:
  • 0 Henk 'm!

  • Diderikdm
  • Registratie: December 2020
  • Laatst online: 04-01-2024
TrailBlazer schreef op vrijdag 1 december 2023 @ 10:07:
[...]

spoiler:
Waarom beschouw je de digits ook niet als string bij het zoeken?
spoiler:
Goed punt, had de isdigit() al in part 1 en heb p2 er gewoon bij gezet, zou ook werken om de digits als string te beschouwen idd

Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 15:42

P_Tingen

omdat het KAN

Voor wie het leuk vindt een oplossing in een (totaal) andere taal te bekijken, hier de oplossing in Progress 4GL

https://github.com/patric...ter/2023/Day-01/day-01b.p

Ik heb /iets/ meer regels code nodig om hetzelfde te bereiken.....

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


Acties:
  • 0 Henk 'm!

  • gedonie
  • Registratie: Januari 2011
  • Laatst online: 22-02 13:30
Ik ben dit jaar ook maar weer begonnen, wel saai ouderwets in Java.

Dit is in ieder geval mijn prutsel voor dag 1: https://github.com/gjong/...advent2023/days/Day1.java

Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
zo.. deel twee kostte me veel meer tijd dan nodig...
spoiler:
het duurde even voordat ik doorhad dat je, als je van rechts naar links door een string loopt, je de gezochte string ook moet omkeren 8)7 |:(

Hier mijn struggles in R van dag 1...
https://github.com/wimpel...e2023/blob/main/r/day01.R

[ Voor 3% gewijzigd door breew op 01-12-2023 10:53 ]


Acties:
  • 0 Henk 'm!

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

Dag 1 opgelost met een good old regex in javascript:

https://github.com/rsids/...blob/main/day1-part-2.mjs

Raar... Is zo gek nog niet


Acties:
  • +1 Henk 'm!

  • Beneveerg
  • Registratie: Augustus 2011
  • Laatst online: 10:04
Vorig jaar afgehaakt toen ik het niet meer snapte. Dit jaar weer een poging wagen in Python

Het leven is te kort om te testen


Acties:
  • 0 Henk 'm!

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

spoiler:
Eerst maar de simpele approach gedaan, zoeken van voor naar achter en vice versa tot ik een getal tegen kom en dan stoppen.
Daarna nog even nagedacht hoe het makkelijker kwam en ik kwam uit op een regex met lookahead om alle overlappende matches te pakken.
Daarna nog een one liner voor beiden gemaakt, want AoC :+
Alle versies staan in de code

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:03

MueR

Admin Tweakers Discord

is niet lief

Dag 1 in Go
Ben voor deel 2 voor de simpele oplossing gegaan. Runt nog steeds in ~700µs dus zal wel :P

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


Acties:
  • 0 Henk 'm!

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

Varienaja

Wie dit leest is gek.

Dag 1 in Java

Ik liep er ook even tegenaan dat indexOf(String) niet hetzelfde doet als indexOf(String, offset)

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

Ik doe dit jaar ook weer mee :D Wel wat minder gungho dan vorige jaren, omdat ik het even niet kan leien om zo vroeg op te staan.
MueR schreef op vrijdag 1 december 2023 @ 12:16:
Dag 1 in Go
Ben voor deel 2 voor de simpele oplossing gegaan. Runt nog steeds in ~700µs dus zal wel :P
spoiler:
Loop je er hier niet mee tegen aan dat de volgorde van het replacen een verschil veroorzaakt?

[ Voor 14% gewijzigd door Gropah op 01-12-2023 13:19 ]


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:59

Creepy

Tactical Espionage Splatterer

Ik probeer denk ik een te mooie oplossing voor deel 2 te maken, ergens gaat nog iets mis maar ik weet nog niet wat :P Test voorbeeld klopt wel, maar de echte input nog niet... straks eens verder.

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


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:03

MueR

Admin Tweakers Discord

is niet lief

Gropah schreef op vrijdag 1 december 2023 @ 12:42:
Ik doe dit jaar ook weer mee :D Wel wat minder gungho dan vorige jaren, omdat ik het even niet kan leien om zo vroeg op te staan.


[...]


spoiler:
Loop je er hier niet mee tegen aan dat de volgorde van het replacen een verschil veroorzaakt?
spoiler:
Met een andere input misschien, mijn input werkte iig actually no, de strings.Replacer() doet geen double takes. Zie deze go playground link

[ Voor 14% gewijzigd door MueR op 01-12-2023 13:29 ]

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


Acties:
  • +3 Henk 'm!

  • MatHack
  • Registratie: Oktober 2001
  • Niet online

MatHack

Dev by day, Gamer by night

Creepy schreef op vrijdag 1 december 2023 @ 12:44:
Ik probeer denk ik een te mooie oplossing voor deel 2 te maken, ergens gaat nog iets mis maar ik weet nog niet wat :P Test voorbeeld klopt wel, maar de echte input nog niet... straks eens verder.
Dat had ik in eerste instantie ook, en dat komt omdat er een bepaalde case niet in de testdata zit, maar wel in de echte data. Dus dat zul je toch echt zelf even moeten uitvinden/beredeneren :)

There's no place like 127.0.0.1


Acties:
  • 0 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

MueR schreef op vrijdag 1 december 2023 @ 13:24:
[...]

spoiler:
Met een andere input misschien, mijn input werkte iig actually no, de strings.Replacer() doet geen double takes. Zie deze go playground link
spoiler:
Ik zit meer aan een geval zoals "eighthree" te denken.

Als je hier in gaat verwisselen, en eerst de three door 3 word verwisseld, krijg je een string waarin de 8 niet meer gevonden word. Dus verwacht ik dan ook een andere uitkomst?

Acties:
  • 0 Henk 'm!

  • Remcoder
  • Registratie: November 2004
  • Laatst online: 10-06 15:08
spoiler:
Zucht, ik had de case oneight gemist, en de regex vond dus vrolijk de one, en daarna niet meer de eight... |:(

Gelukkig kun je bij matcher.find() in Java ook een index meegeven waar die moet beginnen met zoeken, en matcher.start() geeft aan waar de matcher nu is.

Ik hoefde dus niet from scratch te beginnen weer om het werkend te krijgen.

Verder gelijk begonnen met switch expressions.

Hier is de Java code te bekijken. :)

Acties:
  • 0 Henk 'm!

  • Litpho
  • Registratie: Juni 2003
  • Laatst online: 14-12-2024
Dit is de eerste keer dat een consuming parser in Advent of Code me de das omdoet.

Acties:
  • +1 Henk 'm!

  • MaNDaRK
  • Registratie: Oktober 2001
  • Laatst online: 16:43
MatHack schreef op vrijdag 1 december 2023 @ 13:31:
[...]


Dat had ik in eerste instantie ook, en dat komt omdat er een bepaalde case niet in de testdata zit, maar wel in de echte data. Dus dat zul je toch echt zelf even moeten uitvinden/beredeneren :)
Tja, hier ook :)

Nu wel de oplossing. Aannames zijn een bitch :o

Acties:
  • 0 Henk 'm!

  • bakkerjangert
  • Registratie: Februari 2012
  • Laatst online: 13-06 16:19
Leuke opgave vandaag. Al was het wel al iets ingewikkelder dan de gemiddelde 'inkomer' op dag 1. Wat zal dit voor de volgende dagen inhouden?

spoiler:
Ik lees hier dat veel mensen de nummers vervangen voor deel 2 waarbij het bij overlappende woorden soms mis gaat. Daar had ik gelukkig geen last van, ik hou een dict met indexes bij en pik daarna de minimale en maximale waarde eruit.

Code in python.

Acties:
  • 0 Henk 'm!

  • Glewellyn
  • Registratie: Januari 2001
  • Laatst online: 16-06 09:37

Glewellyn

is er ook weer.

bakkerjangert schreef op vrijdag 1 december 2023 @ 14:00:
Leuke opgave vandaag. Al was het wel al iets ingewikkelder dan de gemiddelde 'inkomer' op dag 1. Wat zal dit voor de volgende dagen inhouden?
Dat viel mij ook op. Ik ben geen programmeur, maar doe voor de lol mee vanaf 2021 en haakte steeds af rond dag 10, met name omdat het me met de extra complexiteit te veel tijd kost.
De afgelopen twee jaar was de eerste opdracht recht-toe-recht-aan, maar deze had al een kleine twist. Eens kijken hoe lang ik het dit jaar volhoud.

*zucht*


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:03

MueR

Admin Tweakers Discord

is niet lief

Gropah schreef op vrijdag 1 december 2023 @ 13:52:
[...]


spoiler:
Ik zit meer aan een geval zoals "eighthree" te denken.

Als je hier in gaat verwisselen, en eerst de three door 3 word verwisseld, krijg je een string waarin de 8 niet meer gevonden word. Dus verwacht ik dan ook een andere uitkomst?
spoiler:
Nee, zo werkt die Replacer dus niet :) Die gaat van links naar rechts in de source voor z'n replacements en laat wat al gereplaced is met rust.

[ Voor 9% gewijzigd door MueR op 01-12-2023 14:24 ]

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


Acties:
  • 0 Henk 'm!

  • Gropah
  • Registratie: December 2007
  • Niet online

Gropah

Admin Softe Goederen

Oompa-Loompa 💩

MueR schreef op vrijdag 1 december 2023 @ 14:22:
[...]

spoiler:
Nee, zo werkt die Replacer dus niet :) Die gaat van links naar rechts in de source voor z'n replacements en laat wat al gereplaced is met rust.
spoiler:
Van links naar rechts geeft toch problemen als het cijfer aan de staart moet bepalen? Zoals bij deze: https://go.dev/play/p/jd4mmYk7lE6

Overigens vind ik het heel interessant dat iedereen met stringreplaces en regexes zit te werken. Java/kotlin kent indexOf en lastIndexOf waarmee dit gedoe in zn geheel voorkomen word. Is het performant? Nee, het kan vast sneller. Maar vind het snel zat en lijkt voor mij meer idiomatic dan rommelen in de source string

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:59

Creepy

Tactical Espionage Splatterer

MatHack schreef op vrijdag 1 december 2023 @ 13:31:
[...]


Dat had ik in eerste instantie ook, en dat komt omdat er een bepaalde case niet in de testdata zit, maar wel in de echte data. Dus dat zul je toch echt zelf even moeten uitvinden/beredeneren :)
spoiler:
Zelfs met een case als sevenine op het einde waar ik of 7 of 9 terug geef krijg ik in beide gevallen een verkeerd antwoord. Ik zal vast nog een (simpele?) case over het hoofd zien..

edit: ook een check gedaan of je als eerste een 0 tegen komt maar ook dat gebeurd niet.

[ Voor 8% gewijzigd door Creepy op 01-12-2023 14:43 ]

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


Acties:
  • 0 Henk 'm!

  • BernardV
  • Registratie: December 2003
  • Laatst online: 17:47
Dag 1 in PHP: https://github.com/BernardV/aoc2023/tree/main/day1

spoiler:
Deel 2 duurde langer dan gehoopt door een paar onvoorziene mogelijkheden. Eerst wel gedacht aan mogelijkheden als twone en eighthree maar niet wanneer er slechts 1x een samengestelde in een regel staat. Dan is de positie van het eerste getal ook van belang welke instantie je gaat vervangen.
Dit opgelost met regex.

Acties:
  • 0 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 18:55
MueR schreef op vrijdag 1 december 2023 @ 14:22:
[...]
spoiler:
Nee, zo werkt die Replacer dus niet :) Die gaat van links naar rechts in de source voor z'n replacements en laat wat al gereplaced is met rust.
Ik zou het toch maar checken, want als ik dat zo aanpas, dan gaat het in jouw voorbeeld fout. ;)

spoiler:
Die 't' wordt door eight en three gebruikt en staat er dus maar 1 keer in. Die Replacer zal dus bij de eerste match die 't' vervangen, waardoor de andere waarde niet gevonden wordt. ;)

eighthree => 8hree != 83
sevenine => 7ine != 79
Gropah schreef op vrijdag 1 december 2023 @ 14:33:
[...]
spoiler:
Overigens vind ik het heel interessant dat iedereen met stringreplaces en regexes zit te werken. Java/kotlin kent indexOf en lastIndexOf waarmee dit gedoe in zn geheel voorkomen word.
spoiler:
Voor mij is dat makkelijker dan de eerstegevonden tekst parsen of dat tekstueel of een cijfer is.

let the past be the past.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:59

Creepy

Tactical Espionage Splatterer

spoiler:
Ah, gevonden...althanks, dat denk ik want ik moet nog ff wachten voordat ik een nummer in mag vullen. Wat te doen als er maar 1 nummer in zit.....

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


Acties:
  • 0 Henk 'm!

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

Varienaja

Wie dit leest is gek.

Creepy schreef op vrijdag 1 december 2023 @ 14:55:
spoiler:
Ah, gevonden...althanks, dat denk ik want ik moet nog ff wachten voordat ik een nummer in mag vullen. Wat te doen als er maar 1 nummer in zit.....
Heb je niet 'treb7uchet' in je voorbeeld staan?

Siditamentis astuentis pactum.


Acties:
  • 0 Henk 'm!

  • mbe81
  • Registratie: Juni 2008
  • Laatst online: 16-06 20:48
MueR schreef op vrijdag 1 december 2023 @ 14:22:
[...]

spoiler:
Nee, zo werkt die Replacer dus niet :) Die gaat van links naar rechts in de source voor z'n replacements en laat wat al gereplaced is met rust.
spoiler:
Met de replacer kom ik wel door de test heen maar het echte inputbestand faalt. Het is nodig om uit de string eightwo zowel de waarde 8 als de waarde 2 te halen anders mis je in sommige gevallen het laatste cijfer.


Hierbij mijn oplossing:
https://github.com/mbe81/advent-of-code/tree/main/2023/day01

Acties:
  • +1 Henk 'm!

  • BernardV
  • Registratie: December 2003
  • Laatst online: 17:47
mbe81 schreef op vrijdag 1 december 2023 @ 15:12:
[...]


spoiler:
Met de replacer kom ik wel door de test heen maar het echte inputbestand faalt. Het is nodig om uit de string eightwo zowel de waarde 8 als de waarde 2 te halen anders mis je in sommige gevallen het laatste cijfer.
spoiler:
Je kunt je replace ook anders doen; Als je eight nu zou replacen door 8eight? :+ Er wel vanuitgaande dat de replacer niet weer op index 0 begint natuurlijk, maar vanaf de laatste index doorgaat met replacen.

Acties:
  • 0 Henk 'm!

  • mbe81
  • Registratie: Juni 2008
  • Laatst online: 16-06 20:48
BernardV schreef op vrijdag 1 december 2023 @ 15:22:
[...]

spoiler:
Je kunt je replace ook anders doen; Als je eight nu zou replacen door 8eight? :+ Er wel vanuitgaande dat de replacer niet weer op index 0 begint natuurlijk, maar vanaf de laatste index doorgaat met replacen.
spoiler:
Heb ik zojuist even getest. Mijn huidige oplossing geeft het volgende (geaccepteerde) antwoord:

Running Day 1, Part 2
Result: 54706

Als ik de replacer als volgt gebruik:

r := strings.NewReplacer("one", "1ne", "two", "2wo", "three", "3hree", "four", "4our", "five", "5ive",
"six", "6ix", "seven", "7even", "eight", "8ight", "nine", "9ine")

krijg ik de volgende uitkomst:

Running Day 1, Part 2
Result: 54718

De replacer gaat dus verder na het gedeelte wat vervangen is. Dit is dus geen oplossing.

Acties:
  • 0 Henk 'm!

  • BernardV
  • Registratie: December 2003
  • Laatst online: 17:47
@mbe81
spoiler:
Dat zal ook want als je "twone" hebt zal de replacer eerst "one" matchen en dus in "tw1ne" resulteren.
In dit geval zou eerst "two" replaced moeten worden en dan pas "one" dan gaat het wel goed, dan krijg je eerst "2wone" en dan "2w1ne".

Acties:
  • +1 Henk 'm!

  • mbe81
  • Registratie: Juni 2008
  • Laatst online: 16-06 20:48
BernardV schreef op vrijdag 1 december 2023 @ 15:36:
@mbe81
spoiler:
Dat zal ook want als je "twone" hebt zal de replacer eerst "one" matchen en dus in "tw1ne" resulteren.
In dit geval zou eerst "two" replaced moeten worden en dan pas "one" dan gaat het wel goed, dan krijg je eerst "2wone" en dan "2w1ne".
spoiler:
Helaas, de replacer doet niet aan overlap
:
NewReplacer returns a new Replacer from a list of old, new string pairs. Replacements are performed in the order they appear in the target string, without overlapping matches. The old string comparisons are done in argument order.

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 15:03

MueR

Admin Tweakers Discord

is niet lief

SPee schreef op vrijdag 1 december 2023 @ 14:45:
[...]

Ik zou het toch maar checken, want als ik dat zo aanpas, dan gaat het in jouw voorbeeld fout. ;)
Het mooie is dat mijn input dus wel werkte. Gropah's puzzle input gaf een off-by-two :P Anyway, code aangepast naar een andere methode, still works.

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


Acties:
  • +1 Henk 'm!

  • Kazu
  • Registratie: Juni 2004
  • Laatst online: 11-06 08:01
Man, ik dacht dit jaar weer eens een nieuwe programmeertaal aan m'n rijtje toe te voegen, dus had Rust uitgekozen. Deze opdracht was meer klooien met de taal dan daadwerkelijk de oplossing coderen :+ Krachtige taal, maar moet er wel even inkomen.

Eerst maar eens kijken hoe ver ik dit jaar kan komen, aangezien ik bar weinig tijd heb de komende weken...

PS5 PSN: UnrealKazu


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 08:59

Creepy

Tactical Espionage Splatterer

Varienaja schreef op vrijdag 1 december 2023 @ 14:58:
[...]

Heb je niet 'treb7uchet' in je voorbeeld staan?
Ja, doh.... maar dat bleek niet de fout te zijn :P

Mijn code ging prima om met de zaken waar je in kon tuinen, ik was alleen 1 edge case van mijn algoritme vergeten te controleren.
https://github.com/CodeEn...23/blob/main/days/Day1.go
spoiler:
De code scant letter voor letter of 1 van de strings is gevonden maar resette de positie per string niet goed indien de eerste letter al gevonden was en de volgende letter ook de eerste letter was (ttwo ging dus niet goed)

Ooit als ik tijd heb de code nog wat mooier maker om zo beide scan functies samen te voegen, voor nu heb ik er al teveel tijd aan besteed. En waarom kent Go nog steeds geen reserve string functie....

[ Voor 12% gewijzigd door Creepy op 01-12-2023 16:25 ]

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


Acties:
  • +1 Henk 'm!

  • SPee
  • Registratie: Oktober 2001
  • Laatst online: 18:55
Kazu schreef op vrijdag 1 december 2023 @ 15:46:
Man, ik dacht dit jaar weer eens een nieuwe programmeertaal aan m'n rijtje toe te voegen, dus had Rust uitgekozen. Deze opdracht was meer klooien met de taal dan daadwerkelijk de oplossing coderen :+ Krachtige taal, maar moet er wel even inkomen.

Eerst maar eens kijken hoe ver ik dit jaar kan komen, aangezien ik bar weinig tijd heb de komende weken...
Ik heb vorig jaar een paar opdrachten in rust gedaan. Toen had ik veel problemen met de borrow-checker, type problemen en uitzoeken welke functies er zijn.

Nu heb ik iets meer gedaan met rust (maar ook niet veel ;)), waardoor het nu een stukje sneller gaat.
Hoewel ik wel nog geregeld wat heb moeten opzoeken. :+

let the past be the past.


Acties:
  • +1 Henk 'm!

  • KabouterSuper
  • Registratie: September 2005
  • Niet online
BernardV schreef op vrijdag 1 december 2023 @ 15:22:
[...]

spoiler:
Je kunt je replace ook anders doen; Als je eight nu zou replacen door 8eight? :+ Er wel vanuitgaande dat de replacer niet weer op index 0 begint natuurlijk, maar vanaf de laatste index doorgaat met replacen.
spoiler:
Ik heb eight vervangen door eight8eight, enz. Dan blijft je string intact vanaf beide kanten. Na de negen replacements pas je deel 1 nog een keer toe. Easy peasy.

When life gives you lemons, start a battery factory


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Laatst online: 18:33
mijn aanvliegroute:
spoiler:
Ik heb de laatste digit gezicht door van rechts naar links te zoeken op de omgekeerde substrings (inclusief cijfers), dus zoek vanaf de rechterkant de eerste waarde uit de set {eno, 1, owt, 2, eerht, 3, etc..., enin, 9}

Acties:
  • 0 Henk 'm!

  • TrailBlazer
  • Registratie: Oktober 2000
  • Laatst online: 16-06 05:41

TrailBlazer

Karnemelk FTW

breew schreef op vrijdag 1 december 2023 @ 16:19:
mijn aanvliegroute:
spoiler:
Ik heb de laatste digit gezicht door van rechts naar links te zoeken op de omgekeerde substrings (inclusief cijfers), dus zoek vanaf de rechterkant de eerste waarde uit de set {eno, 1, owt, 2, eerht, 3, etc..., enin, 9}
spoiler:
Zo heb ik het ook gedaan geen moeilijk gedoe met replacements oid. Gewoon alles als string beschouwen en een waarde aan die string toekennen.

Acties:
  • 0 Henk 'm!

  • jammo
  • Registratie: November 2020
  • Laatst online: 06-06 11:34
Ik ga weer eens kijken tot hoever ik dit jaar kom voordat er teveel tijd in gaat zitten en ik af moet haken..
Dag 1 deel 2 heeft al meer tijd gekost dan eigenlijk zou moeten
(vooral als je dan ook nog typefouten gaat maken |:( )

Dag 1 Rust

Acties:
  • 0 Henk 'm!

  • Alain
  • Registratie: Oktober 2002
  • Niet online
eheijnen schreef op vrijdag 1 december 2023 @ 09:14:
spoiler:
Als je door de string loopt (van links of rechts) kun je steeds de "single digit" eerst testen en als dat niets oplevert, neem je de substring icm. de loop index die weer op "zero" ... "nine" getest kan worden.
Zodra er een gevonden is ben je klaar.
spoiler:
zero doet niet mee volgens de opdracht

You don't have to be crazy to do this job, but it helps ....


Acties:
  • 0 Henk 'm!

  • WernerL
  • Registratie: December 2006
  • Laatst online: 15:53
Ook maar weer eens een keer voor de lol een poging gedaan.
Voor de mensen die de allerlelijkste oplossing ooit willen zien: https://github.com/WernerLDev/AOC2023/blob/main/day1/day1.ts

Ja ik moet ook een beetje huilen hoe ik deel 2 op heb gelost maar het resulteerde in een correct antwoord en dus mijn 2e ster. :+

Roses are red, violets are blue, unexpected '{' on line 32.


Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:27
MadEgg schreef op vrijdag 1 december 2023 @ 02:20:
spoiler:
Oef, caching. Da's valsspelen >:)
spoiler:
Recursie-met-caching is niet de enige mogelijkheid. Je kunt het ook bottom-up berekenen, zo bijvoorbeeld.

De logica is dat je eerst de resultaten voor elk cadeautje afzonderlijk berekent (die gelijk is aan de waarde zelf), dan voor elke twee cadeautjes samen (waarbij je ofwel het ene, ofwel het andere cadeautje overlaat), dan voor elke drie cadeautjes samen, etc. todat je uiteindelijke 1 waarde voor alle cadeaus overhoudt.

[ Voor 4% gewijzigd door Soultaker op 01-12-2023 17:22 ]


Acties:
  • 0 Henk 'm!

  • Mugwump
  • Registratie: Mei 2017
  • Laatst online: 17:49
Ik ga dit jaar voor de aardigheid eens Kotlin proberen als Java developer. Wil toch eens kijken of ik er een beetje ervaring mee kan opdoen. :P

Dag 1

"The question of whether a computer can think is no more interesting than the question of whether a submarine can swim" - Edsger Dijkstra


Acties:
  • +1 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:26

.oisyn

Moderator Devschuur®

Demotivational Speaker

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • TheDutchCat
  • Registratie: December 2012
  • Laatst online: 13:31
Dit jaar ook weer van de partij en voor het eerst in Rust. Compleet nieuw voor mij, dus ben benieuwd hoe mijn oplossingen eruit gaan zien t.o.v. anderen. Mijn link:
Members only: title
Alleen zichtbaar voor ingelogde gebruikers. Inloggen

Acties:
  • 0 Henk 'm!

  • MadEgg
  • Registratie: Februari 2002
  • Laatst online: 14:47

MadEgg

Tux is lievvv

Ik heb 'm ook in Kotlin gedaan. Deze vond ik nog wel meevallen :)

Dag 1

Tja

Pagina: 1 2 ... 11 Laatste