this time with no legal info

This commit is contained in:
2025-12-08 01:11:02 +00:00
commit 2f38ac9096
29 changed files with 72807 additions and 0 deletions

129
2/Ex1.java Normal file
View 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);
}
}