1
0
Fork 0
mirror of https://github.com/HenkKalkwater/aoc-2020 synced 2024-11-22 11:05:18 +00:00

Day 2, puzzle 1

This commit is contained in:
Chris Josten 2020-12-02 17:53:43 +01:00
parent f6a49daaf9
commit a29b28b303
Signed by: chris
GPG key ID: 1795A594046530AB
4 changed files with 1031 additions and 2 deletions

1000
in/2.txt Normal file

File diff suppressed because it is too large Load diff

View file

@ -6,12 +6,14 @@ import std.stdio;
import std.getopt;
import day1;
import day2;
import dayutil;
immutable string progName = "aoc-2020";
void function(string[])[] programs = [
&day1.run
&day1.run,
&day2.run
];
void printUsage(string name) {

27
source/day2.d Normal file
View file

@ -0,0 +1,27 @@
import std.algorithm;
import std.format;
import std.stdio;
import dayutil;
bool isPasswordValid(T)(T line) {
int min, max;
char c;
string password;
line.formattedRead("%d-%d %c: %s", min, max, c, password);
ulong charCount = password.count(c);
return min <= charCount && charCount <= max;
}
void run(string[] args) {
ulong count = stdin.byLine
.count!(l => isPasswordValid(l));
writeln(count);
}
unittest {
assert(isPasswordValid("1-3 a: abcde") == true);
assert(isPasswordValid("1-3 b: cdefg") == false);
assert(isPasswordValid("2-9 c: ccccccccc") == true);
}