Advent of Code 2016 Vorige deel Overzicht Volgende deel Laatste deel

Dit topic is onderdeel van een reeks. Ga naar het meest recente topic in deze reeks.

Pagina: 1 2 3 Laatste
Acties:

Acties:
  • +1 Henk 'm!

  • - peter -
  • Registratie: September 2002
  • Laatst online: 30-05 22:44
Ook dit jaar is de adventskalender van Advent of Code er weer, wat betekent dat je elke dag 2 kleine maar leuke programmeerproblemen kan oplossen.

Vorig jaar deden er een hoop tweakers mee, en hopelijk kunnen we dat dit jaar herhalen!

De website:
http://www.adventofcode.com

We hebben ook een leaderbord voor tweakers, waar je je voor kan aanmelden:
http://adventofcode.com/leaderboard/private/view/42329

Om je daar aan te melden, join hier http://adventofcode.com/leaderboard/private met code:
code:
1
42329-ef862a1b




Overzicht deelnemers die hun code in een repo beschikbaar hebben gesteld:

UserRepoTaal
Lyehttps://github.com/JStege1206/AdventOfCode2016Kotlin
Apachehttp://stash.rotate-it.be/projects/AOC/repos/kris/browseKotlin
Camuloshttps://github.com/fluttert/AdventOfCodeC#
vliegnerdhttps://github.com/tomkooij/AdventOfCodePython
Bee.nlhttps://github.com/zoem/adventofcode/tree/master/2016PHP
P_Tingenhttps://github.com/patrickTingen/adventOfCode_2016Progress ABL
- peter -https://github.com/peterdk/adventofcode2016Ruby
Soultakerhttps://github.com/maksverver/AdventOfCodePython
Ventieldopjehttps://github.com/mdeboer/adventofcode-2016PHP
sylvesterrrhttps://bitbucket.org/hgokduman/adventofcode/srcR
veldslahttps://github.com/veldsla/adventofcodeRust
Rips10https://github.com/RTwTools/AdventOfCodeC++
Daanozhttps://github.com/daanoz/AOC2016Javascript
momaniahttps://github.com/momania/adventofcode_2016Scala
Twiekahttps://github.com/blamorph/AdventOfCode2016C++
Daedalushttps://github.com/mcbor/adventofcodePython
-ko-http://stash.rotate-it.be/projects/AOC/repos/bas/browsePython


Wil je ook in deze lijst? DM - peter - even met a) de link naar je code en b) de taal/talen die je gebruikt.

[ Voor 31% gewijzigd door - peter - op 04-01-2017 15:08 ]


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:22

Ventieldopje

I'm not your pal, mate!

Wauw, ontging dit gave evenement mij toch bijna! :X Snel mee doen:o

Zojuist de opdracht voor dag 1 afgerond en te vinden op GitHub :7

spoiler:
Bij stap 2 kwam ik even aan het kijken omdat ik bij stap 1 met grote stappen snel thuis bleek te zijn. Toen ik dat eenmaal door had was het ook zo opgelost *O*
- peter - schreef op vrijdag 2 december 2016 @ 19:30:
Is t niet praktischer om een aparte Advent of Code 2016 thread aan te maken? Dan is de startpost ook weer relevant, en kunnen de repo's van dit jaar daar ook in.
Maakt dat het niet een béétje onoverzichtelijk nu we twee topics hebben? Zou beter zijn als een mod hier een slotje op zou doen en de reacties kan verplaatsen :)

[ Voor 37% gewijzigd door Ventieldopje op 02-12-2016 22:36 ]

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Het lijkt wel alsof het met de dag makkelijker wordt. :)

Acties:
  • 0 Henk 'm!

  • Mebus
  • Registratie: September 2006
  • Laatst online: 29-04 16:15
sylvesterrr schreef op zaterdag 3 december 2016 @ 12:47:
Het lijkt wel alsof het met de dag makkelijker wordt. :)
Die eerste snap ik nog niet helemaal, de tweede heb ik nu opgelost in PHP, maar ook die had ik eerst verkeerd berekend doordat ik dacht dat het 1 lange string was 8)7

Zometeen even kijken of ik een GitHub account heb en zien of ik ook zin heb om de andere puzzels op te lossen.

BABYMETAL LoL - Twitch


Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

sylvesterrr schreef op zaterdag 3 december 2016 @ 12:47:
Het lijkt wel alsof het met de dag makkelijker wordt. :)
Eerlijk gezegd zat ik echt even te prutsen om dag 3 opdracht b voor elkaar te krijgen. Het is natuurlijk eenvoudig in elkaar te hacken, maar om het mooi en (in het geval van python) "pythonic" te doen, vond ik nog een uitdaging. Wel wat meer geleerd over zip()

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

sylvesterrr schreef op zaterdag 3 december 2016 @ 12:47:
Het lijkt wel alsof het met de dag makkelijker wordt. :)
Dag 3 is wel bizar simpel. De uitleg bij deel 2 was niet helemaal helder geschreven, maar feitelijk niets anders dan per 3 getallen verticaal inlezen. Overigens hoef je niet alle zijdes te controleren. De twee kortste zijdes moeten langer zijn dan de overgebleven (langste) zijde.

Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Oh, dat is wel een slimme truc. Ik had eerst de transpositie expliciet uitgeschreven maar met de zip()-truc is het korter.

De tl;dr is dat je een matrix kunt transponeren (=spiegelen over de hoofddiagonaal) met:
Python:
1
x = zip(*x)


Om even uit te leggen waarom dat werkt: zip neemt een willekeurig aantal lijsten als argumenten, en genereert een lijst van tuples, waarbij elke tuple een element uit elke lijst bevat. Klinkt ingewikkeld maar een voorbeeld maakt veel duidelijk:

Python:
1
zip([1, 2, 3], ['foo', 'bar', 'baz']) == [(1, 'foo'), (2, 'bar'), (3, 'baz')]


Als de argumenten rijen van een matrix zijn, dan is het resultaat dus een tuple met eerste element van elke rij, het tweede element van elke rij, enzovoorts.

Verder kun je in Python een functie die een willekeurig aantal argumenten neemt aanroepen met een lijst, met de f(*x) syntax. f(*x) is equivalent aan f(x[0], x[1], ...) met het verschil dat het aantal argumenten niet bij voorbaat vaststaat. Gecombineerd met zip is dat dus een generieke manier om een matrix te transponeren.

Python:
1
2
3
4
5
6
7
8
9
x = [(1, 2, 3),
     (4, 5, 6),
     (7, 8, 9)]

x = zip(*x)

assert x == [(1, 4, 7),
             (2, 5, 8),
             (3, 6, 9)]


(Dit werkt natuurlijk ook voor niet-vierkante matrices.)

Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

Soultaker schreef op zaterdag 3 december 2016 @ 15:56:

De tl;dr is dat je een matrix kunt transponeren (=spiegelen over de hoofddiagonaal) met:
Python:
1
x = zip(*x)
Ja, dat wist ik dus ook niet. (Gevonden op stackoverflow)

Ik gebruikte eerst numpy (diff) om de matrix van driehoeken te transponeren, maar dit werkt natuurlijk eleganter.

Ik gebruik numpy veel, ook voor werk, maar voor dit soort dingen vind ik plain Python toch eleganter.

Mooie korte oplossing trouwens, Soultaker!

[ Voor 3% gewijzigd door vliegnerd op 03-12-2016 16:13 ]

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:22

Ventieldopje

I'm not your pal, mate!

Dag 3 ook opgelost inderdaad, best wel wat ruimte voor optimalisatie maar daar heb ik nu gewoon even geen tijd voor :Y)

