day6: solve part 1 & 2

This commit is contained in:
Johannes Loher 2020-12-08 09:13:05 +01:00
parent e99eae4c1f
commit 71f6069359
4 changed files with 4446 additions and 0 deletions

2179
day6/part1/input Normal file

File diff suppressed because it is too large Load diff

37
day6/part1/main.d Normal file
View file

@ -0,0 +1,37 @@
import std.algorithm;
import std.uni;
import std.array;
import std.file;
import std.stdio;
void main()
{
readText("input").calculateTotalNumberOfQuestions.writeln;
}
auto calculateTotalNumberOfQuestions(string input)
{
return input.splitter("\n\n")
.array.map!(group => group.filter!isAlpha.array.sort.uniq.count).sum;
}
unittest
{
auto input = `abc
a
b
c
ab
ac
a
a
a
a
b`;
assert(input.calculateTotalNumberOfQuestions == 11);
}

2179
day6/part2/input Normal file

File diff suppressed because it is too large Load diff

51
day6/part2/main.d Normal file
View file

@ -0,0 +1,51 @@
import std.algorithm;
import std.uni;
import std.array;
import std.file;
import std.stdio;
import std.range;
import std.conv;
import std.string;
void main()
{
readText("input").calculateTotalNumberOfQuestions.writeln;
}
auto setIntersectionRoR(RoR)(RoR ror)
{
assert(!ror.empty);
return ror.map!(to!(dchar[]))
.reduce!((r1, r2) => r1.setIntersection(r2).array);
}
auto calculateTotalNumberOfQuestions(string input)
{
return input.splitter("\n\n").array.map!((group) {
return group.splitter.map!(person => person.representation.dup.sort.array.assumeUTF)
.setIntersectionRoR.count;
}).sum;
}
unittest
{
auto input = `abc
a
b
c
ab
ac
a
a
a
a
b
yx`;
assert(input.calculateTotalNumberOfQuestions == 8);
}