Advent of code

Alles over programmeren en development binnen de IT-wereld
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6714
Lid geworden op: 17 mei 2006, 18:10
Uitgedeelde bedankjes: 803 keer
Bedankt: 527 keer
Recent bedankt: 4 keer

Bericht

Zitten hier nog mensen die meedoen met de Advent Of Code?
https://adventofcode.com/2021/

Misschien een ideetje om een UB leaderboard op te zetten?

EDIT:

Leaderboard url (thx silentkiller!): https://adventofcode.com/2021/leaderboa ... ew/1706665

Code:

Code: Selecteer alles

1706665-12180546
Telenet All-Internet -- using CV8560E & OPNsense on PCEngines APU2E4
Proximus & Mobile Vikings -- Using OnePlus 8 Pro (ROM: Stock)
Gebruikersavatar
silentkiller
Premium Member
Premium Member
Berichten: 509
Lid geworden op: 24 jun 2008, 13:36
Locatie: Limburg
Uitgedeelde bedankjes: 39 keer
Bedankt: 73 keer

Bericht

ik kende het niet maar het lijkt me wel leuk!
Ik denk niet dat ik erg mijn best ga doen om te 'racen' maar ik ga wel op regelmatige basis ze proberen mee op te lossen.

De eerste twee waren al plezant iig :beerchug:
pfuhu
Premium Member
Premium Member
Berichten: 727
Lid geworden op: 12 mei 2011, 18:02
Uitgedeelde bedankjes: 11 keer
Bedankt: 57 keer

Bericht

En is het dan de bedoeling die dingen op te lossen met logisch/analytisch denken Of eerder om iets effectief te programmeren en zo de uitkomst te vinden?

(Ik ken het volledig niet en probeer de link met 'code' te vinden ...)
Gebruikersavatar
silentkiller
Premium Member
Premium Member
Berichten: 509
Lid geworden op: 24 jun 2008, 13:36
Locatie: Limburg
Uitgedeelde bedankjes: 39 keer
Bedankt: 73 keer

Bericht

Ik zou het eerder scripten noemen.

Je kan het oplossen door logisch na te denken en zonder code, maar je krijgt bijvoorbeeld 2000 instructies.
Daardoor is het de bedoeling dat hetgeen je logisch bedacht hebt, toch even in een script te gieten
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6714
Lid geworden op: 17 mei 2006, 18:10
Uitgedeelde bedankjes: 803 keer
Bedankt: 527 keer
Recent bedankt: 4 keer

Bericht

Goh, ja, ik ben zelf bezig in go. En voor je resultaten ga je zeker moeten iets maken om het automatisch te berekenen, want nu is het misschien nog manueel te doen maar naarmate je verder gaat wordt het moeilijk.
Telenet All-Internet -- using CV8560E & OPNsense on PCEngines APU2E4
Proximus & Mobile Vikings -- Using OnePlus 8 Pro (ROM: Stock)
cougare
Plus Member
Plus Member
Berichten: 187
Lid geworden op: 21 nov 2007, 12:24
Uitgedeelde bedankjes: 11 keer
Bedankt: 7 keer

Bericht

Ik wil zeker meedoen.
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6714
Lid geworden op: 17 mei 2006, 18:10
Uitgedeelde bedankjes: 803 keer
Bedankt: 527 keer
Recent bedankt: 4 keer

Bericht

Je kan blijkbaar maar 1 private leader board maken en ik heb er al eentje, dus als iemand zich geroepen voelt... ;)
Telenet All-Internet -- using CV8560E & OPNsense on PCEngines APU2E4
Proximus & Mobile Vikings -- Using OnePlus 8 Pro (ROM: Stock)
Gebruikersavatar
silentkiller
Premium Member
Premium Member
Berichten: 509
Lid geworden op: 24 jun 2008, 13:36
Locatie: Limburg
Uitgedeelde bedankjes: 39 keer
Bedankt: 73 keer

Bericht

UB Leaderboard:

