this time with no legal info
This commit is contained in:
129
2/Ex1.java
Normal file
129
2/Ex1.java
Normal file
@@ -0,0 +1,129 @@
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.util.Scanner;
|
||||
|
||||
public class Ex1 {
|
||||
public static void main(String[] args) {
|
||||
File file = new File("input.txt");
|
||||
String line = null;
|
||||
long count = 0;
|
||||
try (Scanner scanner = new Scanner(file)) {
|
||||
while (scanner.hasNextLine()) {
|
||||
line = scanner.nextLine();
|
||||
}
|
||||
} catch (FileNotFoundException e) {
|
||||
System.err.println("File not found: " + e.getMessage());
|
||||
}
|
||||
String[] ranges = line.split(",");
|
||||
for (String range : ranges) {
|
||||
System.out.println("Processing range: " + range);
|
||||
String[] bounds = range.split("-");
|
||||
// Case 1: bounds same size and odd length
|
||||
if (bounds[0].length() == bounds[1].length() && bounds[0].length() % 2 == 1)
|
||||
continue;
|
||||
// Case 2: bounds same size and even length
|
||||
else if (bounds[0].length() == bounds[1].length() && bounds[0].length() % 2 == 0) {
|
||||
// split each in half, iterate first half of first bound to first half of second bound as longs; get other halves too
|
||||
long start = Long.parseLong(bounds[0].substring(0, bounds[0].length() / 2));
|
||||
long end = Long.parseLong(bounds[1].substring(0, bounds[1].length() / 2));
|
||||
long startLow = Long.parseLong(bounds[0].substring(bounds[0].length() / 2));
|
||||
long endLow = Long.parseLong(bounds[1].substring(bounds[1].length() / 2));
|
||||
for (long i = start; i <= end; i++) {
|
||||
|
||||
if (start == end) { // you little prick.
|
||||
if (i >= startLow && i <= endLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
|
||||
} else if (i == start) {
|
||||
if (i >= startLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
} else if (i == end) {
|
||||
if (i <= endLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
} else {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
// Case 3: bounds different sizes
|
||||
else {
|
||||
// Case 3a: first odd, second even
|
||||
if (bounds[0].length() % 2 == 1 && bounds[1].length() % 2 == 0) {
|
||||
long startNum = (long) Math.pow(10, bounds[1].length() - 1);
|
||||
long startHigh = Long.parseLong(String.valueOf(startNum).substring(0, bounds[1].length() / 2));
|
||||
long endHigh = Long.parseLong(bounds[1].substring(0, bounds[1].length() / 2));
|
||||
long startLow = 0;
|
||||
long endLow = Long.parseLong(bounds[1].substring(bounds[1].length() / 2));
|
||||
|
||||
for (long i = startHigh; i <= endHigh; i++) {
|
||||
|
||||
if (startHigh == endHigh) {
|
||||
if (i >= startLow && i <= endLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
}
|
||||
|
||||
else if (i == startHigh) {
|
||||
if (i >= startLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
} else if (i == endHigh) {
|
||||
if (i <= endLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
} else {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Case 3b: first even, second odd
|
||||
else if (bounds[0].length() % 2 == 0 && bounds[1].length() % 2 == 1) {
|
||||
// here endnum should be highest number with same length as bound0 p.e. 1200-15000 -> endnum = 9999
|
||||
long endNum = (long) Math.pow(10, bounds[1].length() - 1) - 1;
|
||||
long startHigh = Long.parseLong(bounds[0].substring(0, bounds[0].length() / 2));
|
||||
long endHigh = Long.parseLong(String.valueOf(endNum).substring(0, bounds[0].length() / 2));
|
||||
long startLow = Long.parseLong(bounds[0].substring(bounds[0].length() / 2));
|
||||
long endLow = Long.parseLong(String.valueOf(endNum).substring(bounds[0].length() / 2));
|
||||
|
||||
for (long i = startHigh; i <= endHigh; i++) {
|
||||
|
||||
if (startHigh == endHigh) {
|
||||
if (i >= startLow && i <= endLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
}
|
||||
|
||||
else if (i == startHigh) {
|
||||
if (i >= startLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
} else if (i == endHigh) {
|
||||
if (i <= endLow) {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
} else {
|
||||
System.out.println("Adding: " + String.valueOf(i) + String.valueOf(i));
|
||||
count += Long.parseLong(String.valueOf(i) + String.valueOf(i));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
System.out.println("Count: " + count);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user