Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- import java.util.ArrayList;
- import java.util.Arrays;
- public class Main {
- public static void main(String[] args) {
- // task3();
- // System.out.println("Starting...");
- long startTime = System.nanoTime();
- task4();
- long endTime = System.nanoTime();
- System.out.println(String.format("It took %.3f ms to compute", (float)(endTime-startTime)/1000000));
- // task2();
- }
- static void task4() {
- String line = openFile(new File("res/input3.txt"))[0];
- int[] arr = Arrays.stream(line.split(",")).mapToInt(Integer::parseInt).toArray();
- int goal = 19690720;
- mainLoop:
- for(int i = 0; i <= 99; i++)
- for(int j = 0; j <= 99; j++) {
- int[] a = Arrays.copyOf(arr, arr.length);
- a[1] = i;
- a[2] = j;
- iterLoop:
- for (int k = 0; k < arr.length; k+=4) {
- int v = arr[k];
- switch (v) {
- case (1):
- a[a[k + 3]] = a[a[k + 1]] + a[a[k + 2]];
- break;
- case (2):
- a[a[k + 3]] = a[a[k + 1]] * a[a[k + 2]];
- break;
- case (99):
- break iterLoop;
- }
- }
- // System.out.println(String.format("i: %d, j: %d; %d", i, j, a[0]));
- if(a[0] == goal) {
- System.out.println(100*i + j);
- break mainLoop;
- }
- }
- }
- static void task3() {
- String line = openFile(new File("res/input3.txt"))[0];
- int[] arr = Arrays.stream(line.split(",")).mapToInt(Integer::parseInt).toArray();
- arr[1] = 12;
- arr[2] = 2;
- System.out.println(Arrays.toString(arr));
- mainloop:
- for (int i = 0; i < arr.length; i+=4) {
- int v = arr[i];
- switch (v) {
- case (1):
- arr[arr[i + 3]] = arr[arr[i+1]] + arr[arr[i + 2]];
- break;
- case (2):
- arr[arr[i + 3]] = arr[arr[i + 1]] * arr[arr[i + 2]];
- break;
- case (99):
- break mainloop;
- }
- }
- System.out.println(Arrays.toString(arr));
- System.out.println("value is: " + arr[0]);
- }
- static void task2() {
- String[] lines = openFile(new File("res/input2.txt"));
- int sum = 0;
- int additions = 0;
- for(String line : lines) {
- int mass = Integer.parseInt(line.trim());
- int toAdd = calculateFuel(mass);
- additions++;
- while (toAdd != 0) {
- sum += toAdd;
- additions++;
- toAdd = calculateFuel(toAdd);
- }
- // break;
- }
- System.out.println(String.format("sum of %d [%d] elements eq: %d", lines.length, additions, sum));
- }
- static int calculateFuel(int mass) {
- return Math.max(mass/3-2, 0);
- }
- static void task1() {
- String[] lines = openFile(new File("res/input2.txt"));
- int sum = 0;
- for(String line : lines) {
- int v = Integer.parseInt(line.trim());
- int res = v/3 - 2;
- sum += res;
- System.out.println(res);
- }
- System.out.println(String.format("sum of %d elements eq: %d", lines.length, sum));
- }
- static String[] openFile (File file) {
- ArrayList<String> lines = new ArrayList<>();
- try (FileReader fr = new FileReader(file)){
- BufferedReader br = new BufferedReader(fr);
- String line;
- while((line = br.readLine()) != null) {
- lines.add(line.strip());
- }
- } catch (IOException e) {
- e.printStackTrace();
- }
- return lines.toArray(new String[0]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment