Advent of code

Alles over programmeren en development binnen de IT-wereld
Plaats reactie
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6010
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 826 keer
Bedankt: 507 keer
Recent bedankt: 3 keer

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: 429
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 30 keer
Bedankt: 53 keer
Recent bedankt: 6 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: 640
Lid geworden op: 12 mei 2011, 20:02
Uitgedeelde bedankjes: 14 keer
Bedankt: 66 keer
Recent bedankt: 3 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: 429
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 30 keer
Bedankt: 53 keer
Recent bedankt: 6 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
Administrator
Administrator
Berichten: 6010
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 826 keer
Bedankt: 507 keer
Recent bedankt: 3 keer

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: 15 keer
Bedankt: 9 keer

Ik wil zeker meedoen.
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6010
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 826 keer
Bedankt: 507 keer
Recent bedankt: 3 keer

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: 429
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 30 keer
Bedankt: 53 keer
Recent bedankt: 6 keer

UB Leaderboard:

Code: Selecteer alles

1706665-12180546
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6010
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 826 keer
Bedankt: 507 keer
Recent bedankt: 3 keer

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: 16729
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 574 keer
Bedankt: 770 keer

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: 657
Lid geworden op: 13 sep 2010, 13:11
Uitgedeelde bedankjes: 168 keer
Bedankt: 301 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 03 dec 2021, 21:37, in totaal 1 gewijzigd.
blatruwe
Plus Member
Plus Member
Berichten: 181
Lid geworden op: 12 nov 2018, 17:24
Uitgedeelde bedankjes: 26 keer
Bedankt: 40 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
Administrator
Administrator
Berichten: 6010
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 826 keer
Bedankt: 507 keer
Recent bedankt: 3 keer

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: 16729
Lid geworden op: 18 feb 2003, 22:02
Twitter: meon
Locatie: Bree
Uitgedeelde bedankjes: 574 keer
Bedankt: 770 keer

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: 429
Lid geworden op: 24 jun 2008, 15:36
Locatie: Limburg
Uitgedeelde bedankjes: 30 keer
Bedankt: 53 keer
Recent bedankt: 6 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
EotT
Crew support
Crew support
Berichten: 657
Lid geworden op: 13 sep 2010, 13:11
Uitgedeelde bedankjes: 168 keer
Bedankt: 301 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: 181
Lid geworden op: 12 nov 2018, 17:24
Uitgedeelde bedankjes: 26 keer
Bedankt: 40 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
Administrator
Administrator
Berichten: 6010
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 826 keer
Bedankt: 507 keer
Recent bedankt: 3 keer

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: 77
Lid geworden op: 30 maa 2017, 10:14
Uitgedeelde bedankjes: 4 keer
Bedankt: 19 keer

Doet iemand dit jaar mee?

De eerste twee alvast opgelost :)

Python:
https://github.com/tizzen33/AdventOfCode2022
blatruwe
Plus Member
Plus Member
Berichten: 181
Lid geworden op: 12 nov 2018, 17:24
Uitgedeelde bedankjes: 26 keer
Bedankt: 40 keer

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

Helemaal uit het oog verloren. Ik doe ook weer mee! :D
Gebruikersavatar
devilkin
Administrator
Administrator
Berichten: 6010
Lid geworden op: 17 mei 2006, 20:10
Uitgedeelde bedankjes: 826 keer
Bedankt: 507 keer
Recent bedankt: 3 keer

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: 657
Lid geworden op: 13 sep 2010, 13:11
Uitgedeelde bedankjes: 168 keer
Bedankt: 301 keer

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

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

Terug naar “Development”