Stap 1 had ik in no time voor elkaar, dat is peanuts. Stap 2 zat ik vooral in de knoei met de uitleg wat nou precies de bedoeling was. Toen ik dat eenmaal door had was de uitwerking daarvan ook niet zo moeilijk.

Dag 2 moet ik nog doen, die leek op het eerste gezicht een stuk meer werk dan dag 3 maar daar heb ik me denk ik dankzij stap 2 wel iets op verkeken denk ik :+ Enfin, die komt nog wel.

Dag 3 in PHP

@Soultakers, wauw mooie stukjes korte code! Bijna niet te lezen als je niet erg thuis bent in Python maar als het werkt .. ;)

[ Voor 9% gewijzigd door Ventieldopje op 03-12-2016 16:27 ]

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Camulos
  • Registratie: Januari 2009
  • Laatst online: 01-06 14:27

Camulos

Stampert

Had bij Dag 3 vooral ruzie met de input (dubbele & triple spaties, ipv van de enkele zoals in het voorbeeld).
Gelukkig was daar de StringSplitOptions.RemoveEmptyEntries , die dat oploste :)
Code dag 3 (C#)

Heeft C# ook functies zoals Map en Zip ? (kon het niet zo snel vinden)
Die code van VliegNerd en Soultaker ziet er echt top uit!

[ Voor 15% gewijzigd door Camulos op 03-12-2016 16:48 ]

Not just an innocent bystander


Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Ventieldopje schreef op zaterdag 3 december 2016 @ 16:25:
Stap 1 had ik in no time voor elkaar, dat is peanuts. Stap 2 zat ik vooral in de knoei met de uitleg wat nou precies de bedoeling was. Toen ik dat eenmaal door had was de uitwerking daarvan ook niet zo moeilijk.
Dag 1 heb je anders nog best complex opgelost :o Maar ik neem voor AoC ook niet echt de moeite om netjes in classes te schrijven. Hooguit wat (anonymous) functions. Ik vind het altijd wel leerzaam om te kijken naar oplossingen van anderen, zelfs als de taal anders is. Soms kom je mooiere oplossingen tegen waar je zelf nog niet aan gedacht had of waarvan je het bestaan niet afwist.
@Soultakers, wauw mooie stukjes korte code! Bijna niet te lezen als je niet erg thuis bent in Python maar als het werkt .. ;)
De python oplossingen zijn vaak erg kort maar toch best elegant. Ter vergelijking is php nogal verbose en mist dergelijke krachtige functies. Veel AoC opdrachten berusten op uitvoerige array operaties en de beschikbare array_* functies zijn vrij beperkt.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Volgens mij wordt het tijd om met Python aan de slag te gaan. :+ Ik loop zo nu en dan toch tegen de beperkingen van R aan waardoor m'n code niet altijd even netjes is. :$

Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 15:25

P_Tingen

omdat het KAN

Camulos schreef op zaterdag 3 december 2016 @ 16:47:
Had bij Dag 3 vooral ruzie met de input (dubbele & triple spaties, ipv van de enkele zoals in het voorbeeld).
Gelukkig was daar de StringSplitOptions.RemoveEmptyEntries , die dat oploste :)
Code dag 3 (C#)

Heeft C# ook functies zoals Map en Zip ? (kon het niet zo snel vinden)
Die code van VliegNerd en Soultaker ziet er echt top uit!
In mijn 4GL viel dat me juist mee. Ik kan gewoon een array van 3 elementen definiëren:
code:
1
DEFINE VARIABLE iSide AS INTEGER EXTENT 3 NO-UNDO.


En dan binnen een repeat lus steeds met 1 statement drie getallen inlezen en controleren:
code:
1
2
3
4
5
6
REPEAT :
  IMPORT iSide.
  IF    iSide[1] + iSide[2] > iSide[3]
    AND iSide[1] + iSide[3] > iSide[2]
    AND iSide[2] + iSide[3] > iSide[1] THEN iValid = iValid + 1.
END.

De 4GL is kennelijk slim genoeg om extra spaties te negeren :) Kekke functies als zip() in Python heb ik dan weer niet. Deel 2 heb ik opgelost door extra arrays te definieren, die series van 3 in te lezen en dan per kolom te checken via een functie.

[ Voor 7% gewijzigd door P_Tingen op 03-12-2016 20:04 ]

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Ik heb gewoon in notepad++ met een paar keer vervangen een 2d-array van de input gemaakt en die in mijn code geplakt.

Acties:
  • +1 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Camulos schreef op zaterdag 3 december 2016 @ 16:47:
Heeft C# ook functies zoals Map en Zip ? (kon het niet zo snel vinden)
Zip weet ik niet precies, maar in C# kun je met LINQ veel bereiken. Select is bijvoorbeeld vergelijkbaar met map() in Python.

Acties:
  • 0 Henk 'm!

  • Camulos
  • Registratie: Januari 2009
  • Laatst online: 01-06 14:27

Camulos

Stampert

Soultaker schreef op zaterdag 3 december 2016 @ 20:09:
[...]
Zip weet ik niet precies, maar in C# kun je met LINQ veel bereiken. Select is bijvoorbeeld vergelijkbaar met map() in Python.
doh 8)7 helemaal niet zo snel aan gedacht.. want met LINQ kun je met zijn mooie fluent-syntax veel awesome voor elkaar krijgen! Straks meteen kijken of ik zo'n linq-query kan bakken :)

edit: De enige reden dat ik LINQ meestal niet gebruik in programming challenges is dat het (af en toe een significante) overhead geeft.

[ Voor 12% gewijzigd door Camulos op 03-12-2016 20:45 ]

Not just an innocent bystander


Acties:
  • 0 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Het wordt ook allemaal simpeler als je de onderdelen beter scheidt. Eerst input parsen naar iets dat bruikbaar is bv een 2d-array van ints (ikzelf heb deze stap in notepad++ gedaan). Daarna een lijst driehoeken maken (ik heb dit met reguliere for-loopjes gedaan). Dan tellen hoeveel er geldig zijn met bv triangles.Count(t => t.IsValid())

Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 00:07

Lye

Wat wel jammer is van Java's (en daarmee ook Kotlin) streams is dat zip geen variabel aantal argumenten kan ontvangen. Zip kan maar 2 lijsten aan elkaar ritsen, toch eentje te kort helaas. Daarom heb ik voor de tweede opdracht maar een andere implementatie gekozen.
De eerste opdracht was zeker makkelijk met behulp van een paar aan elkaar geplakte streams.

Acties:
  • 0 Henk 'm!

  • - peter -
  • Registratie: September 2002
  • Laatst online: 30-05 22:44
Dag 3 was inderdaad weer een stuk simpeler. Al is het wel even zoeken naar de juiste commands om arrays op te splitsen e.d. Maar wel leuk weer!

Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:22

Ventieldopje

I'm not your pal, mate!

Bee.nl schreef op zaterdag 3 december 2016 @ 16:56:
[...]

Dag 1 heb je anders nog best complex opgelost :o Maar ik neem voor AoC ook niet echt de moeite om netjes in classes te schrijven. Hooguit wat (anonymous) functions. Ik vind het altijd wel leerzaam om te kijken naar oplossingen van anderen, zelfs als de taal anders is. Soms kom je mooiere oplossingen tegen waar je zelf nog niet aan gedacht had of waarvan je het bestaan niet afwist.

[...]

De python oplossingen zijn vaak erg kort maar toch best elegant. Ter vergelijking is php nogal verbose en mist dergelijke krachtige functies. Veel AoC opdrachten berusten op uitvoerige array operaties en de beschikbare array_* functies zijn vrij beperkt.
PHP is inderdaad wel erg verbose, zeker voor dit soort simpele taken. Dan ben je voor korte/snelle code denk ik beter af met python :X

