Voor de volgende opdrachten zal ik in Haxe verdergaan, want die taal is sinds recent mijn goto hobbytaal.
Dear Sir/Madam, Fire! Fire! Help me! Looking forward to hearing from you.
Dat had ik ook alleen dan met sprintf in plaats van memcpy in C, had niet verwacht dat de strings zo groot zouden worden, maar ik had ook niet gezien dat je lengte moest opsturen in plaats van het getal, als ik dat wist had ik het wel kunnen weten aangezien ze meestal vragen om een redelijk korte input en geen string van zoveel tekens.Niekfct schreef op donderdag 10 december 2015 @ 13:02:
Oef, ik ben in de valkuil getrapt om in de JVM twee strings te concatenaten ipv een StringBuilder te gebruiken. Ga ik van (geschat) 3 uur naar 1 seconde
Wow scheelt dat zoveel. Ik gebruik String.Concat in C# maar 50 duurt enorm lang.Niekfct schreef op donderdag 10 december 2015 @ 13:02:
Oef, ik ben in de valkuil getrapt om in de JVM twee strings te concatenaten ipv een StringBuilder te gebruiken. Ga ik van (geschat) 3 uur naar 1 seconde
Kun je de voor / na situatie laten zien? Puur interesse.Niekfct schreef op donderdag 10 december 2015 @ 13:02:
Oef, ik ben in de valkuil getrapt om in de JVM twee strings te concatenaten ipv een StringBuilder te gebruiken. Ga ik van (geschat) 3 uur naar 1 seconde
https://niels.nu
In Go duurde 50 zo lang dat ik hem ook maar ben gaan herschrijvenMegamind schreef op donderdag 10 december 2015 @ 17:47:
[...]
Wow scheelt dat zoveel. Ik gebruik String.Concat in C# maar 50 duurt enorm lang.
In Go:Hydra schreef op donderdag 10 december 2015 @ 18:19:
[...]
Kun je de voor / na situatie laten zien? Puur interesse.
Resultaat met een string array:
Part 1: The length of the resulting string is 492982, the array calculation took 413.338139ms
Resultaat met een string concat:
Part 1: The length of the resulting string is 492982, the concat calculation took 30.918618495s
En dat is pas de 40 passes.
De 50 passes:
Resultaat met een string array:
Part 2: The length of the resulting string is 6989950, the array calculation took 6.301855518s
Resultaat met een string concat:
Part 2: The length of the resulting string is 6989950, the concat calculation took 1h33m5.249396374s
[ Voor 56% gewijzigd door Pizzalucht op 10-12-2015 20:35 ]
Lekker een beetje met scala spelen en proberen om het een beetje handig te doen. Want kom er vaak genoeg weer achter dat als ik iets probeer te maken, het al in de taal zelf zit
Leuk tijdverdrijf dit!
Over de leesbaarheid valt te twisten, maar ik vind het leuk om zoveel mogelijk in LINQ te proppen, zoals bij 06.02.
Mother north, how can they sleep while their beds are burning?
Zeg dat ja, "meer" van hetzelfde...Woy schreef op donderdag 10 december 2015 @ 09:56:
[...]
Ja inderdaad, het tweede deel was ook weinig creatief.
"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
Heb je het ook met append geprobeerd? Dat is de officiële manier om slices te concatenaten.Pizzalucht schreef op donderdag 10 december 2015 @ 18:23:
In Go duurde 50 zo lang dat ik hem ook maar ben gaan herschrijven(mijn geduld is na 1 minuut wel op) Gebruikte eerst ook concat.
Blijkbaar was deel 2 wel lastig als je voor het eerste deel een Shlemiel the Painter algoritme geïmplementeerd had. Dat lijkt wel voor veel mensen hier te gelden. Wees maar trots dat je zelf in één keer de goede oplossing geïmplementeerd had.Creepy schreef op donderdag 10 december 2015 @ 21:46:
Zeg dat ja, "meer" van hetzelfde...
[ Voor 40% gewijzigd door Soultaker op 10-12-2015 21:59 ]
Op mijn system deel 2 onder de 150ms met een StringBuilder. En met een string concatenation zit ik na 14 seconden op iteratie 16 en na 54 seconden op iteratie 17. Ik had niet het geduld om te wachten tot 50.
Dan kost part 1 zelfs al een hele hoop tijdSoultaker schreef op donderdag 10 december 2015 @ 21:49:
Blijkbaar was deel 2 wel lastig als je voor het eerste deel een Shlemiel the Painter algoritme geïmplementeerd had. Dat lijkt wel voor veer mensen hier te gelden. Wees maar trots dat je zelf in één keer de goede oplossing geïmplementeerd had.
[ Voor 44% gewijzigd door Creepy op 10-12-2015 23:08 ]
"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
Dat is inderdaad wat ik in mijn rewrite heb gebruikt. Een string is echter geen slice (je kan hem wel als slice benaderen, tekst[1:], maar je kan er geen append op doen).Soultaker schreef op donderdag 10 december 2015 @ 21:49:
[...]
Heb je het ook met append geprobeerd? Dat is de officiële manier om slices te concatenaten.
[...]
Blijkbaar was deel 2 wel lastig als je voor het eerste deel een Shlemiel the Painter algoritme geïmplementeerd had. Dat lijkt wel voor veel mensen hier te gelden. Wees maar trots dat je zelf in één keer de goede oplossing geïmplementeerd had.
Heb er nu een []string (had op zich ook wel een []rune kunnen zijn) van gemaakt waarbij elke letter een string in de array is, daarop doe ik dan een append. Dan is het redelijk snel. Zie bovenstaande stats.
Ik heb ook een poging gedaan om dit via een parallelle operatie te doen en ik kwam uit op een besparing van ongeveer 65%.Down schreef op woensdag 09 december 2015 @ 13:50:
Heeft iemand day 4 part 2 nog multithreaded opgelost?
Dit zijn ook mijn eerste stapjes in C# dus er is veel googlen en lelijke code bij.
[ Voor 4% gewijzigd door Zombaya op 10-12-2015 23:32 . Reden: Altijd juiste url bijgezet ]
Zombaya
...met daarbij wel 't risico dat je de éérste mistte en de eerst gevonden returnedeZombaya schreef op donderdag 10 december 2015 @ 23:29:
[...]
Ik heb ook een poging gedaan om dit via een parallelle operatie te doen en ik kwam uit op een besparing van ongeveer 65%.
There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.
Je eigen tweaker.me redirect
Over mij
De functie geeft enkel terug of hij een match heeft gevonden, resultaten print ik direct.
Of ik versta je verkeerd en je bedoelt dat er ergens anders een fout zit, kan ook.
[ Voor 1% gewijzigd door Zombaya op 11-12-2015 00:35 . Reden: verduidelijking ]
Zombaya
Coding in the cold; <brrrrr />
Zal iets in de trend zijn van (pseudo) :Hydra schreef op donderdag 10 december 2015 @ 18:19:
[...]
Kun je de voor / na situatie laten zien? Puur interesse.
1
2
3
4
5
6
7
8
9
10
11
| String current = "1113122113";
String n = "";
for (i in 1..40 ) {
for(c : current) {
String s = lookAndSay(c); // Where the magic happens, returned bijv "23" voor "2 times 3"
n += s;
}
current = n;
n = "";
} |
Naar:
1
2
3
4
5
6
7
8
9
10
11
| String current = "1113122113";
StringBuilder n = new StringBuilder();
for (i in 1..40 ) {
for(c : current) {
String s = lookAndSay(c);
n.append(s);
}
current = n.toString();
n = new StringBuilder();
} |
Iets in die richting.
De 40 iteratie versie gaat van 26 seconden naar 150 milliseconden.
Dear Sir/Madam, Fire! Fire! Help me! Looking forward to hearing from you.
Ja, ik had minstens nog wat andere security rules verwacht.emnich schreef op vrijdag 11 december 2015 @ 09:47:
Vandaag vond ik wel weer leuk, weer niet echt moeilijk maar wel leuk om te doen. Alleen jammer van deel 2...
“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.”
Inderdaad nog wat extra regels of op z'n minst de andere kant op. Nu was deel 2 alleen lastig voor mensen die het met de hand dedenWoy schreef op vrijdag 11 december 2015 @ 11:49:
[...]
Ja, ik had minstens nog wat andere security rules verwacht.
“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 betrap mezelf er wel op dat ik vaak te moeilijk probeer te denken.
Dag 5 heb ik uiteindelijk met een simple regexes opgelost.
Vanavond/morgen eens naar de opdracht voor dag 6 gaan kijken.
[ Voor 19% gewijzigd door Down op 11-12-2015 19:24 ]
Mother north, how can they sleep while their beds are burning?
"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
Ik heb het gedaan met Linq in C#, maar om nou te zeggen dat het nou zo leesbaar is.momania schreef op zondag 06 december 2015 @ 19:07:
Mijn code ook maar even op github gezet: https://github.com/momania/adventofcode
Opdracht 5, tweede deel doet nog niet wat ik wil, maar ik wil het niet met een regex doen
Wel leuk om uit te werken.
Mother north, how can they sleep while their beds are burning?
Linq is leuk en mooi, maar meestal niet zo best voor de leesbaarheid.Down schreef op vrijdag 11 december 2015 @ 22:28:
[...]
Ik heb het gedaan met Linq in C#, maar om nou te zeggen dat het nou zo leesbaar is.
Wel leuk om uit te werken.
A software developer is someone who looks both left and right when crossing a one-way street.
Dat is in mijn code helemaal niet echt een special case eigenlijk, en had dus ook prima gewerkt.Creepy schreef op vrijdag 11 december 2015 @ 21:44:
En dag 11 af.. Ik had al rekening gehouden met een eventuele instinker voor deel 2, komt die niet....
spoiler:Ik had een overflow verwacht van zzzzzzzz naar aaaaaaaaa...
“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.”
Als ik een JSON parser gebruikt had was het wat eenvoudiger geweest, maar zelf parsen is natuurlijk leuker om 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.”
Mijn algoritme bij 12 - 2:
- Ik zoek de grenzen van het object of array op waarbij ik rekening houd met nesting.
- Als het een object is sla ik de begin- en eind-indices op; dit zijn er 60
- Ik filter de kleine objectjes eruit die in een grotere met "red" vallen; er blijven er 50 over
- Ik vervang die objecten door een lege string ""
- Ik gebruik het sommatie-algoritme van het eerste deel (gaf daar het goede antwoord)
- Mijn uitkomst is 71473 en dat is dus fout
[ Voor 9% gewijzigd door Daos op 12-12-2015 15:38 ]
Een regex is voldoende voor 2. Ik zag zelfs iemand die een vim commando gebruikteWoy schreef op zaterdag 12 december 2015 @ 13:59:
Vandaag was opdracht 2 wel een leuke toevoeging waardoor ik voor de tweede oplossing een compleet andere manier gebruikt heb dan voor de eerste.
Als ik een JSON parser gebruikt had was het wat eenvoudiger geweest, maar zelf parsen is natuurlijk leuker om te doen.
Dan ben ik wel benieuwd hoe je deel 2 oplost met regex. Deel 1 heb ik inderdaad ook gewoon i.c.m. een regex gedaan, maar bij deel 2 zou ik zo snel geen oplossing weten te bedenken.Megamind schreef op zaterdag 12 december 2015 @ 15:35:
[...]
Een regex is voldoende voor 2. Ik zag zelfs iemand die een vim commando gebruikte
“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.”
Kwam ook een mooie oplossing in Ruby tegen voor dag 10 die gebruikt maakt van de chunk{} operator. Die kende ik nog niet en die groepeert op opeenvolgende matches. Wordt de oplossing wel heel clean van!
[ Voor 48% gewijzigd door - peter - op 12-12-2015 18:27 ]
Ik heb mijn code niet bewaard maar zoiets werkt bij mij:Woy schreef op zaterdag 12 december 2015 @ 17:14:
[...]
Dan ben ik wel benieuwd hoe je deel 2 oplost met regex. Deel 1 heb ik inderdaad ook gewoon i.c.m. een regex gedaan, maar bij deel 2 zou ik zo snel geen oplossing weten te bedenken.
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
| private static Regex Number = new Regex("-?\\d+", RegexOptions.Compiled);
private static Regex Brackets = new Regex("\\[[^[{\\]}]*\\]", RegexOptions.Compiled);
private static Regex Braces = new Regex("\\{[^[{\\]}]*\\}", RegexOptions.Compiled);
private static int Day12Part2(string input)
{
bool didsomething;
do
{
didsomething = false;
string temp = Brackets.Replace(input, SumObject);
if (temp != input)
{
didsomething = true;
input = temp;
}
temp = Braces.Replace(input, SumBraces);
if (temp != input)
{
didsomething = true;
input = temp;
}
} while (didsomething);
return Day12(input);
}
private static int Day12(string input) =>
Number.Matches(input).Cast<Match>().Select(m1 => int.Parse(m1.Value)).Sum();
private static string SumBraces(Match m) => m.Value.Contains("red") ? "0" : SumObject(m);
private static string SumObject(Match m) => Day12(m.Value).ToString(); |
Ok, maar dit is natuurlijk niet echt een pure Regex oplossing. Je bent hier gewoon inside out aan het parsen, waarbij je regexen gebruikt om deelstukken te matchen.Megamind schreef op zaterdag 12 december 2015 @ 18:23:
[...]
Ik heb mijn code niet bewaard maar zoiets werkt bij mij:
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 30private static Regex Number = new Regex("-?\\d+", RegexOptions.Compiled); private static Regex Brackets = new Regex("\\[[^[{\\]}]*\\]", RegexOptions.Compiled); private static Regex Braces = new Regex("\\{[^[{\\]}]*\\}", RegexOptions.Compiled); private static int Day12Part2(string input) { bool didsomething; do { didsomething = false; string temp = Brackets.Replace(input, SumObject); if (temp != input) { didsomething = true; input = temp; } temp = Braces.Replace(input, SumBraces); if (temp != input) { didsomething = true; input = temp; } } while (didsomething); return Day12(input); } private static int Day12(string input) => Number.Matches(input).Cast<Match>().Select(m1 => int.Parse(m1.Value)).Sum(); private static string SumBraces(Match m) => m.Value.Contains("red") ? "0" : SumObject(m); private static string SumObject(Match m) => Day12(m.Value).ToString();
“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.”
"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, da's wel een creatieve oplossing ja. (Je moet wel meerdere keren over de invoer heen, maar het is allicht makkelijker dan een JSON parser schrijven.)Megamind schreef op zaterdag 12 december 2015 @ 18:23:
Ik heb mijn code niet bewaard maar zoiets werkt bij mij:
code:
1 8<
Mwah, het hoeft geen volledige parser te zijn, want de set is aardig beperkt. Ik heb het met relatief eenvoudige code gewoon geparsed. (https://github.com/rverst...aster/AdventOfCode/A12.cs)Soultaker schreef op zaterdag 12 december 2015 @ 21:32:
[...]
Ah, da's wel een creatieve oplossing ja. (Je moet wel meerdere keren over de invoer heen, maar het is allicht makkelijker dan een JSON parser schrijven.)
“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.”
Weet niet echt of t veel toevoegd, maar heb er een aangemaakt voor tweakers:
1
| 42329-ef862a1b |
Wel knap! Welke taal gebruik je?Megamind schreef op zondag 13 december 2015 @ 06:22:
Eindelijk plekje op het leaderbordDeze was ook weer niet moeilijk.
Ik ben er zelf een uurtje mee bezig geweest in C#.
[ Voor 14% gewijzigd door Daos op 13-12-2015 13:27 ]
Toch maar wat meer opgaven gaan maken. Heb nu pas 5 dagen af.- peter - schreef op zondag 13 december 2015 @ 13:09:
Je kan nu ook private leaderbords aanmaken/joinen.
Weet niet echt of t veel toevoegd, maar heb er een aangemaakt voor tweakers:
code:
1 42329-ef862a1b
Opdracht 13 is inderdaad niet heel lastig. Als je het goed implementeert hoef je nooit meer dan (n-1)!/2 combinaties uit te rekenen. Het is namelijk een circulaire permutatie (n-1)!, waarbij spiegelen hetzelfde resultaat oplevert. Daarom delen door 2. Voor deel 1 maakt dat nog niet veel uit, maar bij deel 2 scheelt het aanzienlijk (~94% minder rekenwerk).
Aangemeld en even bezig, gelijk ook ingeschreven voor het private leaderboard.
Je kunt deel 2 gewoon hetzelfde doen, maar dan zonder wrap-around. Dan is het überhaupt niet meer rekenwerk. edit: Nee, dat is niet waar, want met wrap-around kun je een willekeurig persoon als beginpunt nemen, dus dat scheelt een factor N.Bee.nl schreef op zondag 13 december 2015 @ 15:20:
Daarom delen door 2. Voor deel 1 maakt dat nog niet veel uit, maar bij deel 2 scheelt het aanzienlijk (~94% minder rekenwerk).
Overigens is het verder ook nog te versimpelen tot iets van O(2n * n) als je wat meer moeite doet.
[ Voor 14% gewijzigd door Soultaker op 13-12-2015 16:54 ]
C#, en ik had bijna precies hetzelfde. Alle permutaties bepalen en dan gewoon brute forcen.Daos schreef op zondag 13 december 2015 @ 13:18:
[...]
Wel knap! Welke taal gebruik je?
Ik ben er zelf een uurtje mee bezig geweest in C#.
(Stuur mij een DM met je antwoorden om je oplossing te valideren).
Ik heb hetzelfde gedaan in Java. Gewoon bruteforce, de set is klein genoeg daarvoor.Megamind schreef op zondag 13 december 2015 @ 15:46:
[...]
C#, en ik had bijna precies hetzelfde. Alle permutaties bepalen en dan gewoon brute forcen.
Als ik me verveel eens kijken of ik de set van Soultaker ook gefixt krijg, maar mezelf vervelen de komende dagen gaat er niet van komen denk ik
[ Voor 20% gewijzigd door Creepy op 13-12-2015 17:25 ]
"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
Enfin, 18 sterren!
Mother north, how can they sleep while their beds are burning?
Leuke challenge, maar dat ga ik natuurlijk niet redden met m'n O(½(n-1)!) algoritme met 60x1015 iteratiesSoultaker schreef op zondag 13 december 2015 @ 17:12:
Voor wie dag 13 al af heeft, staat hier een iets grotere invoer: input.txt.
(Stuur mij een DM met je antwoorden om je oplossing te valideren).
Ik liep al snel op een OutOfMemory exceptionSoultaker schreef op zondag 13 december 2015 @ 17:12:
Voor wie dag 13 al af heeft, staat hier een iets grotere invoer: input.txt.
(Stuur mij een DM met je antwoorden om je oplossing te valideren).
My favorite programming language is solder.
Ik heb recursie gebruikt voor dag 12: Day12.ktPuch-Maxi schreef op zondag 13 december 2015 @ 22:50:
Iemand ook al recursie gebruikt om een opdracht op te lossen?
Meer dan eensPuch-Maxi schreef op zondag 13 december 2015 @ 22:50:
Iemand ook al recursie gebruikt om een opdracht op te lossen?
"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
My favorite programming language is solder.
Het dingetje dat ik eerder aankaartte...
...daarvan weet ik nu in ieder geval hoe ik eromheen kan werken en nu ik dit typ, kijk ik nog even in de Google Group waarin ik iets had gepost en zie dat er een reactie is die (met flink wat uitwijdingen) min of meer dezelfde gedachtegang weergeeft als die ik had.Devilly schreef op donderdag 10 december 2015 @ 12:22:
Tijdens de opgaven van de eerste dag stuitte ik op een compilerdingetje wat ik nog steeds niet snap.
Hij is weer up! Bij mij staat alles nog goed.- peter - schreef op maandag 14 december 2015 @ 17:15:
Hmm, adventofcode is down op dit moment. Hopelijk geen data kwijt daar.
"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
LinqAndSay
1
2
| for (int p = 0, id = 0; p < 40; p++) text = string.Join("", text.Select((c, i) => new { c, Id = i == text.Length - 1 ? id : c == text[++i] ? id : id++ }).GroupBy(g => g).Select(g => g.Count() + g.Key.c.ToString())); |
[ Voor 7% gewijzigd door Down op 15-12-2015 01:27 ]
Mother north, how can they sleep while their beds are burning?
M'n Scala implementaties zijn up to date tot en met 14-1. Had wat in te halen; het weekend eigenlijk geen tijd gehad.
https://niels.nu
Code is niet van super kwaliteit, but it does the job... http://codepen.io/collection/XBaNKb/
[ Voor 4% gewijzigd door - peter - op 15-12-2015 16:04 ]
Kleine hint:- peter - schreef op dinsdag 15 december 2015 @ 16:03:
Moeilijke vandaag. Kon er maar niet uitkomen hoe je dynamisch de verschillende mogelijkheden genereert.spoiler:Uiteindelijk maar gewoon hardcoded 4 nested loops gemaakt. Nog wel iets om uit te zoeken.
Daar zat ik idd aan te denken ja. Maar vergt nog wel wat probeerwerkDaos schreef op dinsdag 15 december 2015 @ 17:13:
[...]
Kleine hint:
spoiler:Met recursie is het vrij simpel: maak een functie die alle combinaties teruggeeft aan de hand van het aantal variabelen en de waarde die verdeeld moet worden. Van buiten roep je hem dan aan met 4 en 100.
Doe btw al een tijdje mee met deze puzzles. Goede kans om Python te leren. Github: https://github.com/bakx/AdventOfCode
[ Voor 56% gewijzigd door mrFoce op 15-12-2015 19:52 ]
Die chunk is wel een nuttige functie. Ik doe iets soortgelijks door te groeperen op een id die ik ophoog zodra het huidige item niet gelijk is aan het volgende.- peter - schreef op zaterdag 12 december 2015 @ 17:58:
Dag 11 af. Ik vond m wel moeilijk. Veels te veel code gebruikt, voor wat volgens mij veel makkelijker kan. Ik ga maar even andere solutions bekijken
Kwam ook een mooie oplossing in Ruby tegen voor dag 10 die gebruikt maakt van de chunk{} operator. Die kende ik nog niet en die groepeert op opeenvolgende matches. Wordt de oplossing wel heel clean van!
Mother north, how can they sleep while their beds are burning?
https://niels.nu
$plain = 0;
$notplain = 0;
while ($s = fgets($fd)) {
$s = trim($s);
$plain += strlen($s);
$notplain += eval('return strlen('.$s.');');
}
echo $plain - $notplain;
Heh. Goed. 1.39KB (Scala) versus 3.01 KB (Java) danSoultaker schreef op woensdag 16 december 2015 @ 14:04:
Ja, maar je kunt hetzelfde ook in 1 regel Java bereiken. Dat jij het nu nodig vindt om 82 newline characters in te voegen...
8-2 kun je met een simpele string-replace doen.Radiant schreef op woensdag 16 december 2015 @ 14:06:
Dag 8 opgelost met wat creatief PHP-misbruikGaat niet werken voor part 2 vrees ik
[ Voor 29% gewijzigd door Hydra op 16-12-2015 14:11 ]
https://niels.nu
Mijn oplossing in C# is 1,25KB. Ik gebruik veel anonymous types i.c.m lambda's, dat scheelt veel 'noise'. Ik weet weinig van Java, maar heeft Java dat niet?Hydra schreef op woensdag 16 december 2015 @ 10:25:
Day 16 in Java. Deze was simpel; vooral veel tijd kwijt aan parsen en opbouwen van de data set. Wel de tijd genomen om m'n initiele versie van 113 regels naar 83 terug te brengen.
Mother north, how can they sleep while their beds are burning?
Wel een goede casus om Python's for-else constructie te gebruiken.
[ Voor 17% gewijzigd door Soultaker op 16-12-2015 20:19 ]
Mijn code is te vinden op Github: https://github.com/WebMakeEU/advent/
Wel vind ik het soms nog moeilijk om de opdrachten te vertalen naar Nederlands
[ Voor 22% gewijzigd door henk1994 op 16-12-2015 21:09 ]
In ieder geval gingen de eerste 6 dagen best vlot: https://github.com/marcdejonge/adventofcode
Het feit dat die streams in Java 8 niet serieel zijn, brengt me toch vaak in lastige situaties. Zo is het bijvoorbeeld niet mogelijk 'foldr' achtige functie uit te voeren, omdat deze afhankelijk is van het in volgorde uitvoeren van de data.
Edit:
Wacht, er is wel een 'reduce' methode, waarmee ik wel ongeveer zoiets kan. Al is het nog steeds niet helemaal wat ik zoek...
[ Voor 42% gewijzigd door Marcj op 16-12-2015 22:55 ]
T is for TANK, and T is for TERROR ... and K is the K for KILLING in error.
Je kunt m'n oplossing in Java zien toch? Ik heb een andere aanpak dan jij. Het gaat me er om dat ik in beide sets eigenlijk dezelfde aanpak gebruik en dat dat in Scala minder code oplevert.Down schreef op woensdag 16 december 2015 @ 17:51:
Mijn oplossing in C# is 1,25KB. Ik gebruik veel anonymous types i.c.m lambda's, dat scheelt veel 'noise'. Ik weet weinig van Java, maar heeft Java dat niet?
https://niels.nu
1
| main = interact $ show . length . filter ((150 ==) . sum) . subsequences . map read . lines |
En deel twee is ook alleen maar een extra filter.
Filter deze dan maar evenRaynman schreef op donderdag 17 december 2015 @ 11:27:
Dag 17 was wel erg kort:
Haskell:
1 main = interact $ show . length . filter ((150 ==) . sum) . subsequences . map read . lines
En deel twee is ook alleen maar een extra filter.
44, 23, 32, 18, 42, 29, 45, 5, 48, 31, 27, 14, 12, 26, 46, 14, 35, 18, 18, 46, 50, 37, 46, 25, 50, 25, 44, 22, 26, 6, 29, 43, 39, 37, 7, 31, 32, 35, 26, 1, 11, 10, 14, 43, 29, 20, 42, 4, 16, 35, 45, 33, 40, 47, 25, 26, 41, 16, 1, 8, 30, 48, 48, 17, 22, 3, 18, 2, 41, 14, 28, 35, 31, 6, 27, 1, 47, 43, 47, 49, 27, 5, 30, 26, 10, 20, 3, 43, 33, 35, 13, 1, 7, 10, 47, 16, 26, 22, 14, 31
Overigens heb ik de ballen verstand van Haskell, dus wellicht is het geen probleem
"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
perl obfuscating is nooit mijn sterkste vak geweestSoultaker schreef op woensdag 16 december 2015 @ 20:17:
Mijne was 588 bytes in Python volgens Github maar het kan natuurlijk nog veel kleiner.
Wel een goede casus om Python's for-else constructie te gebruiken.
[ Voor 3% gewijzigd door veldsla op 18-12-2015 08:58 . Reden: Waarom denk ik hier 's nachts aan? ]
Streams zijn toch altijd serieel? Ik weet er niet zo heel veel van, maar zijn ze niet alleen non-serieel als je bijv. een HashSet als source hebt or ParellelStream gebruikt? Lijkt me anders niet echt nuttig.Marcj schreef op woensdag 16 december 2015 @ 22:43:
Het feit dat die streams in Java 8 niet serieel zijn, brengt me toch vaak in lastige situaties. Zo is het bijvoorbeeld niet mogelijk 'foldr' achtige functie uit te voeren, omdat deze afhankelijk is van het in volgorde uitvoeren van de data.
$a=array_values(array_diff(count_chars($i, 0), array(0)));
echo $a[0] - $a[1];
2
$a=explode(PHP_EOL, $i);
foreach($a as $key => $val)
{
$a2=explode('x', $val);
$a[$key] = (2*$a2[0]*$a2[1])+(2*$a2[1]*$a2[2])+(2*$a2[2]*$a2[0])+min(array(($a2[0]*$a2[1]), ($a2[1]*$a2[2]), ($a2[2]*$a2[0])));
}
echo array_sum($a);
Denk dat code 2 nog wel wat netter en korter kan, maar dit is ook al lekker kort en krachtig! $i = input
Nu op naar 3!
Leaderboard