Advent of code

Plaats reactie
Gebruikersavatar
devilkin
Elite Poster
Elite Poster
Berichten: 4884
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 551 keer
Bedankt: 341 keer
Contacteer:

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
Pro Member
Pro Member
Berichten: 297
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 17 keer
Bedankt: 26 keer

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: 464
Lid geworden op: 12 mei 2011, 20:02
Uitgedeelde bedankjes: 8 keer
Bedankt: 40 keer

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
Pro Member
Pro Member
Berichten: 297
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 17 keer
Bedankt: 26 keer

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
Elite Poster
Elite Poster
Berichten: 4884
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 551 keer
Bedankt: 341 keer
Contacteer:

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: 185
Lid geworden op: 21 nov 2007, 13:24
Uitgedeelde bedankjes: 14 keer
Bedankt: 9 keer

Ik wil zeker meedoen.
Gebruikersavatar
devilkin
Elite Poster
Elite Poster
Berichten: 4884
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 551 keer
Bedankt: 341 keer
Contacteer:

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
Pro Member
Pro Member
Berichten: 297
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 17 keer
Bedankt: 26 keer

UB Leaderboard:

Code: Selecteer alles

1706665-12180546
Gebruikersavatar
devilkin
Elite Poster
Elite Poster
Berichten: 4884
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 551 keer
Bedankt: 341 keer
Contacteer:

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: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

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. :???:
Gebruikersavatar
EotT
Premium Member
Premium Member
Berichten: 550
Lid geworden op: 13 sep 2010, 13:11
Uitgedeelde bedankjes: 127 keer
Bedankt: 188 keer

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 op 03 dec 2021, 21:37, 1 keer totaal gewijzigd.
blatruwe
Plus Member
Plus Member
Berichten: 127
Lid geworden op: 12 nov 2018, 17:24
Uitgedeelde bedankjes: 15 keer
Bedankt: 29 keer

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
Elite Poster
Elite Poster
Berichten: 4884
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 551 keer
Bedankt: 341 keer
Contacteer:

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: 16609
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 564 keer
Bedankt: 759 keer
Contacteer:

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
Pro Member
Pro Member
Berichten: 297
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 17 keer
Bedankt: 26 keer

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
Gebruikersavatar
EotT
Premium Member
Premium Member
Berichten: 550
Lid geworden op: 13 sep 2010, 13:11
Uitgedeelde bedankjes: 127 keer
Bedankt: 188 keer

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: 127
Lid geworden op: 12 nov 2018, 17:24
Uitgedeelde bedankjes: 15 keer
Bedankt: 29 keer

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
Elite Poster
Elite Poster
Berichten: 4884
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 551 keer
Bedankt: 341 keer
Contacteer:

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)
Plaats reactie

Terug naar “Development”