Maar ja, qua optimalisatie laat het nog wat te wensen over hoor (voel je vrij zou ik zeggen) maar ik heb mijn best gedaan het leesbaar te houden. :9

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Dag 4 vond ik goed te doen.

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Mja, ik had eigenlijk verwacht dat je voor deel 2 de gefilterde lijst uit deel 1 nodig zou hebben, maar dat bleek niet het geval te zijn. Gemiste kans; er hadden best een paar decoy matches tussen kunnen zitten. (Niet dat het echt veel uitmaakt voor het programmeren van de oplossing, maar toch.)

Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 17:34

momania

iPhone 30! Bam!

Ik ben ook van de partij. :)
https://github.com/momania/adventofcode_2016

Eens zien of de interesse dit jaar langer duurt dan 8 dagen :P

Doe alles in Scala btw.

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • Twieka
  • Registratie: Oktober 2010
  • Laatst online: 01-03 17:06
Vooruit dan maar, c++ met zoveel mogelijk magie :)

https://github.com/blamorph/AdventOfCode2016

Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:22

Ventieldopje

I'm not your pal, mate!

En hup, dag 2 eindelijk ook! Bah, loop nog steeds 1 dag achter (dag 3 had ik al gedaan) :+

https://github.com/mdeboe...ode-2016/tree/master/day2

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 00:07

Lye

Ik vond de beschrijving van de tweede opdracht vandaag erg vaag en ook eigenlijk niet helemaal goed uitgewerkt. Het feit dat je eigenlijk maar handmatig de resultaten moet checken of er iets in zit wat lijkt op "North Pole objects" vind ik niet helemaal cool. De specifieke naam had ook wel gegeven mogen worden.

Verder wel een leuke vandaag, zat wel wat denkwerk in

Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

Dag 4 gedaan (deel A, deel B) in Python.

Handmatig zoeken in deel B is niet nodig :-)

Deel A vond ik eigenlijk best lastig. Net als dag 3 is de oplossing in elkaar hacken geen probleem, maar om het een beetje elegant en vooral leesbaar te houden is niet eenvoudig. EDIT: Dat is dan ook niet echt gelukt. Grappig is wel dat ik bij Soultaker dezelfde tel-sorteer-oplossing zie. Maar dan net weer anders geimplementeerd. Mij lukte het direct sorteren van een dict niet, dus daarom maar een list(set()) constructie gebruikt.

Het blijft lastig lezen die code. Ik wil eigenlijk python code schrijven die je zonder al te veel moeite en zonder commentaar gewoon kan teruglezen. Dat is mij voor dag 4 deel A nog niet gelukt.

[ Voor 35% gewijzigd door vliegnerd op 04-12-2016 19:07 ]

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 00:07

Lye

vliegnerd schreef op zondag 4 december 2016 @ 18:47:
Dag 4 gedaan (deel A, deel B) in Python.

Handmatig zoeken in deel B is niet nodig :-)

Deel A vond ik eigenlijk best lastig. Net als dag 3 is de oplossing in elkaar hacken geen probleem, maar om het een beetje elegant en vooral leesbaar te houden is niet eenvoudig.
Jou oplossing geeft niet gegarandeerd één oplossing, jij print alle namen die "north" bevatten. Daarmee maak je behoorlijke assumpties.

Samen met wat Soultaker al stelde over dat de gefilterde input niet benodigd was voor de tweede opdracht, kan ik alleen maar stellen dat de opdracht gewoon niet van de kwaliteit is die AoC normaal heeft.

[ Voor 8% gewijzigd door Lye op 04-12-2016 19:11 ]


Acties:
  • 0 Henk 'm!

  • ErikKo
  • Registratie: Mei 2009
  • Laatst online: 14:53

ErikKo

Rippie

Mooi spul. Kwam zo'n drie uur geleden dit topic tegen.
Alle dagen meteen bijgewerkt. 8)

Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

Lye schreef op zondag 4 december 2016 @ 19:08:
[...]
Jou oplossing geeft niet gegarandeerd één oplossing, jij print alle namen die "north" bevatten. Daarmee maak je behoorlijke assumpties.
Ja, je hebt gelijk als je stelt dat de opdracht niet eenduidig is. Je moet alle namen decoderen en dan zoeken naar de juiste. Maar in het geval van mijn testcase werkt "north".

EDIT: je punt is duidelijk: Het is geen waterdichte opdracht.

Ik vind het eigenlijk wel leuk op deze manier. Een beetje puzzelen en niet alleen maar een algoritme implementeren.

[ Voor 28% gewijzigd door vliegnerd op 04-12-2016 19:49 ]

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • 0 Henk 'm!

  • Camulos
  • Registratie: Januari 2009
  • Laatst online: 01-06 14:27

Camulos

Stampert

Idd jammer dat je geen 'real' room nodig had voor 4B.

spoiler:
Beetje nitpicking: text van 4b bevat omschrijving 'North Pole' , terwijl de kamer 'northpole object storage' heet -> Spatie gebruik.. het is of 1 woord.. of 2 woorden :P
De complete code van het voorbeeld is trouwens 'qzmt-zixmtkozy-ivhz-343[zimth]' wat naar 'very encrypted name' moet leiden.


Edit: Op elke opgave pagina zit een kleine pun :) met een mouse-over, op bepaalde woorden/frasen.
Kun je hem niet vinden, dan helpt deze snippet wel:
spoiler:
document.querySelectorAll('span[title]')[0].style.backgroundColor = 'yellow';

[ Voor 34% gewijzigd door Camulos op 04-12-2016 23:48 ]

Not just an innocent bystander


Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

Vandaag een opgave uit 2015 op herhaling... 8)7

Vanmorgen om 6u10 aan het ontbijt, met het idee om in de forenzen-trein-rit (op maandag altijd vroeg) de AoC te doen. Maar hij was zo makkelijk dat het onder het ontbijt lukte. (deel A) (deel B)

De opgave van vandaag is eigenlijk een variatie op dag 4 van 2015 (code in python 2, 2016 in python 3). Leuk, maar ook jammer.

Uiteindelijk iets van 223e op het leaderboard! Jammer dat ik niet om 6:00 klaarzat... Ik heb -toen ik zag hoe makkelijk het was- wel geprobeerd het zo snel mogelijk te doen: Mijn "wedstrijdoplossing" heb ik snel in elkaar geprutst. Nu in de trein nog even wat netter gemaakt.

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
M'n laptop is aan het rekenen voor opgave dag 5b. Het zit al op 13 miljoen iteraties, met nog 4 karakters te gaan... :') Voor opgave 5a had ik slechts 5,5 miljoen iteraties nodig.

Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

sylvesterrr schreef op maandag 5 december 2016 @ 08:28:
M'n laptop is aan het rekenen voor opgave dag 5b. Het zit al op 13 miljoen iteraties, met nog 4 karakters te gaan... :') Voor opgave 5a had ik slechts 5,5 miljoen iteraties nodig.
Hij zal nu wel klaar zijn :-)
Met mijn input zijn er 27 miljoen iteraties nodig voor deel 5b. Dat kost een dikke minuut op mijn (langzame i3) laptop in python. EDIT: Ik zie in de subreddit dat het nogal uitmaakt welke taal/library je gebruikt. 25minuten in Java !? Python's hashlib is gelukkig beter (genoeg) geoptimaliseerd.

[ Voor 15% gewijzigd door vliegnerd op 05-12-2016 09:29 ]

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • +1 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
vliegnerd schreef op maandag 5 december 2016 @ 09:22:
[...]


