70 lines
1.7 KiB
Java
70 lines
1.7 KiB
Java
|
package day03;
|
||
|
|
||
|
import java.io.BufferedReader;
|
||
|
import java.io.File;
|
||
|
import java.io.FileReader;
|
||
|
import java.util.Scanner;
|
||
|
|
||
|
public class Overlap {
|
||
|
|
||
|
int[][] canvas = new int[1000][1000];
|
||
|
|
||
|
public String parseFile(File file) {
|
||
|
try
|
||
|
{
|
||
|
Scanner scanner = new Scanner(new BufferedReader(new FileReader(file)));
|
||
|
|
||
|
while(scanner.hasNextLine()) {
|
||
|
String s = scanner.nextLine();
|
||
|
|
||
|
int div1 = s.indexOf('@');
|
||
|
int div2 = s.indexOf(',');
|
||
|
int div3 = s.indexOf(':');
|
||
|
int div4 = s.indexOf('x');
|
||
|
|
||
|
int id = Integer.parseInt(s.substring(1, div1).replaceAll("\\s",""));
|
||
|
int coordx = Integer.parseInt(s.substring(div1+1, div2).replaceAll("\\s",""));
|
||
|
int coordy = Integer.parseInt(s.substring(div2+1, div3).replaceAll("\\s",""));
|
||
|
int height = Integer.parseInt(s.substring(div3+1, div4).replaceAll("\\s",""));
|
||
|
int length = Integer.parseInt(s.substring(div4+1).replaceAll("\\s",""));
|
||
|
|
||
|
System.out.println("" + id + "|" + coordx + "|" + coordy + "|" + height + "|" + length);
|
||
|
|
||
|
for (int i = 0; i < height; i++) {
|
||
|
for (int j = 0; j < length; j++) {
|
||
|
canvas[coordx + i][coordy + j]++;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|
||
|
scanner.close(); // close stream
|
||
|
|
||
|
int overlapped = 0;
|
||
|
|
||
|
for (int i = 0; i < canvas.length; i++) {
|
||
|
for (int j = 0; j < canvas[0].length; j++) {
|
||
|
if (canvas[i][j] > 1) {
|
||
|
overlapped++;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
System.out.println(overlapped);
|
||
|
|
||
|
}
|
||
|
catch (Exception e) {
|
||
|
System.out.println(e.toString() + " : " + e.getStackTrace().toString());
|
||
|
}
|
||
|
return "NULL";
|
||
|
}
|
||
|
|
||
|
public static void main(String[] args) {
|
||
|
|
||
|
Overlap ovrlp = new Overlap();
|
||
|
File f = new File("src/day03/input.txt");
|
||
|
|
||
|
ovrlp.parseFile(f);
|
||
|
}
|
||
|
|
||
|
}
|