Engineering is like Tetris. Succes disappears and errors accumulate.
Hadden we het over wachtwoorden valideren met regex? Dat had ik niet meegekregen. Dat zou ik inderdaad ook niet doen.armageddon_2k1 schreef op woensdag 2 december 2020 @ 16:07:
[...]
Dat is een regex om de input te parsen, niet de wachtwoorden te valideren. Die staan hier:
https://github.com/nielsu...nt/y2020/Day02.kt#L14-L15
De oplossing in het filmpje van Jonathan dat hier ook geplaatst is doet het zeker ook, en diezelfde constructie had ik ook zeker kunnen bouwen in Scala. Het had er alleen wat minder mooi uitgezien.
De filmpjes van hem kijk ik al een aantal jaar. Wat ik zo bijzonder vind is dat wanneer ik naar hem kijk, dat ik soms denk: "hij neemt er wel de tijd voor". Hij komt relaxed over en zoveel heeft hij niet klaarstaan of voorbereid. Hij weet wel snel wat de bedoeling is, ook door zijn ervaring met deze puzzels. Hij probeert volgens mij ook in te schatten wat part 2 zou kunnen zijn waar hij ook al direct rekening mee kan houden.P_Tingen schreef op woensdag 2 december 2020 @ 13:33:
Nee, de top 100 wordt toch vast weer bezet door idioten fanatici die af zitten te tellen tot de opgave beschikbaar komt, alles in de steigers hebben staan en al beginnen te programmeren voordat ze de opgave helemaal gelezen hebben. Op YouTube waren vorig jaar een paar filmpjes van hoe sommige gasten het oplossen.
Dit zijn echte wedstrijdprogrammeurs, daar komen wij normale stervelingen niet bij in de buurt.
Check bv kanaal van Jonathan Paulson voor de oplossing van vandaag in minder dan 2:30 minuut
[YouTube: Advent of Code 2020 - Day 2]
Als je dan naar die day2 kijkt: eerst gaat hij heel zijn getinput regel typen om zijn input binnen te halen (die regel staat bij andere gewoon al klaar of gaat automatisch). Hij moet zijn import nog typen. Even naar zijn terminal, de input checken en weer terug een regeltje erbij, weer even checken. Dat is zeker al een halve minuut die hij verliest ten opzichten van zijn "concurrenten". Maar uiteindelijk wel echt consistent in de top 100 scoren.
Ik denk soms ook dat ik snel ben, maar dat is vooral in mijn hoofd, want dan is er zo alweer een kwartier voorbij
1
2
3
4
5
6
7
8
9
10
| object Entry { private val Pattern = "^([0-9]+)-([0-9]+)\\s([a-z]):\\s([a-z]+)$".r def apply(line: String): Entry = { val Pattern(pos1, pos2, char, password) = line new Entry(char.head, pos1.toInt, pos2.toInt, password) } } |
Wat me echter nog nooit eerder is gebeurd, is dat het de eerste keer werkte
Ik wel, maar ik zie nu dat de jij en de rest het wel over file-parsen hadden.... dusThoNohT schreef op woensdag 2 december 2020 @ 16:09:
[...]
Hadden we het over wachtwoorden valideren met regex? Dat had ik niet meegekregen. Dat zou ik inderdaad ook niet doen.
Engineering is like Tetris. Succes disappears and errors accumulate.
Oja, dat kon zelfs op meerdere manieren in Scala. Mijn tactiek was (ongeveer) dit:eamelink schreef op woensdag 2 december 2020 @ 16:16:
Ik heb het ook met een Regex gedaan:
Scala:
1 2 3 4 5 6 7 8 9 10 object Entry { private val Pattern = "^([0-9]+)-([0-9]+)\\s([a-z]):\\s([a-z]+)$".r def apply(line: String): Entry = { val Pattern(pos1, pos2, char, password) = line new Entry(char.head, pos1.toInt, pos2.toInt, password) } }
Wat me echter nog nooit eerder is gebeurd, is dat het de eerste keer werkte
1
2
3
4
| val pattern = "([0-9]+)-([0-9]+) ([a-z]): ([a-z]+)".r.unanchored inputLines.map{ case pattern(min, max, char, password) => Policy(min.toInt, max.toInt, char.head, password) } |
https://fsprojects.github.io/FSharp.Text.RegexProvider/ThoNohT schreef op woensdag 2 december 2020 @ 09:14:
[...]
Wow, die manier waarop je regex output matcht in kotlin ziet er wel nice uit.
Ik had nog getwijfeld tussen parser en regex, maar de input is zo simpel dat ik voor strings splitten ben gegaan in dag 2 felt cute (might change later).
1
2
3
4
5
6
7
8
9
10
11
12
| open FSharp.Text.RegexProvider open FSharp.Text.RegexExtensions type passwordLine = { num1: int; num2: int; char: char; password: string } type LineRegex = Regex< @"(?<num1>\d+)-(?<num2>\d+) (?<char>.{1}): (?<password>.+)$" > let parsed = LineRegex().TypedMatch(line) { num1 = parsed.num1.AsInt num2 = parsed.num2.AsInt char = parsed.char.AsChar password = parsed.password.Value } |
Jaaa, externe libraries. Dat is valsspelenCaelorum schreef op woensdag 2 december 2020 @ 16:33:
[...]
https://fsprojects.github.io/FSharp.Text.RegexProvider/
F#:
1 2 3 4 5 6 7 8 9 10 11 12 open FSharp.Text.RegexProvider open FSharp.Text.RegexExtensions type passwordLine = { num1: int; num2: int; char: char; password: string } type LineRegex = Regex< @"(?<num1>\d+)-(?<num2>\d+) (?<char>.{1}): (?<password>.+)$" > let parsed = LineRegex().TypedMatch(line) { num1 = parsed.num1.AsInt num2 = parsed.num2.AsInt char = parsed.char.AsChar password = parsed.password.Value }
https://niels.nu
De lol is toch ook dat je wat met die input moet doen? Regexen of zelf parsen. Dat vind ik onderdeel van de opdracht eerlijk gezegd.EHelmond schreef op woensdag 2 december 2020 @ 10:22:
Ik open de file dus ook helemaal niet ik prop het gelijk in de source en probeer het daar een beetje neer te zetten zodat ik er wat mee kan.
Ter ilustratie vandaag zag 1 regel input er bij mij na een beetje slim find and replacen in notepad++ zo uit:
code:
1{18,19,'t',"tttttttpttttrtttttp"},
Het is vast niet de meest handige manier maar voor mij wel
Dat gezegd hebbende. Ik doe ook mee, al ben ik bang dat ik niet iedere dag eraan kan zitten. Maar we doen een poging.
Ik doe dus mee in C:
https://github.com/DennieBee/advent-of-code/
Een experimentele community-site: https://technobabblenerdtalk.nl/. DM voor invite code.
Haha ja, of er zit gewoon behoorlijk wat kracht in Type Providers verborgen.ThoNohT schreef op woensdag 2 december 2020 @ 16:56:
[...]
Jaaa, externe libraries. Dat is valsspelenEn alsnog vind ik die van Kotlin hier mooier
Deze TP heeft wel wat issues idd qua compactheid meer doordat die best oud is al.
Met dank aan de github repo van @Camulos voor wat inspiratie voor de opzet van het project.
[ Voor 10% gewijzigd door ydderf op 02-12-2020 20:45 ]
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
1
2
3
4
5
6
7
8
9
10
| var lines = Input.GetInputLines(input).ToArray(); var inputParser = new InputParser<int, int, char, string>("min-max letter: password"); return lines.Select(line => { var pi = new ParsedInput(); (pi.minimum, pi.maximum, pi.letter, pi.password) = inputParser.Parse(line); return pi; }).ToList(); |
[ Voor 6% gewijzigd door GeertenVink op 02-12-2020 20:24 ]
Jup, het parsen alleen. Niet het valideren.Bolukan schreef op woensdag 2 december 2020 @ 15:25:
Dag 2 iemand met regex gewerkt?
Nieuwe les vandaag was exclusive or (xor)
:fill(white):strip_exif()/f/image/7Un4SSAasjvZqQkBpRZ8gvQk.png?f=user_large)
https://github.com/osxy/A...2020/AoC2020/Days/Day2.cs
[ Voor 68% gewijzigd door Osxy op 02-12-2020 21:05 ]
"Divine Shields and Hearthstones do not make a hero heroic."
https://github.com/gercob...tOfCode2020/src/runner.ts
"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
Anders ergens toch weer eens proberen te programmeren
1
| "(?<num1>\\d+)-(?<num2>\\d+)\\s(?<char>.):\\s(?<pass>.*)" |
Mijn C# regexje
Iemand anders nog een XOR gebruikt voor deel 2?
https://github.com/jelkna...0Code%202020/Day2/Day2.cs
[ Voor 11% gewijzigd door jelknab op 02-12-2020 22:13 ]
1
| @"(\d+)-(\d+)\s(.):\s(.+)" |
Zie dat ik mijn git nog niet gedeeld had.
Tips altijd welkom. Doe vooral mee om te leren
https://github.com/mscham.../blob/master/2020/Day2.cs
Ik wist ook niet dat Python de xor had doormiddel van ^, wel leuk om te wetenOsxy schreef op woensdag 2 december 2020 @ 20:35:
[...]
Nieuwe les vandaag was exclusive or (xor)kende die nog niet in c#. Dit jaar sowieso voor het eerst met TDD aan spelen in de AoC.
(doe mij maar gewoon for x = 1 to 10 )
hebben we dag 2 ook succesvol afgerond
yeah me
[ Voor 16% gewijzigd door heuveltje op 02-12-2020 22:42 ]
Heuveltjes CPU geschiedenis door de jaren heen : AMD 486dx4 100, Cyrix PR166+, Intel P233MMX, Intel Celeron 366Mhz, AMD K6-450, AMD duron 600, AMD Thunderbird 1200mhz, AMD Athlon 64 x2 5600, AMD Phenom X3 720, Intel i5 4460, AMD Ryzen 5 3600 5800x3d
Ook met 3 van de 4 tot nu toe gedaan, maar deel 2 van dag 1 kreeg ik toch niet direct voor elkaar en toen waren die paar regels code toch sneller geschrevenll roel j schreef op woensdag 2 december 2020 @ 22:10:
Tot nu toe is het allemaal nog mogelijk in Excel (sheet, geen VB). Zien wat de dag van morgen gaat brengen of alleen Excel dan nog haalbaar is![]()
Anders ergens toch weer eens proberen te programmeren
Nouja, mogelijk is het sowieso. Of je het wil doen is wat andersll roel j schreef op woensdag 2 december 2020 @ 22:10:
Tot nu toe is het allemaal nog mogelijk in Excel (sheet, geen VB). Zien wat de dag van morgen gaat brengen of alleen Excel dan nog haalbaar is
https://niels.nu
Anyway: https://github.com/varien...e2020/Solutions.java#L153
Siditamentis astuentis pactum.
Oh well, deze opgelost met recursie, was al ff geleden dat ik zoiets nog schreef. Day 03 in TypeScript.
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
https://github.com/rj-cod.../rjcoding/aoc2020/Day3.kt
[ Voor 20% gewijzigd door armageddon_2k1 op 03-12-2020 07:08 ]
Engineering is like Tetris. Succes disappears and errors accumulate.
De uitdaging van vandaag zat bij mij niet echt in de code, maar in IntelliJ. Iets daarvan is bljkbaar gesneuveld op mijn laptop, dus nu dat maar eens oplossen zodat ik er morgen meer aan heb.
Oja, en vermenigvuldigen en optellen zijn niet hetzelde
Tot nu toe valt het mee en leuk om te doen.
15 minuten voor de 2 opdrachten samen.
https://github.com/mscham.../blob/master/2020/Day3.cs
[ Voor 24% gewijzigd door Mschamp op 03-12-2020 08:22 ]
Deel 2 heb ik toch een minuut of 15 over gedaan en een verkeerd antwoord submitted, doordat ik een stom foutje had die even duurde voordat ik hem doorhad.
“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.”
https://github.com/osxy/A...2020/AoC2020/Days/Day3.cs
[ Voor 26% gewijzigd door Osxy op 03-12-2020 08:54 ]
"Divine Shields and Hearthstones do not make a hero heroic."
... en gaat over tot de orde van de dag
Dit was een leuke. Had eerst een iteratieve oplossing en bedacht me toen dat een functionele oplossing ook kon. Natuurlijk scheelde dat weer aardig wat regels code, dus ik ben hiermee wel in m'n nopjes!
https://niels.nu
Dag 1, deel 2 heb ik inderdaad niet via Excel gedaan uiteindelijk maar met Notepad++ en calculatorWesley schreef op woensdag 2 december 2020 @ 23:27:
[...]
Ook met 3 van de 4 tot nu toe gedaan, maar deel 2 van dag 1 kreeg ik toch niet direct voor elkaar en toen waren die paar regels code toch sneller geschrevenhoe heb je die ongeveer aangepakt?
Excel was wel mogelijk maar handmatig ging sneller
Hahaha. Je hebt gelijkHydra schreef op donderdag 3 december 2020 @ 00:01:
[...]
Nouja, mogelijk is het sowieso. Of je het wil doen is wat anders
Ja ik had dus wel de overflow, gelukkig meteen door wat het probleem was, vroeger had me dat weer 10 minuten gekost.Osxy schreef op donderdag 3 december 2020 @ 08:53:
Was prima te doen, deel 2 was na refactor van code voor deel 1 in 3min klaar.
spoiler:Ik had denk ook mazzel met input want had ook geen int overflow, kwam op 2.106.818.610 uit.
https://github.com/osxy/A...2020/AoC2020/Days/Day3.cs
Ik zag dit
1
2
3
4
5
6
7
8
| if (x + right > lineLength - 1) { x = right - (lineLength - x); } en je kan daar modulo voor gebruiken. array[index % maxlengte] |
[ Voor 6% gewijzigd door DRaakje op 03-12-2020 10:34 ]
Maar de nummer 1 op de Tweakers private board heeft 645 punten. Met zes mogelijke sterren, constant eerste zijn, levert dat toch max 600 punten op?Getting a star first is worth 100 points, second is 99, and so on down to 1 point at 100th place.
Door
Kan je volgens mij zelfs maximaal 400 punten halen.Because of an outage during the day 1 puzzle unlock, day 1 is worth no points.
Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF
De100 punten max geldt enkel voor het Global leaderboard. Binnen een private leaderboard kan je meer dan 100 punten per ster scoren als er voldoende deelnemers aan het leaderboard zijn:ZpAz schreef op donderdag 3 december 2020 @ 10:41:
Heb ondertussen 6 sterren weten te bemachtigen, maar volgens mij is de leaderboard ook al een puzzel op zich, of op zijn minst lees ik iets verkeerds ofzo.
[Local Score], which awards users on this leaderboard points much like the global leaderboard. If you add or remove users, the points will be recalculated, and the order can change. For N users, the first user to get each star gets N points, the second gets N-1, and the last gets 1. This is the default.
Wishlist Backpack Survivors op Steam !
Wow, dus als je later in de challenge iemand toevoegt, dan kan die zo in één keer bovenaan staan.[Local Score], which awards users on this leaderboard points much like the global leaderboard. If you add or remove users, the points will be recalculated, and the order can change. For N users, the first user to get each star gets N points, the second gets N-1, and the last gets 1. This is the default.
... en gaat over tot de orde van de dag
Ik ga hier vanavond weer eens rustig naar kijken. Betekend dat ik ook niet in de top 100 ga komen.
Roses are red, violets are blue, unexpected '{' on line 32.
Haha, nee, ik probeer het vaak een beetje tussendoor te doen. Als de opgaven niet al te groot zijn en het niet al te druk is dan lukt dat wel. Een ander staat per slot van rekening ook wel een paar keer per dag buiten te roken. Daarnaast neem ik ook niet echt een pauze dus dat half uur kan ik er ook aan besteden.WernerL schreef op donderdag 3 december 2020 @ 11:06:
Ben ik de enige hier die overdag moet werken?![]()
Ik ga hier vanavond weer eens rustig naar kijken. Betekend dat ik ook niet in de top 100 ga komen.
... en gaat over tot de orde van de dag
Ja als die persoon wel eerder de sterren gehaald heeft. De tijd van vormen van de leader board of toevoegen van mensen heeft daar geen invloed op.P_Tingen schreef op donderdag 3 december 2020 @ 11:03:
[...]
Wow, dus als je later in de challenge iemand toevoegt, dan kan die zo in één keer bovenaan staan.
[ Voor 4% gewijzigd door Woy op 03-12-2020 11:11 ]
“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.”
Cool, ja die kende ik nog niet.DRaakje schreef op donderdag 3 december 2020 @ 09:56:
[...]
Ja ik had dus wel de overflow, gelukkig meteen door wat het probleem was, vroeger had me dat weer 10 minuten gekost.
Ik zag dit
C#:
1 2 3 4 5 6 7 8 if (x + right > lineLength - 1) { x = right - (lineLength - x); } en je kan daar modulo voor gebruiken. array[index % maxlengte]
#amateurDev #eigenlijkQA
"Divine Shields and Hearthstones do not make a hero heroic."
Dat maakte deel 2 wel makkelijk ja.P_Tingen schreef op donderdag 3 december 2020 @ 08:53:
spoiler:Ja hier ook, ik kon deel 1 in een functie gooien met 2 parameters. Daardoor was deel 2 appeltje-eitje
"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
Ah, checkll roel j schreef op donderdag 3 december 2020 @ 09:41:
[...]
Dag 1, deel 2 heb ik inderdaad niet via Excel gedaan uiteindelijk maar met Notepad++ en calculator
Excel was wel mogelijk maar handmatig ging sneller
Vandaag was ook wel weer goed te doen volledig in een sheet.
Excel skills een beetje aanscherpen kan ook nuttig zijnHydra schreef op donderdag 3 december 2020 @ 00:01:
[...]
Nouja, mogelijk is het sowieso. Of je het wil doen is wat anders
Bij dag drie was ik even in de war met de '2 down',
Coding in the cold; <brrrrr />
Ik ben er juist van uit gegaan dat je op rij 1 moest beginnen, zo lees ik het ook:Belindo schreef op donderdag 3 december 2020 @ 11:45:
Dag 2 en 3 maar in Excel gedaan. Zowel de puzzel input als de omschrijving deed mij denken dat het daarin erg simpel zou zijn. En zo was het.
Bij dag drie was ik even in de war met de '2 down',spoiler:omdat ik dacht dat je nog steeds op rij 1 begon, zou de 2 down daarna rij 3 zijn, en dan rij 5, 7, 9, etc. Maar ze gaan er dus van uit dat de 2 down gelijk begint, en je dus op rij 2, 4, 6, etc. moet kijken.
Oplossing in Progress 4GLStarting at the top-left corner of your map
... en gaat over tot de orde van de dag
Coding in the cold; <brrrrr />
VreemdBelindo schreef op donderdag 3 december 2020 @ 12:03:
Apart, want als ik de bomen op rij 1, 3, 5, 7 etc. telde klopte mijn uitkomst niet. Wanneer ik die van 2, 4, 6, 8, etc. gebruikte was ie wel goed.
Overdag werk, maar om half zeven was ik nog niet aan het werkWernerL schreef op donderdag 3 december 2020 @ 11:06:
Ben ik de enige hier die overdag moet werken?![]()
Ik ga hier vanavond weer eens rustig naar kijken. Betekend dat ik ook niet in de top 100 ga komen.
Oplossing in C#: https://github.com/jelkna...0Code%202020/Day3/Day3.cs
jelknab schreef op donderdag 3 december 2020 @ 12:10:
Was nog steeds goed te doen vandaag
spoiler:Ik had dus wel last van een integer overflow, dus toch maar de laatste stap een long laten teruggeven.
https://niels.nu
Belindo schreef op donderdag 3 december 2020 @ 12:03:
Apart, want als ik de bomen op rij 1, 3, 5, 7 etc. telde klopte mijn uitkomst niet. Wanneer ik die van 2, 4, 6, 8, etc. gebruikte was ie wel goed.
Ik denk dat jullie 0- en 1-indexed door elkaar halen, en/of het startpunt. In 0-indexed: je start op 0,0, waar nooit een boom staat. Die reken je mee. Je hebt dan 0, 2, 4, 6... (in plaats van 2, 4, 6, 8...). Als je direct al op regel 1 begon vanwege het eerste deel (dus op punt 1,3), dan gaat het mis ja omdat je dan regels 1, 3, 5, 7... pakt.Wesley schreef op donderdag 3 december 2020 @ 12:07:
[...]
Vreemdook hier begrepen als 1-3-5-7-... en zo toegepast om juist antwoord te krijgen.
Misschien dat ik het wel verkeerd begrijp hoor, en dat ik door dom geluk de oplossing heb gevonden. Plaatjes in de spoiler. Ik hoop dat jullie mij het kunnen uitleggen.Wesley schreef op donderdag 3 december 2020 @ 12:07:
[...]
Vreemdook hier begrepen als 1-3-5-7-... en zo toegepast om juist antwoord te krijgen.
/f/image/pokLPB4GwWPkFaHqrkBQEW8p.png?f=fotoalbum_large)
In kolom E (geel) heb ik de Right1Down1 al staan, deze kan ik dus hergebruiken voor de Right1Down2 in kolom J (groen). Hier heb ik simpel gezegd; als de rij even is, return dan niets, anders het karakter uit de 1Right1Down kolom. Dus rij 2, 4, 6, 8 etc. Deze geeft dan 43 bomen tegenover 34 wanneer ik naar de oneven rijen kijk.
Vervolgens is de uitkomst 218*77*65*82*43=3847183340 wat het juiste antwoord was:
:fill(white):strip_exif()/f/image/J5pSJ8gDqx7sQbj3aK4LtdFM.png?f=user_large)
Edit, het is een beetje warrig omdat de input natuurlijk op 'rij 1' begint, en mijn Excel table op rij 4. Dus het even/odd verhaal moet je even in relatie zien tot óf de map, óf de Excel table
[ Voor 6% gewijzigd door Belindo op 03-12-2020 12:25 ]
Coding in the cold; <brrrrr />
Belindo schreef op donderdag 3 december 2020 @ 12:20:
[...]
Misschien dat ik het wel verkeerd begrijp hoor, en dat ik door dom geluk de oplossing heb gevonden. Plaatjes in de spoiler. Ik hoop dat jullie mij het kunnen uitleggen.
spoiler:[Afbeelding]
In kolom E (geel) heb ik de Right1Down1 al staan, deze kan ik dus hergebruiken voor de Right1Down2 in kolom J (groen). Hier heb ik simpel gezegd; als de rij even is, return dan niets, anders het karakter uit de 1Right1Down kolom. Dus rij 2, 4, 6, 8 etc. Deze geeft dan 43 bomen tegenover 34 wanneer ik naar de oneven rijen kijk.
Vervolgens is de uitkomst 218*77*65*82*43=3847183340 wat het juiste antwoord was:
[Afbeelding]
Edit, het is een beetje warrig omdat de input natuurlijk op 'rij 1' begint, en mijn Excel table op rij 4. Dus het even/odd verhaal moet je even in relatie zien tot óf de map, óf de Excel table
y :1-1 1-2
1 : 1 1
2 : 2
3 : 3 2
4 : 4
5 : 5 3
- I can accurately say I was born on Earth, but it's not very precise. I can precisely say I was born at latitude 37.229N, longitude 115.811W, but that is not at all accurate - Matt Parker
Oh verrek, inderdaad. Maar dan is het puur toeval dat de uitkomst goed wasMoofnor schreef op donderdag 3 december 2020 @ 12:31:
[...]
spoiler:Je kunt niet de 1-1 kolom herbruiken voor 1-2, aangezien deze elke rij opschuift:
y :1-1 1-2
1 : 1 1
2 : 2
3 : 3 2
4 : 4
5 : 5 3
Coding in the cold; <brrrrr />
Hoewel ik normaal altijd vloek op 1-indexed ging ik er vanuit dat we allebei 1-indexed aan het werken waren gezien we beiden in Excel bezig waren met effectieve rijenDataGhost schreef op donderdag 3 december 2020 @ 12:16:
[...]
[...]
Ik denk dat jullie 0- en 1-indexed door elkaar halen, en/of het startpunt. In 0-indexed: je start op 0,0, waar nooit een boom staat. Die reken je mee. Je hebt dan 0, 2, 4, 6... (in plaats van 2, 4, 6, 8...). Als je direct al op regel 1 begon vanwege het eerste deel (dus op punt 1,3), dan gaat het mis ja omdat je dan regels 1, 3, 5, 7... pakt.
Zie niet direct in waarom het dan inderdaad alsnog zou kloppen, maar zou wel heel toevallig zijnBelindo schreef op donderdag 3 december 2020 @ 12:35:
[...]
Oh verrek, inderdaad. Maar dan is het puur toeval dat de uitkomst goed was
Ik heb de Right1Down2 opnieuw gedaan met de feedback van @Moofnor in het achterhoofd. Nu kom ik andere resultaten tegen (kolom L) dan de 1e poging (kolom J), maar het aantal 'bomen' is toevalligerwijs hetzelfde.
:fill(white):strip_exif()/f/image/JJqVEY46d7YVZXykoiAF3D2d.png?f=user_large)
Echt puur stom geluk dus 😋
* Belindo gaat zich in een hoekje staan schamen
Coding in the cold; <brrrrr />
Engineering is like Tetris. Succes disappears and errors accumulate.
Soms gaat het niet zoals het moet, maar moet het maar zoals het gaat
tot nu tot nog geen problemen gehad.. dag 3 maar een functie voor geschreven met als input 2 vectoren (horizontale en verticale stapgrootte).. leuke opdrachten
# PART 2
###################
DT <- fread( "./data/day03_input.txt", header = FALSE )
#repeat string 100 times
DT[, long := strrep( V1, 100 ) ]
#function
ans <- mapply( function(x, y) {
temp <- copy(DT)
temp <- temp[ seq(1, nrow(temp), y), ]
temp[, rowpos := .I ]
temp[, colpos := 1 + (rowpos - 1) * x ]
#build regex
temp[, regex := paste0( "^.{", colpos - 1, "}#" ) ]
#get if tree
temp[, tree := unlist( Map( grepl, regex, long, perl = TRUE ) ) ]
#answer
sum(temp$tree)
}, c(1,3,5,7,1), c(1,1,1,1,2) )
#[1] 60 286 76 62 45
prod(ans)
# [1] 3638606400
Oplossing in C# https://github.com/RTwToo...lob/main/aoc03/Program.cs
Anyone who gets in between me and my morning coffee should be insecure.
Edit!Woy schreef op donderdag 3 december 2020 @ 14:14:
@Reynouts props voor de visualisatie, het was leuk geweest als je het afgelegde path ook nog had kunnen zien, met highlights van de botsingen met bomen
[ Voor 61% gewijzigd door Reynouts op 04-12-2020 08:25 ]
“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.”
Oplossing voor dag 3 https://github.com/xnutral/aoc20/blob/master/d3.py
Aangezien het een programmeeropdracht is, zou ik het zo schrijven dat aanpassen van de input geen nadelige gevolgen zou moeten hebben voor je programma. Zowel de test-input die in de tekst van de opdracht staat als je puzzel-input moeten met dezelfde code opgelost worden. Hardcoden brengt je alleen maar dichter in de buurt van een handmatige oplossing met pen en papier. Ook vraag ik me af waarom je yaml gebruikt, dat lijkt me een heftig overbodige omweg zeker in Python. Het is veel makkelijker om de input in te lezen zoals 'ie is. Alle opdrachten hebben twee delen, jouw oplossingen lijken maar slechts 1 van de delen op te kunnen lossen, is dat de bedoeling?Nutral schreef op donderdag 3 december 2020 @ 14:32:
Leuk concept, en voor mij leuk om een beetje te werken aan mijn python skills. Gebruikt het alleen af en toe voor losse berekeningen op werk.
Oplossing voor dag 3 https://github.com/xnutral/aoc20/blob/master/d3.py
In dit geval heeft het hardcoden het volgens mij juist veel moeilijker gemaakt om deel 2 lekker op te lossen. Bij mij gebruiken deel 1 en 2 dezelfde code, alleen de functie-aanroep is anders. Je kan er elke kaart in gooien die je wilt, gewoon 1:1 als tekstbestand zoals die te downloaden is van de AoC-site. Het "netjes uitprogrammeren" ipv hardcoden gaat je volgens mij in volgende opdrachten behoorlijk helpen. Nu is het bijvoorbeeld maar 1 "kaart", het kan best zijn dat er deze maand nog een soortgelijke opdracht langskomt met meerdere die verschillende groottes hebben.
Mijn code is zoiets als dit:
:fill(white):strip_exif()/f/image/qxMsSuUyC0VWH90dBCw4s9ri.png?f=user_large)
[ Voor 48% gewijzigd door DataGhost op 03-12-2020 15:25 ]
Nice, ik zou alleen de # die gehit zijn nog rood maken i.p.v. groen, zodat het duidelijker opvalt
“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.”
In eerste instantie had ik gewoon door de vragen heengewerkt en aangepast voor het 2e deel. Maar de volgende ga ik beide oplossingen in de zelfde code houden. het is inderdaad makkelijker om er een functie voor te schrijven.DataGhost schreef op donderdag 3 december 2020 @ 15:07:
[...]
Aangezien het een programmeeropdracht is, zou ik het zo schrijven dat aanpassen van de input geen nadelige gevolgen zou moeten hebben voor je programma. Zowel de test-input die in de tekst van de opdracht staat als je puzzel-input moeten met dezelfde code opgelost worden. Hardcoden brengt je alleen maar dichter in de buurt van een handmatige oplossing met pen en papier. Ook vraag ik me af waarom je yaml gebruikt, dat lijkt me een heftig overbodige omweg zeker in Python. Het is veel makkelijker om de input in te lezen zoals 'ie is. Alle opdrachten hebben twee delen, jouw oplossingen lijken maar slechts 1 van de delen op te kunnen lossen, is dat de bedoeling?
In dit geval heeft het hardcoden het volgens mij juist veel moeilijker gemaakt om deel 2 lekker op te lossen. Bij mij gebruiken deel 1 en 2 dezelfde code, alleen de functie-aanroep is anders. Je kan er elke kaart in gooien die je wilt, gewoon 1:1 als tekstbestand zoals die te downloaden is van de AoC-site. Het "netjes uitprogrammeren" ipv hardcoden gaat je volgens mij in volgende opdrachten behoorlijk helpen. Nu is het bijvoorbeeld maar 1 "kaart", het kan best zijn dat er deze maand nog een soortgelijke opdracht langskomt met meerdere die verschillende groottes hebben.
Mijn code is zoiets als dit:
spoiler:
Yaml gebruikte ik omdat ik er een beetje mee aan het experimenteren ben in een ander programma, maar het voegt hier eigenlijk niks toe.
Vond het eigenlijk al verrassend dat na het draaien ook in een keer de juiste getallen had op de website. Als werktuigbouwer heb ik erg de neiging om maar even het programma opnieuw te draaien met een rekenmachientje
A resident of the Netherlands, but not yet very versed in the language. Thought I'd try and stick around and see if I can at least follow your discussions
Was wederom makkelijk om te doen.
//edit
Ben ik de enige die het grid als 1D-array heeft gedefinieerd?
Ik kwam dit truukje ooit in een youtube-video tegen. Met row * width + col kun je de index uitrekenen in een 1 dimensionale array zodat je hem op die manier kunt gebruiken als 2d-array.
[ Voor 52% gewijzigd door WernerL op 03-12-2020 19:25 ]
Roses are red, violets are blue, unexpected '{' on line 32.
Ik vind dat ik de opdrachten nog aardig snel oplos in python. Ik ben pas 2 weken op aan het studeren.
Maar van oplossingen van anderen in python snap ik nog niet eens wat er gebeurd
At dawn on the fifth day look to the east
“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.”
Roses are red, violets are blue, unexpected '{' on line 32.
Een array van pointers naar arrays zal bijvoorbeeld waarschijnlijk wel langzamer zijn, aangezien daar een extra stap van indirectie is. Een multidimensionale array kan gewoon een gedefinieerde vorm van het accessen van een blok geheugen zijn, vergelijkbaar met wat jij zelf doet.
Disclaimer: het is natuurlijk wel taal afhankelijk hoe het geïmplementeerd is, dus in jouw geval zou ik het ook niet 100% zeker weten
Ik heb gewoon een array van strings gebruikt, waar de string eigenlijk ook gewoon weer een array is natuurlijk. Het converteren naar wat anders kost waarschijnlijk meer tijd dan er gewoon direct over itereren
[ Voor 37% gewijzigd door Woy op 03-12-2020 20:31 ]
“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.”
Mijn code:
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
Heb even wat verder gezocht en het schijnt soms wel een verschil te kunnen maken. Maar in mijn geval inderdaad waarschijnlijk niet. In JavaScript kan een string ook gewoon als array gebruikt worden.Woy schreef op donderdag 3 december 2020 @ 20:09:
@WernerL het is ook geen verwijt, en uitproberen moet je zeker doen. Maar het is wel handig om te weten wat het verschil is, want anders is het meestal beter om voor de best leesbare optie te kiezen.
Een array van pointers naar arrays zal bijvoorbeeld waarschijnlijk wel langzamer zijn, aangezien daar een extra stap van indirectie is. Een multidimensionale array kab gewoon een gedefinieerde vorm van het accessen van een blok geheugen zijn, vergelijkbaar met wat jij zelf doet.
Disclaimer: het is natuurlijk wel taal afhankelijk hoe het geïmplementeerd is, dus in jouw geval zou ik het ook niet 100% zeker wetenmeten is weten. In C is dat bij een statisch gedefinieerde array wel zo, in C# heb je het verschil tussen een multidimensionale array array[x,y] en arrays van arrays array[x][y].
Ik heb gewoon een array van strings gebruikt, waar de string eigenlijk ook gewoon weer een array is natuurlijk. Het converteren naar wat anders kost waarschijnlijk meer tijd dan er gewoon direct over itereren
Ik kwam toevallig op stackoverflow nog een uitgebreide reactie tegen: https://stackoverflow.com...-or-2d-array-whats-faster
Dus it depends.
Goed, weer iets geleerd in ieder geval.
Roses are red, violets are blue, unexpected '{' on line 32.
Deel 2 zou peanuts zijn. Althans dat dacht ik.
Ik heb hetzelfde uitkomst met de korte voorbeeld data dump zoals in de opdracht staat beschreven. Echter met de echte data dan klopt de waarde niet.
Wat gaat hier fout?That's not the right answer; your answer is too low. If you're stuck, make sure you're using the full input data; there are also some general tips on the about page, or you can ask for hints on the subreddit. Please wait one minute before trying again. (You guessed 90209024.) [Return to Day 3]
https://github.com/com2gh...main/kotlin/day3/Part2.kt
Wat er bij ons allemaal fout ging: Past x1 * x2 * x3 * x4 * x5 in 32 bits?
Siditamentis astuentis pactum.
Ja, dat is specifiek voor C(++), en dan ook specifiek over dynamische arrays, dat is nog weer een ander verhaal dan met statische arraysWernerL schreef op donderdag 3 december 2020 @ 20:32:
[...]
Ik kwam toevallig op stackoverflow nog een uitgebreide reactie tegen: https://stackoverflow.com...-or-2d-array-whats-faster
Vandaar inderdaad de disclaimer. Moraal is vooral dat je goed moet weten wat het verschil is om te kunnen bepalen of het nut heeft. Dus je moet het met realistische data meten, of in depth kennis hebben. Standaard zou ik gewoon voor de best leesbare versie kiezen totdat je gegronde reden hebt om het anders te doen
“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.”
Godver...Varienaja schreef op donderdag 3 december 2020 @ 20:52:
[...]
Wat er bij ons allemaal fout ging: Past x1 * x2 * x3 * x4 * x5 in 32 bits?
Werkt inderdaad. Danku!
Is een mooie Chrome plugin om meer info over de private leaderboards te krijgen!
Neen, die kende ik nog nietZieglerNichols schreef op donderdag 3 december 2020 @ 21:29:
Was deze al voorbij gekomen voor de nieuwe AoC deelnemers dit jaar? : https://chrome.google.com...bokofodhhjpipflmdplipblbe
Is een mooie Chrome plugin om meer info over de private leaderboards te krijgen!
Ik heb veel tijd verknooid door de laatste lege regel van de input weg te smijten bij het kopiëren.
[ Voor 27% gewijzigd door Varienaja op 04-12-2020 08:11 ]
Siditamentis astuentis pactum.
Dit lijkt op "shit dat scherm moet om 9 uur live, maar iemand is vergeten de validaties in te bouwen. Doe jij dat nog even voordat de gebruikers inloggen?"Varienaja schreef op vrijdag 4 december 2020 @ 06:55:
O.M.G. Wat een opgave... ik heb m'n code nog niet gepushed, want het is nog een rommeltje. Ik heb nog wel wat tijd nodig voor een presentabele oplossing. Eerst maar eens aankleden, ontbijten en de kinderen klaar maken voor school.
En dan hopen dat je je technical debt volgende sprint op de backlog krijgt
Ik wil het nog opschonen... maarja.
https://github.com/rj-cod.../rjcoding/aoc2020/Day4.kt
[ Voor 16% gewijzigd door armageddon_2k1 op 04-12-2020 08:09 ]
Engineering is like Tetris. Succes disappears and errors accumulate.
Een goed begin van de dagThat's not the right answer; your answer is too low. Curiously, it's the right answer for someone else; you might be logged in to the wrong account or just unlucky.
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
Dit is de mijne van dag 4: https://github.com/Dricus...tofcode/year2020/Day04.kt
Ik vond hem weer heel goed te doen. En Kotlin begin ik steeds meer te waarderen, vooral omdat je er zo heerlijk functional-style mee kunt programmeren!
Stel niet uit tot morgen wat je vandaag nog tot morgen kunt uitstellen...
https://github.com/rverst.../blob/main/Y2020/Day04.cs
Er zijn nog wel wat verbeteringen te doen, maar op zich is het wel acceptabele leesbare code.
“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.”
Ik ben niet zo thuis in de Java wereld, maar heeft Java die functionaliteit niet? Of werkt het gewoon niet zo goed?Dricus schreef op vrijdag 4 december 2020 @ 08:20:
Leuk om ook nog andere Kotlin oplossingen te zien!
Dit is de mijne van dag 4: https://github.com/Dricus...tofcode/year2020/Day04.kt
Ik vond hem weer heel goed te doen. En Kotlin begin ik steeds meer te waarderen, vooral omdat je er zo heerlijk functional-style mee kunt programmeren!
Mother north, how can they sleep while their beds are burning?