Hij zal nu wel klaar zijn :-)
Met mijn input zijn er 27 miljoen iteraties nodig voor deel 5b. Dat kost een dikke minuut op mijn (langzame i3) laptop in python. EDIT: Ik zie in de subreddit dat het nogal uitmaakt welke taal/library je gebruikt. 25minuten in Java !? Python's hashlib is gelukkig beter (genoeg) geoptimaliseerd.
Kan je vrij weinig over zeggen zonder daadwerkelijk de code van die persoon te zien; hashlib in Java is prima geoptimaliseerd, volgens mij doet 'ie gewoon iets flink fout :P

Edit: Even zelf gemaakt (had er nog niets aan gedaan, nu gewoon net in elkaar geflanst). 5B gedaan in Java 8 met de standaard MessageDigest, kostte een totaal van 26383110 iteraties in 38 seconden. Hoe je dat doet in 25 minuten... Tja :P
Dit is gedaan op een oude i5 (i5-520m), dus het is niet alsof ik lekkere hardware heb :+

[ Voor 20% gewijzigd door Merethil op 05-12-2016 10:54 ]


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
vliegnerd schreef op maandag 5 december 2016 @ 09:22:
[...]


Hij zal nu wel klaar zijn :-)
Met mijn input zijn er 27 miljoen iteraties nodig voor deel 5b. Dat kost een dikke minuut op mijn (langzame i3) laptop in python. EDIT: Ik zie in de subreddit dat het nogal uitmaakt welke taal/library je gebruikt. 25minuten in Java !? Python's hashlib is gelukkig beter (genoeg) geoptimaliseerd.
87 miljoen iteraties en nog 1 karakter te gaan... :')

In de trein en bus kon ik de laptop nog even laten rekenen, maar zodra ik 'm dichtklap om het weer in de tas te doen gaat ie op standby. Gelukkig heeft mijn code een 'resume'-functie. :+

In R doe ik 25K iteraties in ongeveer 1s, tenzij ik 'm op de achtergrond laat draaien.

[ Voor 6% gewijzigd door Mawlana op 05-12-2016 09:51 ]


Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

sylvesterrr schreef op maandag 5 december 2016 @ 09:50:
[...]

87 miljoen iteraties en nog 1 karakter te gaan... :')
O, dat is nogal een verschil met mijn input (27 miljoen). Als je in de top 100 wil komen (na 17 minuten vol vanmorgen) maakt dat eigenlijk gewoon uit. In mijn geval scheelt dat gewoon een paar minuten "rekentijd".

[ Voor 8% gewijzigd door vliegnerd op 05-12-2016 10:06 ]

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Nu online
Het kan behoorlijk verschillen. Volgens mij is de verwachtingswaarde voor het aantal iteraties ongeveer 45 miljoen: 16**5 * 16/8 * (8/8. + 8/7. + 8/6. + 8/5. + 8/4. + 8/3. + 8/2. + 8/1.) = ~45598076. Ik zat zelf op 25 miljoen voor mijn invoer. Dus op basis van het aantal iteraties/seconde kun je voorspellen hoe lang je ongeveer nodig hebt.

[ Voor 19% gewijzigd door Soultaker op 05-12-2016 10:31 ]


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Dat berekenen van 5b duurt lang zeg :9

De eerste 2 karakter werden snel gevonden, nu lijkt het berekenen erg langzaam te gaan.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Ik heb m'n code even herschreven, vertrouw het niet helemaal. :D

Eens kijken hoeveel iteraties ik nodig ga hebben...

Acties:
  • 0 Henk 'm!

  • veldsla
  • Registratie: April 2000
  • Laatst online: 11:23
Hier ook ongeveer 25 miljoen iteraties nodig, runtijd zo'n 10s.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Yep, mijn code was brak. Nu was ie klaar na 26383109 iteraties. :P

Code: https://bitbucket.org/hgo...eviewer=file-view-default

[ Voor 65% gewijzigd door Mawlana op 05-12-2016 11:09 ]


Acties:
  • 0 Henk 'm!

  • veldsla
  • Registratie: April 2000
  • Laatst online: 11:23
sylvesterrr schreef op maandag 5 december 2016 @ 11:06:
Yep, mijn code was brak. Nu was ie klaar na 26383109 iteraties. :P
Poeh, snel is anders hè. Zit trouwens nog een foutje in increment moet nog op incrementStart geïnitialiseerd worden :)

Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Hoe lang duurde het berekenen van 5b bij jullie? Hij is al een half uur aan het rekenen en zit nog niet aan de 10 miljoen iteraties :s

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Bv202 schreef op maandag 5 december 2016 @ 11:23:
Hoe lang duurde het berekenen van 5b bij jullie? Hij is al een half uur aan het rekenen en zit nog niet aan de 10 miljoen iteraties :s
Welke taal doe je 't in? 38 seconden voor 26 miljoen iteraties, een half uur voor nog niet eens 10 miljoen lijkt wel heel erg traag. Nou moet ik zeggen dat ik alleen dingen naar console print aan 't begin en einde, en wanneer er een karakter is gevonden; als je systeem constant staat te printen elke iteratie kan dat waarschijnlijk ook flink vertragen.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
veldsla schreef op maandag 5 december 2016 @ 11:16:
[...]


Poeh, snel is anders hè. Zit trouwens nog een foutje in increment moet nog op incrementStart geïnitialiseerd worden :)
Oeps, een regel te veel verwijderd blijkbaar toen ik m'n logging ging verwijderen. :+

Fixed: https://bitbucket.org/hgo...eviewer=file-view-default

Zoals je in onderstaand overzicht ziet zijn er veel "valse" valide hashes voort part 2. :')
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Increment   Time to find hash   Time to find hash (cumulative)  Hash                                Part 1  Part 2
515840          9.6             9.6                             00000c6c3f533fe4f7b0cb6d851185a8    x   
844745          3.1             12.7                            000006a94bb1c9322cbb56dd8564e76e    x       x
2968550         8.7             21.4                            000006c8c9090315b0fb38154a947c86    x   
4034943         0.2             21.6                            00000970faef6424564944d5e8a59618    x   
5108969         41              62.6                            000007b2e0e83dfeade14ebe09f9e6a7    x       x
5257971         5.6             68.2                            00000bc5fdee6506b09262247ceb63f0    x   
5830668         21              89.2                            0000051079ac6b44fc3a5266a1630d42    x       x
5833677         0.1             89.3                            00000537192966c3ee924306195faede    x   
6497076         4.8             94.1                            0000008239d1bbf480ea541e9da1e494            x
6681564         6.8             100.9                           000008bed8f2fabab6548bb3edd7e8e5        
8793263         7.6             108.5                           0000070bd33213b6ccc4e369b2daa8c1        
8962195         6.2             114.7                           00000351ce68ffb449644d4bfa4cee5d            x
10715437        4.4             119.1                           00000e1da9c24b1aab3a54427e4881e0        
10999728        0.3             119.4                           00000bc7014bff91acabdaa04c2e36b4        
11399249        4.3             123.7                           00000ae3448eda0cf4b03e477d7bb14f        
12046531        3.4             127.1                           00000fe244eb868fbdfb8669c0839638        
12105075        2.2             129.3                           00000729b28151d5bae574bee4cf6953        
14775057        6.5             135.8                           00000f71f44480ec3af1560ac7f6841e        
15502588        6.1             141.9                           00000a7325cc6dab6ca39ad3bccdd46b        
15872452        3.3             145.2                           000005ab6ffd053eb419c0aaf02daa5c        
16105326        8.4             153.6                           00000e65b4ed6759bb5f2274eca5c327        
18804482        8.9             162.5                           00000e095bd1af53252bc7635fa7a5e8        
18830862        1               163.5                           00000583b5bc6e887cea24907e0df958        
19388652        0.4             163.9                           000007ba60bbd28ca93292f666fe58d8        
19474413        3.1             167                             000000acd5e9762a7106c60088550ed9        
20787586        8.8             175.8                           000006ed719910d3d2aac1c5c34309b6        
21302616        8.6             184.4                           00000f03c1b40ba46e7665324fde042b        
23462555        8.4             192.8                           000008e7cf60038c10243b00f3fd7301        
23551279        3.2             196                             00000ef5ef7334a470efea70332d9c07        
23853737        0.9             196.9                           0000075db939b5b10a25ef7a7e610b37        
23867827        0.5             197.4                           000001c3c28bcbacf0f543a33548ef24            x
24090051        8               205.4                           000004d57fc545f376c09f27383b2c88            x
26246522        2.9             208.3                           0000062ad27ec5733af76d15764d4392        
26383109        5.8             214.1                           0000023d12c49f028699d4679ba91780            x

Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Merethil schreef op maandag 5 december 2016 @ 11:26:
[...]


Welke taal doe je 't in? 38 seconden voor 26 miljoen iteraties, een half uur voor nog niet eens 10 miljoen lijkt wel heel erg traag. Nou moet ik zeggen dat ik alleen dingen naar console print aan 't begin en einde, en wanneer er een karakter is gevonden; als je systeem constant staat te printen elke iteratie kan dat waarschijnlijk ook flink vertragen.
C#...

Het berekenen van de MD5 hash heb ik wel gewoon van het internet gekopieërd. Hoogstwaarschijnlijk niet een erg snelle oplossing 8)7

[ Voor 12% gewijzigd door Bv202 op 05-12-2016 11:29 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Bv202 schreef op maandag 5 december 2016 @ 11:28:
[...]


C#...
Het berekenen van de MD5 hash heb ik wel gewoon van het internet gekopieërd. Hoogstwaarschijnlijk niet een erg snelle oplossing 8)7
Doe je elke keer opnieuw een berekening of ga je verder na de laatste hash die je hebt gevonden? Dat kan ook een flink verschil maken..

Je gebruikt wel gewoon de ingebouwde MD5-oplossing van .NET toch? (Deze?)

[ Voor 37% gewijzigd door Merethil op 05-12-2016 11:30 ]


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Merethil schreef op maandag 5 december 2016 @ 11:29:
[...]


Doe je elke keer opnieuw een berekening of ga je verder na de laatste hash die je hebt gevonden? Dat kan ook een flink verschil maken..
Hoe kan je verder werken met de laatste hash die gevonden is? 1 teken verschil levert toch steeds een heel andere hash op?

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Bv202 schreef op maandag 5 december 2016 @ 11:30:
[...]


Hoe kan je verder werken met de laatste hash die gevonden is? 1 teken verschil levert toch steeds een heel andere hash op?
Sorry, ik bedoelde dat je je volggetal dat je aan je secret toevoegt niet telkens opnieuw op 0 start, maar gewoon verder gaat na de laatste die je hebt gevonden.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Ik had in R 214s nodig voor ~27 miljoen iteraties, inclusief tussentijdse output.

Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Merethil schreef op maandag 5 december 2016 @ 11:31:
[...]


Sorry, ik bedoelde dat je je volggetal dat je aan je secret toevoegt niet telkens opnieuw op 0 start, maar gewoon verder gaat na de laatste die je hebt gevonden.
Uiteraard, anders lijkt het me wel héél inefficiënt.

Dit is mijn code:



Ik zie niet meteen wat ik verkeerd doe...

EDIT:
Oh ja, die continue verhoogt m'n count niet 8)7 8)7 8)7 8)7

[ Voor 8% gewijzigd door Bv202 op 05-12-2016 11:36 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Bv202 schreef op maandag 5 december 2016 @ 11:34:
[...]


Uiteraard, anders lijkt het me wel héél inefficiënt.

Dit is mijn code:



Ik zie niet meteen wat ik verkeerd doe...
Probeer eens éénmaal je MD5 digest instance aan te maken ipv elke iteratie die je doet. Verder ziet 't eruit als hoe ik 't in Java deed, en die verschillen nou niet zoveel qua performance in dit soort opzichten.
EDIT:
Oh ja, die continue verhoogt m'n count niet 8)7 8)7 8)7 8)7
Ah dat heb ik ook tweemaal gedaan tijdens het testen :+

[ Voor 12% gewijzigd door Merethil op 05-12-2016 11:37 ]


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Dat was dus het probleem, maar het resultaat
spoiler:
E99828EC
dat ik nu krijg, is incorrect. Ergens gaat dus nog iets fout, maar ik zie niet waar precies...

Ik vermoed dat 1 van mijn gevonden resultaten overschreven wordt, dus dat maar even berekenen...

[ Voor 26% gewijzigd door Bv202 op 05-12-2016 11:50 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Bv202 schreef op maandag 5 december 2016 @ 11:47:
Dat was dus het probleem, maar het resultaat
spoiler:
E99828EC
dat ik nu krijg, is incorrect. Ergens gaat dus nog iets fout, maar ik zie niet waar precies...

Ik vermoed dat 1 van mijn gevonden resultaten overschreven wordt, dus dat maar even berekenen...
Technisch gezien kunnen ze allemaal een keer overschreven zijn, aangezien je niet checkt of je 'm al hebt.
Ik zou trouwens gewoon een array gebruiken ipv een dictionary, maar da's meer voorkeur :P

Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Merethil schreef op maandag 5 december 2016 @ 11:52:
[...]


Technisch gezien kunnen ze allemaal een keer overschreven zijn, aangezien je niet checkt of je 'm al hebt.
Ik zou trouwens gewoon een array gebruiken ipv een dictionary, maar da's meer voorkeur :P
Goh, dat was het probleem dus niet. Geen flauw benul wat ik fout doe...

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Bv202 schreef op maandag 5 december 2016 @ 11:52:
[...]


Goh, dat was het probleem dus niet. Geen flauw benul wat ik fout doe...
Ik zie dat je Add gebruikt dus dat kan dan idd niet, alhoewel de Add() functie op een dictionary blijkbaar een error gooit als de key al gevonden is, wat ik niet gewend ben, vandaar m'n verwarring :+
Is je input wel correct trouwens?

[ Voor 10% gewijzigd door Merethil op 05-12-2016 11:55 ]


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Merethil schreef op maandag 5 december 2016 @ 11:53:
[...]


Ik zie dat je Add gebruikt dus dat kan dan idd niet, alhoewel de Add() functie op een dictionary blijkbaar een error gooit als de key al gevonden is, wat ik niet gewend ben, vandaar m'n verwarring :+
Is je input wel correct trouwens?
M'n input is correct. Met het voorbeeld "abc" krijg ik ook een ander resultaat, dus ergens zit in m'n algoritme nog een foutje.

EDIT:
Juist, int.TryParse geeft boolean false terug bij het falen en geen exception. Het is maandag voor een reden :+

[ Voor 11% gewijzigd door Bv202 op 05-12-2016 12:06 ]


Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Bv202 schreef op maandag 5 december 2016 @ 11:57:
[...]


M'n input is correct. Met het voorbeeld "abc" krijg ik ook een ander resultaat, dus ergens zit in m'n algoritme nog een foutje.

EDIT:
Juist, int.TryParse geeft boolean false terug bij het falen en geen exception. Het is maandag voor een reden :+
Sneaky... Ik vroeg me al af hoe je dan een int hoort te krijgen maar daar heb je die out-parameter voor natuurlijk. Allemaal toffe dingen die Java niet heeft, dus die ik nu pas echt zie :+

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Bv202 schreef op maandag 5 december 2016 @ 11:47:
Dat was dus het probleem, maar het resultaat
spoiler:
E99828EC
dat ik nu krijg, is incorrect. Ergens gaat dus nog iets fout, maar ik zie niet waar precies...

Ik vermoed dat 1 van mijn gevonden resultaten overschreven wordt, dus dat maar even berekenen...
Met input cxdnnyjw heb je 25.370.047 iteraties nodig. :P Zie hieronder de passwords.

spoiler:
weg


Ah, je hebt de fout al gevonden zie ik. :+

[ Voor 7% gewijzigd door Mawlana op 05-12-2016 12:31 ]


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Ik zou de oplossingen hier ook niet posten, zelfs niet in spoiler-tags :)

Acties:
  • 0 Henk 'm!

Anoniem: 823835

Als je met 'magie', 'boost' bedoelt om alles onnodig 'ingewikkeld' te maken door alles in te wikkelen, well done!

het kan natuurlijk erger :p gewoon well done :)

