Skip to content

Instantly share code, notes, and snippets.

@snarkbait
Created December 4, 2017 05:28
Show Gist options
  • Save snarkbait/0c5d7b14246619e8fb2b47cfea96de83 to your computer and use it in GitHub Desktop.
Save snarkbait/0c5d7b14246619e8fb2b47cfea96de83 to your computer and use it in GitHub Desktop.
Advent of Code 2017 - Day 4
package Advent2017;
import util.FileIO;
import util.Timer;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Day4 {
private static boolean part1(String[] s) {
Set<String> set = new HashSet<>(Arrays.asList(s));
return set.size() == s.length;
}
private static boolean part2(String[] s) {
return noAnagrams(s);
}
private static boolean isAnagram(String s, String t) {
char[] c = s.toCharArray();
char[] d = t.toCharArray();
Arrays.sort(c);
Arrays.sort(d);
return Arrays.equals(c, d);
}
private static boolean noAnagrams(String[] s) {
for (int i = 0; i < s.length - 1; i++) {
for (int j = i + 1; j < s.length; j++) {
if (isAnagram(s[i], s[j])) {
return false;
}
}
}
return true;
}
public static void main(String[] args) {
Timer.startTimer();
List<String[]> input = FileIO.getFileLinesSplit("advent2017_day4.txt", "\\s+");
long resultPart1 = input.stream()
.filter(Day4::part1)
.count();
long resultPart2 = input.stream()
.filter(Day4::part2)
.count();
System.out.println("Part 1: " + resultPart1);
System.out.println("Part 2: " + resultPart2);
System.out.println(Timer.endTimer());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment