On Sunday, 27 December 2020 at 13:27:49 UTC, oddp wrote:
foreach (group; readText("input").splitter("\n\n")) { ... }
Also, on other days, when the input is more uniform, there's
always https://dlang.org/library/std/file/slurp.html which
makes reading it in even easier, e.g. day02:
alias Record = Tuple!(int, "low", int, "high", char, "needle",
string, "hay");
auto input = slurp!Record("input", "%d-%d %s: %s");
P.S.: would've loved to have had multiwayIntersection in the
stdlib for day06 part2, especially when there's already
multiwayUnion in setops. fold!setIntersection felt a bit clunky.
Oh my, all these things are new to me, haha, thanks a lot! I'll
be looking into those (slurp & tuple). By the way, is there a
reason to use either 'splitter' or 'split'? I'm not sure I see
why the difference would matter in the end.
Sidetangent, don't mean to bash the learning tour, as it's been
really useful for getting started, but I'm surprised stuff like
tuples and files arent mentioned there.
Especially since the documentation tends to trip me up, with
stuff like 'isSomeString' mentioning 'built in string types',
while I haven't been able to find that concept elsewhere, let
alone functionality one can expect in this case (like .length and
the like), and stuff like 'countUntil' not being called
'indexOf', although it also exists and does basically the same
thing. Also assumeUnique seems to be a thing?