[ Voor 9% gewijzigd door Anoniem: 823835 op 05-12-2016 13:15 ]


Acties:
  • 0 Henk 'm!

  • veldsla
  • Registratie: April 2000
  • Laatst online: 11:23
sylvesterrr schreef op maandag 5 december 2016 @ 11:32:
Ik had in R 214s nodig voor ~27 miljoen iteraties, inclusief tussentijdse output.
Overigens duurt jouw script bij mij aanzienlijk langer (>20min bezig, nog geen output). Ik krijg alleen een fatsoenlijke runtijd (~ 250s) in R(3.2.3) als ik de boel in batches verwerk.

Ah. Klaar:
> system.time(source("b2.R"))
    user   system  elapsed 
1941.724    1.576 1944.988 

Hij loopt nu op R 3.3.1 op een andere bak (alle linux)
Ook klaar > 30min


Mijn R script

[ Voor 27% gewijzigd door veldsla op 05-12-2016 13:23 ]


Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
veldsla schreef op maandag 5 december 2016 @ 12:35:
[...]

Overigens duurt jouw script bij mij aanzienlijk langer (>20min bezig, nog geen output). Ik krijg alleen een fatsoenlijke runtijd (~ 250s) in R(3.2.3) als ik de boel in batches verwerk.
R version 3.3.1 (2016-06-21) -- "Bug in Your Hair"
Copyright (C) 2016 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)

Op een laptop met Intel Core i5-5300 CPU @ 2.30 GHz en 8GB geheugen, met daarop Windows 7 x64 geïnstalleerd.

Op de voorgrond of achtergrond draaien levert wel flinke verschillen op heb ik gemerkt. :)

Eens kijken of ik 3.2.3 nog op de laptop heb staan, dan kan ik het ook daarmee testen.

[ Voor 6% gewijzigd door Mawlana op 05-12-2016 12:41 ]


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 00:07

Lye

Heb ik toch nog even zitten aankloten vandaag.. Het had niet zo moeilijk moeten zijn, ik kreeg alleen niet de goede hashes.. Ik geef de schuld aan decafe "koffie" en een gebrek aan slaap.

Uiteindelijk een prima oplossing gebouwd, waarbij 5b in 25 miljoen iteraties en ±11 seconden opgelost is.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
25 miljoen iteraties in 11 seconden? Damn, R is blijkbaar niet echt geschikt voor bruteforcing. :+

Acties:
  • 0 Henk 'm!

  • veldsla
  • Registratie: April 2000
  • Laatst online: 11:23
Je kunt altijd nog overstappen op (5b in) julia (~19s)

Maar ik vind het taaltje niet zo fijn en blijf lekker bij Rust. Is op mijn bak nog 2x zo snel!

Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 00:07

Lye

sylvesterrr schreef op maandag 5 december 2016 @ 13:57:
25 miljoen iteraties in 11 seconden? Damn, R is blijkbaar niet echt geschikt voor bruteforcing. :+
Je kunt mogelijk nog een hoop snelheid besparen door de binary form te gebruiken (raw=true meegeven aan digest()), en dan op byte niveau controleren of de hash voldoet. Op die manier scheelt het per iteratie (maximaal) 11 bytes converteren naar een string, met 25m iteraties tikt dat toch wel eventjes aan.

Overigens, met het verwijderen van generieke code en het niet checken van bepaalde constraints is 5b naar 10s te krijgen. Echter hou ik het liever wel generiek :P

[ Voor 13% gewijzigd door Lye op 05-12-2016 14:12 ]


Acties:
  • 0 Henk 'm!

  • - peter -
  • Registratie: September 2002
  • Laatst online: 30-05 22:44
Ik had 71 seconden nodig voor 5b in Ruby. 26,3 miljoen iteraties. Toch nog vrij snel, maar komt denk ik doordat Ruby een C implementatie van MD5 heeft . (update: 53 secondes met het niet gebruiken van een regex maar een 'begin_with?')

Was verder niet een heel ingewikkelde opdracht. Maar op zich wel leuk om zo even mee te klooien. :)

Mooie code trouwens Soultaker, Python lijkt toch wel veel op Ruby, en het is inspirerend om je cleane code te lezen!

[ Voor 49% gewijzigd door - peter - op 05-12-2016 16:45 ]


Acties:
  • +1 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Hmmm... De komende tijd maar eens verdiepen in de verschillende talen. Python heeft m'n voorkeur vanwege de data science community. :P

Ik heb de Python code van vliegnerd even geprobeerd: 43s op mijn laptop.

[ Voor 22% gewijzigd door Mawlana op 05-12-2016 14:30 ]


Acties:
  • 0 Henk 'm!

  • Camulos
  • Registratie: Januari 2009
  • Laatst online: 01-06 14:27

Camulos

Stampert

Bv202 schreef op maandag 5 december 2016 @ 11:23:
Hoe lang duurde het berekenen van 5b bij jullie? Hij is al een half uur aan het rekenen en zit nog niet aan de 10 miljoen iteraties :s
Ik zag dat je ook C# gebruikte, heb hier 25 miljoen hashes in 100 seconden gedaan; met de reference MD5 implementatie zoals op MSDN staat.
BTW het scheelde bij mij vele secondes als je de MD5.Create() static maakt en buiten de functie plaatst (ipv inline met 'using', omdat hij anders voor elke hash een MD5 object maakt.. dus dat scheelt 25 miljoen objecten om te garbage-collecten bij 5B.

Complete code voor Part 1 en Part 2: https://github.com/flutte...fCode/Challenges/Day05.cs

[ Voor 16% gewijzigd door Camulos op 05-12-2016 17:25 ]

Not just an innocent bystander


Acties:
  • 0 Henk 'm!

  • Ventieldopje
  • Registratie: December 2005
  • Laatst online: 10:22

Ventieldopje

I'm not your pal, mate!

Shit, vandaag nog geen tijd gehad om te doen, misschien later vanavond nog maar dan. Klinkt wel erg spannend met die hashes! :)

www.maartendeboer.net
1D X | 5Ds | Zeiss Milvus 25, 50, 85 f/1.4 | Zeiss Otus 55 f/1.4 | Canon 200 f/1.8 | Canon 200 f/2 | Canon 300 f/2.8


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 00:07

Lye

Camulos schreef op maandag 5 december 2016 @ 17:16:
[...]


