String fileName = "input.txt"; //String fileName = "testdata.txt"; BufferedReader reader; String line; IntList values; void setup() { reader = createReader(fileName); try { line = reader.readLine(); } catch (IOException e) { line = null; } values = new IntList(); String[] listSplit = split(line, ','); for( int value : int(listSplit) ) { values.append(value); } /* day 2 _ 1 - answer 4138658 values.set(1, 12); values.set(2, 2); int i = 0; int Opcode = values.get(i); while(Opcode != 99) { switch(Opcode) { case 1: values.set(values.get(i+3), operation(values.get(i+1), values.get(i+2), Opcode)); i = i+4; Opcode = values.get(i); break; case 2: values.set(values.get(i+3), operation(values.get(i+1), values.get(i+2), Opcode)); i = i+4; Opcode = values.get(i); break; } } println(values.get(0)); */ // day 2 _ 2 input answer 7264 boolean stop = false; int noun = 0; int verb = 0; int output = 0; int expectedOutput = 19690720; int result = 0; int Opcode = 0; while(output != expectedOutput && !stop ) { IntList copyOfValues = new IntList(); for( int value : values) { copyOfValues.append(value); } int i = 0; Opcode = copyOfValues.get(i); copyOfValues.set(1, noun); copyOfValues.set(2, verb); while(Opcode != 99) { switch(Opcode) { case 1: copyOfValues.set(copyOfValues.get(i+3), copyOfValues.get(copyOfValues.get(i+1)) + copyOfValues.get(copyOfValues.get(i+2))); i = i+4; Opcode = copyOfValues.get(i); break; case 2: copyOfValues.set(copyOfValues.get(i+3), copyOfValues.get(copyOfValues.get(i+1)) * copyOfValues.get(copyOfValues.get(i+2))); i = i+4; Opcode = copyOfValues.get(i); break; } } result = 100*noun+verb; if(noun < 99) { noun++; } else { verb++; noun = 0; } if (verb > 99) { stop = true; } output = copyOfValues.get(0); } println(result); } int operation(int pos1, int pos2, int Opcode){ switch(Opcode) { case 1: return values.get(pos1) + values.get(pos2); case 2: return values.get(pos1) * values.get(pos2); } return 0; }