Pagina 1 van 1

Advent of code

Geplaatst: 02 dec 2021, 07:59
door devilkin
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

Re: Advent of code

Geplaatst: 02 dec 2021, 09:57
door silentkiller
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:

Re: Advent of code

Geplaatst: 02 dec 2021, 10:07
door pfuhu
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 ...)

Re: Advent of code

Geplaatst: 02 dec 2021, 10:13
door silentkiller
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

Re: Advent of code

Geplaatst: 02 dec 2021, 11:03
door devilkin
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.

Re: Advent of code

Geplaatst: 02 dec 2021, 11:23
door cougare
Ik wil zeker meedoen.

Re: Advent of code

Geplaatst: 02 dec 2021, 11:44
door devilkin
Je kan blijkbaar maar 1 private leader board maken en ik heb er al eentje, dus als iemand zich geroepen voelt... ;)

Re: Advent of code

Geplaatst: 02 dec 2021, 11:53
door silentkiller
UB Leaderboard:

Code: Selecteer alles

1706665-12180546

Re: Advent of code

Geplaatst: 03 dec 2021, 19:17
door devilkin
Dag 3 was stevig...

Re: Advent of code

Geplaatst: 03 dec 2021, 21:00
door meon
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. :???:

Re: Advent of code

Geplaatst: 03 dec 2021, 21:23
door EotT
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.

Re: Advent of code

Geplaatst: 03 dec 2021, 21:35
door blatruwe
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)

Re: Advent of code

Geplaatst: 03 dec 2021, 22:08
door devilkin
Ook zoiets gedaan. M'n code staat trouwens op Github.

Re: Advent of code

Geplaatst: 04 dec 2021, 01:25
door meon
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)

Re: Advent of code

Geplaatst: 04 dec 2021, 08:24
door silentkiller
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

Re: Advent of code

Geplaatst: 04 dec 2021, 11:22
door EotT
Dag 4 is ook wel een leuke, dat lukte me niet meer met een 10 tal regels code (ik gebruik java).

Re: Advent of code

Geplaatst: 04 dec 2021, 12:40
door blatruwe
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.

Re: RE: Re: Advent of code

Geplaatst: 04 dec 2021, 13:56
door devilkin
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 :)