Ik zag dat je ook C# gebruikte, heb hier 25 miljoen hashes in 100 seconden gedaan; met de reference MD5 implementatie zoals op MSDN staat.
BTW het scheelde bij mij vele secondes als je de MD5.Create() static maakt en buiten de functie plaatst (ipv inline met 'using', omdat hij anders voor elke hash een MD5 object maakt.. dus dat scheelt 25 miljoen objecten om te garbage-collecten bij 5B.

Complete code voor Part 1 en Part 2: https://github.com/flutte...fCode/Challenges/Day05.cs
Wat nog meer objecten scheelt is het niet converteren naar een string. Als je de byte array al hebt is "begint met 5 nullen" gelijk aan de eerste 2,5 byte gelijk aan 0. Dat scheelt én een StringBuilder allocatie, én een String allocatie én 16 append aanroepen per iteratie.

Het kost wel iets meer moeite om de gevraagde data te krijgen. Om te checken of de eerste 5 tekens 0 zijn doe je dan iets in de richting van
C#:
1
digest[0] == 0 && digest[1] == 0 && (digest[2] & 0xF0) == 0


Het zesde teken is dan
C#:
1
digest[2] & 0x0F

en het zevende teken
C#:
1
((uint)digest[3]) >> 4

Of iets in die richting, mijn C# kennis is vrij bagger

Acties:
  • 0 Henk 'm!

  • Daedalus
  • Registratie: Mei 2002
  • Niet online

Daedalus

Moderator Apple Talk

Keep tryin'

Ik doe ook mee, voornamelijk in Python (https://github.com/mcbor/adventofcode). Heb dag 1 wel opgelost met een stukje turtle graphics :Y)

Moest voor dag 5 wel drie keer lezen om door te hebben hoe ze het wachtwoord genereerden, maar daarna was het simpel. Vind het alleen wel flauw dat brute-force de enige oplossing lijkt te zijn.

“You know what I've noticed Hobbes? Things don't bug you if you don't think about them. So from now on, I simply won't think about anything I don't like, and I'll be happy all the time!” | 宇多田ヒカル \o/


Acties:
  • 0 Henk 'm!

  • Lye
  • Registratie: Januari 2010
  • Laatst online: 00:07

Lye

Overigens maakt de taal wel erg veel uit. Met Kotlin kom ik op 11 seconden, met een quick and dirty C scriptje ben ik na om en nabij de 7,5 seconde al klaar.

Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Zelfs PHP (weliswaar 7.1) doet er 'slechts' 13 seconden over op mijn verouderde server met Athlon II X2 245. Versie 5.6 is merkbaar trager en heeft er 24 seconden voor nodig.

De opdracht kwam op mij over als een herhaling van vorig jaar en blijkbaar is dat dus ook zo. Weer erg simpel. Het is vooral een kwestie van goed lezen. Ik ging bij 5b namelijk even de fout in met het overschrijven van posities die al ingevuld waren. Het zal wel steeds wat moeilijker worden. Vorig jaar zaten er een paar best wel lastige opgaves bij richting het einde.
Daedalus schreef op maandag 5 december 2016 @ 18:18:
Vind het alleen wel flauw dat brute-force de enige oplossing lijkt te zijn.
Jup. Meestal is er een soort 'shortcut' in het algoritme mogelijk naast de gebruikelijke 'bruteforcing' van combinatoriek of grid- en hashcalculaties. Dat vertelde de bedenker ergens eens op Reddit. Hij moet namelijk alle mogelijke inputs en answers van tevoren genereren, dus dat moet wel een beetje efficiënt zijn.

[ Voor 41% gewijzigd door Bee.nl op 05-12-2016 20:29 ]


Acties:
  • 0 Henk 'm!

  • Camulos
  • Registratie: Januari 2009
  • Laatst online: 01-06 14:27

Camulos

Stampert

Lye schreef op maandag 5 december 2016 @ 18:14:
[...]
Wat nog meer objecten scheelt is het niet converteren naar een string.
Het kost wel iets meer moeite om de gevraagde data te krijgen. Om te checken of de eerste 5 tekens 0 zijn doe je dan iets in de richting van
C#:
1
digest[0] == 0 && digest[1] == 0 && (digest[2] & 0xF0) == 0
Cool, vette tip! _/-\o_ !
Ben ermee aan de slag gegaan, maar had wat moeite om slechts 1 deel van de Byte-array terug te krijgen naar char. Uiteindelijke verbetering: van 131 seconden naar 73 seconden (complete opgave 5: 5A+5B); dus bijna een minuut sneller! :o

Dit werkte perfect
code:
1
(digest[0] == 0 && digest[1] == 0 && (digest[2] & 0xF0) == 0)

Daarna de BitConverter gebruikt om slechts delen van de byte-array om te zetten naar 2-letterige strings: zoals
C#:
1
string characters = BitConverter.ToString(digest, 2, 1);

(signature van deze ToString:public static string ToString(byte[] value, int startIndex, int length){...} )

Complete C# code hier

[ Voor 9% gewijzigd door Camulos op 05-12-2016 21:04 ]

Not just an innocent bystander


Acties:
  • 0 Henk 'm!

  • -ko-
  • Registratie: Oktober 2006
  • Laatst online: 26-05 16:23

-ko-

Leidend Voorwerp

Ik doe ook mee, in Python wel eens waar. Ik ben 'bij' op dit moment (10 sterren)

Had gisteren veel moeite met day 4 part one op iets wat achteraf heel makkelijk bleek. :+

http://stash.rotate-it.be/projects/AOC/repos/bas/browse

Wa Doede Nou


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 28-05 16:11
5b doet er bij mij 7s over, inclusief een sprintf in de loop. (Optimizations vol aan >:) )

[ Voor 19% gewijzigd door farlane op 06-12-2016 01:41 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
De opgave van vandaag was absurd simpel. Voor deel 2 moest ik gewoon de OrderBy-volgorde veranderen |:(

Acties:
  • 0 Henk 'm!

  • veldsla
  • Registratie: April 2000
  • Laatst online: 11:23
4 regeltjes R, maar ik heb beloofd dat ik het in rust zou doen dus ik zal nog even een versie in elkaar knallen.

Ik hoop wel dat het niveau nog wat hoger wordt. Vorig jaar zaten er best wel wat leuke opgaven tussen.

[ Voor 15% gewijzigd door veldsla op 06-12-2016 09:33 ]


Acties:
  • 0 Henk 'm!

  • vliegnerd
  • Registratie: Augustus 2003
  • Laatst online: 18:05

vliegnerd

Nintendo fan.

Ja, vandaag was "niet echt" een uitdaging.

Het is wel leuk om het tijdens het ontbijt te kunnen doen, maar ik hoop toch op wat meer uitdaging.

4,8kW ZO-NW PVOutput 8x300Wp ZO 12 graden. 8x300Wp NW 12 graden.


Acties:
  • 0 Henk 'm!

  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
Ontwikkelaar op Reddit:
I hope everyone has been enjoying Advent of Code! Today ends the warmup puzzles. It's uphill from here!
Vanaf morgen zal het dus lastiger worden :)

Acties:
  • 0 Henk 'm!

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Vandaag was wel erg makkelijk; ik kon zelfs in mijn PHP-oplossing 1 karakter weghalen (arsort -> asort) om de tweede puzzel op te lossen :P

Ben benieuwd naar morgen!

Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 15:25

P_Tingen

omdat het KAN

Bv202 schreef op dinsdag 6 december 2016 @ 09:02:
De opgave van vandaag was absurd simpel. Voor deel 2 moest ik gewoon de OrderBy-volgorde veranderen |:(
Idem hier. Ik moest echt letterlijk alleen het woord 'descending' weghalen. Ik zat langer naar het scherm te kijken, me afvragend of dit het echt was, dan dat ik bezig was.

Die van gisteren kostte me aardig meer tijd, maar daar zat ik nogal lang te klooien met een HEX implementatie die niet eens nodig bleek te zijn (koffie was wel nodig kennelijk). Na een enorme bak code gemaakt te hebben, een kop koffie en vervolgens een enorme bak code verwijderd te hebben bleef dit over:
code:
1
2
3
4
5
6
7
8
9
10
11
DO WHILE TRUE:
  cHex = STRING(HEX-ENCODE(MD5-DIGEST('ugkcyxxp' + STRING(iIndex)))).
  IF cHex BEGINS '00000' THEN 
  DO:
    cPassword = cPassword + SUBSTRING(cHex,6,1).
    IF LENGTH(cPassword) = 8 THEN LEAVE.
  END.
  iIndex = iIndex + 1.
END.

MESSAGE cPassword VIEW-AS ALERT-BOX INFO BUTTONS OK.

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • Rips10
  • Registratie: November 2008
  • Laatst online: 09-05 19:15
P_Tingen schreef op dinsdag 6 december 2016 @ 10:52:
[...]
Idem hier. Ik moest echt letterlijk alleen het woord 'descending' weghalen. Ik zat langer naar het scherm te kijken, me afvragend of dit het echt was, dan dat ik bezig was.
hehe inderdaad, even controleren of dat echt alles was :P Daarnaast kon ik de uitkomst eerst ook niet geloven, aangezien ik een leesbaar woord had verwacht.

Acties:
  • 0 Henk 'm!

  • Mawlana
  • Registratie: Juli 2002
  • Laatst online: 17:30
Vandaag was het echt simpel...

[ Voor 18% gewijzigd door Mawlana op 06-12-2016 11:27 ]


Acties:
  • 0 Henk 'm!

  • Bee.nl
  • Registratie: November 2002
  • Niet online

Bee.nl

zoemt

Bv202 schreef op dinsdag 6 december 2016 @ 10:02:
Ontwikkelaar op Reddit:

[...]

Vanaf morgen zal het dus lastiger worden :)
Gelukkig. Dit voelde echt als een day 1 opdracht :X

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 16:20
Ugh, ik heb hier niet genoeg tijd voor. Ik probeer alles in een functionele taal te doen. Aangezien ik had besloten een jaar lang alleen dat te doen. Aan het begin van dat jaar is het stiekem nog best pittig :+
Heb wel eindelijk dag 1 af en koste me 'maar' een uur incl. syntax leren van f# ^^

Acties:
  • 0 Henk 'm!

  • P_Tingen
  • Registratie: Maart 2005
  • Laatst online: 15:25

P_Tingen

omdat het KAN

Het nivo gaat omhoog kennelijk; het aantal mensen dat strandt op de eerste is nu al hoger dan gisteren. Vandaag al ruim 300 mensen die een zilveren ster hebben, tegen 115 gisteren de hele dag.

... en gaat over tot de orde van de dag


Acties:
  • 0 Henk 'm!

  • ThaStealth
  • Registratie: Oktober 2004
  • Laatst online: 11:51
P_Tingen schreef op woensdag 7 december 2016 @ 09:33:
Het nivo gaat omhoog kennelijk; het aantal mensen dat strandt op de eerste is nu al hoger dan gisteren. Vandaag al ruim 300 mensen die een zilveren ster hebben, tegen 115 gisteren de hele dag.
Was gister ook een stuk hoger in het begin van de dag, veel mensen maken de eerste puzzel, worden gestoord en gaan 's middags pas verder met de 2e.

Puzzel was niet veel lastiger dan die van gister.

Ik stoor me er wel aan dat ik geen hoge notering kan halen omdat ik geen zin heb om om 06:00 op te staan voor een opdracht te maken. Kom 15 min eerder werken en maak hem dus van 8:15 tot 8:30. Maar nu haal ik dus geen punten...

Misschien is het eerlijker om een top 100 te maken van snelste tijden van openen puzzel tot oplossing invoeren (nadeel is dat je dan weer mensen met 2 accounts hebt die 1 account gebruiken voor het maken van de puzzel en het 2e voor een spreedrun.

Mess with the best, die like the rest


Acties:
  • 0 Henk 'm!

  • Camulos
  • Registratie: Januari 2009
  • Laatst online: 01-06 14:27

Camulos

Stampert

De opdracht van vandaag was er een van goed lezen :)
Btw, zonder regexes en splits kunnen oplossen 8)

Bij 7A had deze testcase wat moeite xyyx[bddb] (was al aan het breaken bij eerste hit zonder de bracket verder op te testen); deze testcase does not support TLS!

Voor 7B vergeten om juist te breaken bij eerste match -> aaa[kek]eke[kek]eke telt maar als 1 (en niet als 3 :X 8)7 )

