Skip to content

Commit a3dfd54

Browse files
aoc 2015 day 5
1 parent 11e9f96 commit a3dfd54

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

src/main/java/dev/jacobandersen/codechallenges/challenge/adventofcode/year2015/Year2015.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2015.day2.Day2;
66
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2015.day3.Day3;
77
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2015.day4.Day4;
8+
import dev.jacobandersen.codechallenges.challenge.adventofcode.year2015.day5.Day5;
89

910
import java.util.List;
1011

@@ -14,7 +15,9 @@ public static List<Day> getDays() {
1415
new Day1(),
1516
new Day2(),
1617
new Day3(),
17-
new Day4()
18+
// Omitted normally, Day 4 is very slow due to MD5 bruteforce requirement
19+
// new Day4(),
20+
new Day5()
1821
);
1922
}
2023
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package dev.jacobandersen.codechallenges.challenge.adventofcode.year2015.day5;
2+
3+
import dev.jacobandersen.codechallenges.challenge.adventofcode.Day;
4+
5+
import java.util.regex.Pattern;
6+
import java.util.stream.Stream;
7+
8+
public class Day5 extends Day {
9+
public Day5() {
10+
super(2015, 5, "Doesn't He Have Intern-Elves For This?");
11+
}
12+
13+
private long countMatching(Stream<String> words, Pattern pattern) {
14+
return words.filter(word -> pattern.matcher(word).matches()).count();
15+
}
16+
17+
@Override
18+
public String partOne() {
19+
return String.valueOf(countMatching(
20+
getInputLinesStreamNoBlanks(),
21+
Pattern.compile("^(?=(.*[aeiou]){3,})(?=.*(.)\\2)(?!.*(?:ab|cd|pq|xy)).*$")
22+
));
23+
}
24+
25+
@Override
26+
public String partTwo() {
27+
return String.valueOf(countMatching(
28+
getInputLinesStreamNoBlanks(),
29+
Pattern.compile("^(?=.*(..).*\\1)(?=.*(.).\\2).*$")
30+
));
31+
}
32+
}

src/main/resources/inputdata

0 commit comments

Comments
 (0)