Code: Selecteer alles

1706665-12180546
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6714
Lid geworden op: 17 mei 2006, 18:10
Uitgedeelde bedankjes: 803 keer
Bedankt: 527 keer
Recent bedankt: 4 keer

Bericht

Dag 3 was stevig...
Telenet All-Internet -- using CV8560E & OPNsense on PCEngines APU2E4
Proximus & Mobile Vikings -- Using OnePlus 8 Pro (ROM: Stock)
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 21:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 472 keer
Bedankt: 664 keer
Recent bedankt: 2 keer

Bericht

Ik snap de opdracht van dag 3 compleet niet, of 't resultaat is belachelijk...
Je moet het meest voorkomende getal nemen in de binaire reeks... Maar elke reeks bestaat uit 12 nullen of énen... Wat als het gelijk is?

Ook is het resulterende binaire getal gigantisch groot, dus ik doe vast iets mis...

Voor deel 1 gebruik ik volgende code (PowerShell):

Code: Selecteer alles

Import-Csv .\day3.txt | % {
    $check = 0
    $_.ToCharArray() | % {
        if ($_ -eq '1') {
            $check++
        }
    }

    if ($check -ge 6) {
        $gamma += [string]'1'
        $epsilon += [string]'0'
    } else {
        $gamma += [string]'0'
        $epsilon += [string]'1'
    }
}
En krijg ik volgende resultaten:

Code: Selecteer alles

$gamma= 0100000111011101110001111111011001011011011110011010101011011110110101110010001101010111011111101110000110001011101111111111101101111111110010011111110110011010111110010111011011001111111011011110011111111000100100111111111010010111011110101111011010100111111111100010100011111010111010110101001101011111001100010101111101111011110110011111000110010101010101010111001010111000011100101110011111011101001011110110111000111111101101101011001010111111011100000010101110111110111001110100000001011101111101010000011101010110111100101110111100011100101101111110111111011100111110010101001010000011101111000111101011110001111000001110101111001111111011010111011000101001111100110101011101011101001101011110001011111111010010110000111101100101111111100000100010110111001011010101110111001101101110011101101101001110010010011110101010101101100011110101011110111100000101000101011011010010111101010111001100011111101111011111110101110110010010101101011110100111101000110110111110001110101010110100011000110000

$epsilon=1011111000100010001110000000100110100100100001100101010100100001001010001101110010101000100000010001111001110100010000000000010010000000001101100000001001100101000001101000100100110000000100100001100000000111011011000000000101101000100001010000100101011000000000011101011100000101000101001010110010100000110011101010000010000100001001100000111001101010101010101000110101000111100011010001100000100010110100001001000111000000010010010100110101000000100011111101010001000001000110001011111110100010000010101111100010101001000011010001000011100011010010000001000000100011000001101010110101111100010000111000010100001110000111110001010000110000000100101000100111010110000011001010100010100010110010100001110100000000101101001111000010011010000000011111011101001000110100101010001000110010010001100010010010110001101101100001010101010010011100001010100001000011111010111010100100101101000010101000110011100000010000100000001010001001101101010010100001011000010111001001000001110001010101001011100111001111
Zo zou "gamma" het getal 2756888364289859008401067799398133314119499327502304718043072270837255906164641574710199552207870284789393092392963117550877651712925901393322567075379222092836222964074833294708990578888535815361564565886294918031915964558614885828896328217387124273719202708509702189060052381663110126128386145994288 zijn. :???:
EotT
Crew support
Crew support
Berichten: 675
Lid geworden op: 13 sep 2010, 11:11
Uitgedeelde bedankjes: 143 keer
Bedankt: 158 keer

Bericht

Je moet van alle getallen het eerste cijfer nemen. Van al deze cijfers moet je zien wat er het meeste voorkomt: een 0 of een 1. Dit is het resultaat cijfer voor de eerste positie.
Nu ga je verder met het 2de cijfer van alle getallen. Ook hier zoek je weer het cijfer dat het meeste voorkomt, dit is het resultaat voor het 2de cijfer.
Zo doe je dit verder voor alle 12 cijfers. Het resultaat voor gamma heeft dus een lengte van 12 cijfers.