oplossing in C#

Not just an innocent bystander


Acties:
  • 0 Henk 'm!

  • Rips10
  • Registratie: November 2008
  • Laatst online: 09-05 19:15
Dat zijn precies de twee problemen die ik ook tegen kwam, lezen blijft lastig
quote: AOC
the IP also must not have an ABBA within any hypernet sequences
Gelukkig zal het nog wel even duren voordat we IPv7 nodig hebben :+

Mijn oplossing

[ Voor 21% gewijzigd door Rips10 op 07-12-2016 11:32 ]


Acties:
  • 0 Henk 'm!

  • veldsla
  • Registratie: April 2000
  • Laatst online: 11:23
Same here.

Wel tevreden met uiteindelijke progje. Weer wat dingen uit de stdlib gebruikt die ik nog niet eerder heb ingezet zoals flat_map, filter_map, windows en match_indices. Sowieso flink op de Iterators geleund.

Acties:
  • 0 Henk 'm!

  • renebe
  • Registratie: Maart 2016
  • Laatst online: 18-04-2020
Kun je op de aoc site ook later nog een link naar je github toe voegen? Bij settings kan ik alleen een link naar google+ activeren.
Voor de geinteresseerden is hier mijn java oplossing voor vandaag.

Acties:
  • 0 Henk 'm!

  • tha_crazy
  • Registratie: Maart 2007
  • Laatst online: 16:18

tha_crazy

Mafketel

Ik ben ook maar eens bezig, echter krijg ik het aantal blocks bij dag 1 (ja ik begin pas vandaag) niet voor elkaar, weet wel het punt waarop die eindigt, maar zit even met het probleem te berekenen hoe groot de afstand daar nou voor is.

Had m'n case iets te onzorgvuldig gekopieerd 8)7

[ Voor 11% gewijzigd door tha_crazy op 07-12-2016 14:22 ]


Acties:
  • 0 Henk 'm!

  • - peter -
  • Registratie: September 2002
  • Laatst online: 30-05 22:44
Nou, vandaag viel op zich ook wel mee. Alleen dat er meerdere hypernet sequences waren ontging mij de eerste keer even. ;)

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 16:20
Ik zie gewoon niet wat ik fout doe bij dag 2. De test input geeft het correcte resultaat, maar de echte input niet :S Iemand zin om mee te kijken?

Acties:
  • +1 Henk 'm!

  • renebe
  • Registratie: Maart 2016
  • Laatst online: 18-04-2020
Caelorum schreef op woensdag 7 december 2016 @ 19:52:
Ik zie gewoon niet wat ik fout doe bij dag 2. De test input geeft het correcte resultaat, maar de echte input niet :S Iemand zin om mee te kijken?
Ik ben niet zo goed in het lezen van F# code, maar het lijkt alsof je van 6 naar 7 gaat met een R instructie.

Acties:
  • 0 Henk 'm!

  • Caelorum
  • Registratie: April 2005
  • Laatst online: 16:20
renebe schreef op woensdag 7 december 2016 @ 19:59:
[...]
Ik ben niet zo goed in het lezen van F# code, maar het lijkt alsof je van 6 naar 7 gaat met een R instructie.
Ugh... damn dat is dom ^^ Dank je! Daar had ik zeker nog twee dagen op gezeten |:( :X

*edit* dan ook maar mijn oplossing: https://gist.github.com/a...8e17a4a78c6db846fe6384efd

[ Voor 14% gewijzigd door Caelorum op 07-12-2016 20:26 ]

Pagina: 1 2 3 Laatste