Day 2
1 files changed, 68 insertions(+), 0 deletions(-)

A => src/ninja/scoopta/software/advent_of_code_12020/Day2.java
A => src/ninja/scoopta/software/advent_of_code_12020/Day2.java +68 -0
@@ 0,0 1,68 @@ 
+package ninja.scoopta.software.advent_of_code_12020;
+
+import java.util.List;
+import java.nio.file.*;
+import java.io.IOException;
+
+final class Day2 {
+	public static final void main(String[] args) {
+		try {
+			List<String> lines = Files.readAllLines(Paths.get("day2.txt"));
+			System.out.println("Part 1");
+			pt1(lines);
+			System.out.println("Part 2");
+			pt2(lines);
+		} catch(IOException e) {
+			e.printStackTrace();
+		}
+	}
+	
+	private static final void pt1(List<String> lines) {
+		int valid = 0;
+		
+		for(String line : lines) {
+			String[] split = line.split(" ");
+			String[] policy = split[0].split("-");
+			int req = Integer.parseInt(policy[0]);
+			int max = Integer.parseInt(policy[1]);
+			String contains = split[1].replace(":", "");
+			String passwd = split[2];
+			
+			int count = 0;
+			while(true) {
+				int idx = passwd.indexOf(contains);
+				if(idx < 0) {
+					break;
+				}
+				passwd = passwd.substring(0, idx) + passwd.substring(idx + contains.length());
+				++count;
+			}
+			if(count >= req && count <= max) {
+				++valid;
+			}
+		}
+		System.out.println(valid);
+	}
+	
+	private static final void pt2(List<String> lines) {
+		int valid = 0;
+		
+		for(String line : lines) {
+			String[] split = line.split(" ");
+			String[] policy = split[0].split("-");
+			int pos1 = Integer.parseInt(policy[0]);
+			int pos2 = Integer.parseInt(policy[1]);
+			String contains = split[1].replace(":", "");
+			String passwd = split[2];
+			
+			try {
+				boolean case1 = passwd.charAt(pos1 - 1) == contains.charAt(0) && passwd.charAt(pos2 - 1) != contains.charAt(0);
+				boolean case2 = passwd.charAt(pos1 - 1) != contains.charAt(0) && passwd.charAt(pos2 - 1) == contains.charAt(0);
+				if(case1 || case2) {
+					++valid;
+				}
+			} catch(IndexOutOfBoundsException e) {}
+		}
+		System.out.println(valid);
+	}
+}