dus heel simpel voorbeeld met 3 input getallen:
100
011
110

-->
  • eerste 'kolom' heeft cijfers 1, 0, 1. Meest voorkomende is een 1, dus resultaat voor eerste positie is 1.
  • tweede kolom: 0,1,1 -> meest voorkomende is 1.
  • derde kolom: 0,1,0 -> meest voorkomende is 0.
Resultaat voor gamma is dus 110 (binair), dus 6 (decimaal).

Afbeelding


Edit: Ik denk dat jij telkens het meest voorkomende cijfer hebt genomen van elk getal (elke lijn in de input, per rij dus), terwijl je dit moet doen per kolom.
Laatst gewijzigd door EotT 03 dec 2021, 20:37, in totaal 1 gewijzigd.
blatruwe
Plus Member
Plus Member
Berichten: 207
Lid geworden op: 12 nov 2018, 16:24
Uitgedeelde bedankjes: 28 keer
Bedankt: 34 keer

Bericht

Je moet het inderdaad per kolom bekijken, en niet per rij. Ik heb een array gemaakt per kolom, en daar telkens de meest voorkomende en minst voorkomende achter elkaar gezet, om zo tot een 12 cijferig binair getal te bekomen

Code: Selecteer alles

for line in file : 
    list.append(line.strip())
for i in range(len(list[0])):
    kolom=[]
    for value in list:
        kolom.append(value[i])
    gamma=gamma+most_frequent(kolom)
    epsilon=epsilon+least_frequent(kolom)
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6714
Lid geworden op: 17 mei 2006, 18:10
Uitgedeelde bedankjes: 803 keer
Bedankt: 527 keer
Recent bedankt: 4 keer

Bericht

Ook zoiets gedaan. M'n code staat trouwens op Github.
Telenet All-Internet -- using CV8560E & OPNsense on PCEngines APU2E4
Proximus & Mobile Vikings -- Using OnePlus 8 Pro (ROM: Stock)
Gebruikersavatar
meon
Administrator
Administrator
Berichten: 16757
Lid geworden op: 18 feb 2003, 21:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 472 keer
Bedankt: 664 keer
Recent bedankt: 2 keer

Bericht

EotT schreef:Edit: Ik denk dat jij telkens het meest voorkomende cijfer hebt genomen van elk getal (elke lijn in de input, per rij dus), terwijl je dit moet doen per kolom.
lol.

oeps :oops:
@devilkin = euh wow, 146 lijnen code... 't zal wellicht robuuster zijn en een aantal 'quirks' die voortkomen uit Go, maar dan vind ik PowerShell toch makkelijker ^^ (enkel nog maar naar part 1 gekeken)

Code: Selecteer alles

$kolom = @(0,0,0,0,0,0,0,0,0,0,0,0)

Import-Csv .\day3.txt | % {
    $pos = 0
    $_.ToCharArray() | % {
        if ($_ -eq '1') {
            $kolom[$pos]++ 
        }
        $pos++
    }
}
$kolom | % {
    if ($_ -ge ($day3.count)/2) {
        $gamma += '1'
        $epsilon += '0'
    } else {
        $gamma += '0'
        $epsilon += '1'
    }
}

echo ("day3, part1: " + [convert]::ToInt32($gamma,2)*[convert]::ToInt32($epsilon,2))
Denk trouwens dat de opdrachten tot nu toe zelfs gewoon in Excel zouden kunnen (day 1 heb ik toch zo gedaan)
Gebruikersavatar
silentkiller
Premium Member
Premium Member
Berichten: 509
Lid geworden op: 24 jun 2008, 13:36
Locatie: Limburg
Uitgedeelde bedankjes: 39 keer
Bedankt: 73 keer

Bericht

devilkin schreef:Dag 3 was stevig...
Inderdaad ook mijn tenen moeten uitkuisen :D
Nu spijtig genoeg op weekend zonder laptop, ik haal de schade wel in
EotT
Crew support
Crew support
Berichten: 675
Lid geworden op: 13 sep 2010, 11:11
Uitgedeelde bedankjes: 143 keer
Bedankt: 158 keer

Bericht

Dag 4 is ook wel een leuke, dat lukte me niet meer met een 10 tal regels code (ik gebruik java).
blatruwe
Plus Member
Plus Member
Berichten: 207
Lid geworden op: 12 nov 2018, 16:24
Uitgedeelde bedankjes: 28 keer
Bedankt: 34 keer

Bericht

Toch een tijdje opzitten zoeken, zeker voor opdracht 2. Ik ging er van uit dat er maar 1 per trekking kon winnen (voor het gemak return van de winning), waardoor mijn laatste dus verkeerd uit komt. Voor het initiele voorbeeld werkte het natuurlijk, maar debuggen op de grote dataset is minder evident.
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6714
Lid geworden op: 17 mei 2006, 18:10
Uitgedeelde bedankjes: 803 keer
Bedankt: 527 keer
Recent bedankt: 4 keer

Bericht

meon schreef:
oeps :oops:
@devilkin = euh wow, 146 lijnen code... 't zal wellicht robuuster zijn en een aantal 'quirks' die voortkomen uit Go, maar dan vind ik PowerShell toch makkelijker ^^ (enkel nog maar naar part 1 gekeken)
Het is letterlijk mijn eerste aanraking met go, nog nooit iets in geschreven. Elke dag leer ik bij, dus de kans is groot dat ik veel optimalisaties niet ken :)
Telenet All-Internet -- using CV8560E & OPNsense on PCEngines APU2E4
Proximus & Mobile Vikings -- Using OnePlus 8 Pro (ROM: Stock)
tizzen33
Member
Member
Berichten: 85
Lid geworden op: 30 maa 2017, 08:14
Uitgedeelde bedankjes: 3 keer
Bedankt: 20 keer

Bericht

Doet iemand dit jaar mee?

De eerste twee alvast opgelost :)

Python:
https://github.com/tizzen33/AdventOfCode2022
blatruwe
Plus Member
Plus Member
Berichten: 207
Lid geworden op: 12 nov 2018, 16:24
Uitgedeelde bedankjes: 28 keer
Bedankt: 34 keer

Bericht

Hier ook gestart en ondertussen dag 3 opgelost.
EotT
Crew support
Crew support
Berichten: 675
Lid geworden op: 13 sep 2010, 11:11
Uitgedeelde bedankjes: 143 keer
Bedankt: 158 keer

Bericht

Helemaal uit het oog verloren. Ik doe ook weer mee! :D
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6714
Lid geworden op: 17 mei 2006, 18:10
Uitgedeelde bedankjes: 803 keer
Bedankt: 527 keer
Recent bedankt: 4 keer

Bericht

Ik niet dit jaar - totaal geen tijd.
Telenet All-Internet -- using CV8560E & OPNsense on PCEngines APU2E4
Proximus & Mobile Vikings -- Using OnePlus 8 Pro (ROM: Stock)
EotT
Crew support
Crew support
Berichten: 675
Lid geworden op: 13 sep 2010, 11:11
Uitgedeelde bedankjes: 143 keer
Bedankt: 158 keer

Bericht

De opgave van vandaag (deel 2) was toch wel pittig. Gewoon bruteforcen leek niet de juiste oplossing :lol:
BMaster
Elite Poster
Elite Poster
Berichten: 951
Lid geworden op: 01 apr 2005, 14:46
Uitgedeelde bedankjes: 31 keer
Bedankt: 42 keer

Bericht

Ik ben er dit jaar ook eens begonnen, we zien wel hoeveel tijd ik er kan insteken. De eerste 6 zijn in elk geval gelukt!