Added day 25
This commit is contained in:
		
							
								
								
									
										30
									
								
								day25/input.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								day25/input.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
cpy a d
 | 
			
		||||
cpy 7 c
 | 
			
		||||
cpy 362 b
 | 
			
		||||
inc d
 | 
			
		||||
dec b
 | 
			
		||||
jnz b -2
 | 
			
		||||
dec c
 | 
			
		||||
jnz c -5
 | 
			
		||||
cpy d a
 | 
			
		||||
jnz 0 0
 | 
			
		||||
cpy a b
 | 
			
		||||
cpy 0 a
 | 
			
		||||
cpy 2 c
 | 
			
		||||
jnz b 2
 | 
			
		||||
jnz 1 6
 | 
			
		||||
dec b
 | 
			
		||||
dec c
 | 
			
		||||
jnz c -4
 | 
			
		||||
inc a
 | 
			
		||||
jnz 1 -7
 | 
			
		||||
cpy 2 b
 | 
			
		||||
jnz c 2
 | 
			
		||||
jnz 1 4
 | 
			
		||||
dec b
 | 
			
		||||
dec c
 | 
			
		||||
jnz 1 -4
 | 
			
		||||
jnz 0 0
 | 
			
		||||
out b
 | 
			
		||||
jnz a -19
 | 
			
		||||
jnz 1 -21
 | 
			
		||||
							
								
								
									
										73
									
								
								day25/part1.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								day25/part1.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
generateSequence = (avalue)=>{
 | 
			
		||||
	var instructions = [];
 | 
			
		||||
	var registers = {a: avalue, b: 0, c: 0, d: 0};
 | 
			
		||||
	var output = [];
 | 
			
		||||
 | 
			
		||||
	var instructionSet = {};
 | 
			
		||||
 | 
			
		||||
	instructionSet.cpy = (a, b)=>{
 | 
			
		||||
	  if(Number.isInteger(parseInt(a))){
 | 
			
		||||
	    registers[b] = parseInt(a);
 | 
			
		||||
	  }
 | 
			
		||||
	  else{
 | 
			
		||||
	    registers[b] = registers[a];
 | 
			
		||||
	  }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	instructionSet.inc = (a)=>{
 | 
			
		||||
	  registers[a]++;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	instructionSet.dec = (a)=>{
 | 
			
		||||
	  registers[a]--;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	instructionSet.jnz = (a, b)=>{
 | 
			
		||||
	  if(((registers[a] != 0) && (a in registers)) || ((parseInt(a) != 0) && (!isNaN(parseInt(a))))){
 | 
			
		||||
	    pc = pc + (parseInt(b) - 1);
 | 
			
		||||
	  }
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	instructionSet.out = (a)=>{
 | 
			
		||||
		//console.log(registers);
 | 
			
		||||
	  output.push(registers[a]);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	var input = require("fs").readFileSync("input.txt").toString().replace(/\r/g, "");
 | 
			
		||||
	var instructions = input.split("\n").filter((a)=>(a)).map((instruction)=>{
 | 
			
		||||
	  if(instruction.indexOf("cpy") > -1){
 | 
			
		||||
	    var instructionParts = instruction.match("cpy ([^ ]+) ([^ ]+)");
 | 
			
		||||
	    return ["cpy", [instructionParts[1], instructionParts[2]]];
 | 
			
		||||
	  }
 | 
			
		||||
	  if(instruction.indexOf("inc") > -1){
 | 
			
		||||
	    var instructionParts = instruction.match("inc ([^ ]+)");
 | 
			
		||||
	    return ["inc", [instructionParts[1]]];
 | 
			
		||||
	  }
 | 
			
		||||
	  if(instruction.indexOf("dec") > -1){
 | 
			
		||||
	    var instructionParts = instruction.match("dec ([^ ]+)");
 | 
			
		||||
	    return ["dec", [instructionParts[1]]];
 | 
			
		||||
	  }
 | 
			
		||||
	  if(instruction.indexOf("out") > -1){
 | 
			
		||||
	    var instructionParts = instruction.match("out ([^ ]+)");
 | 
			
		||||
	    return ["out", [instructionParts[1]]];
 | 
			
		||||
	  }
 | 
			
		||||
	  if(instruction.indexOf("jnz") > -1){
 | 
			
		||||
	    var instructionParts = instruction.match("jnz ([^ ]+) ([^ ]+)");
 | 
			
		||||
	    return ["jnz", [instructionParts[1], instructionParts[2]]];
 | 
			
		||||
	  }
 | 
			
		||||
	});
 | 
			
		||||
 | 
			
		||||
	var pc = 0;
 | 
			
		||||
	var i = 0;
 | 
			
		||||
	while(i < 100000){
 | 
			
		||||
		if(pc == 14){
 | 
			
		||||
			console.log("14", registers);
 | 
			
		||||
		}
 | 
			
		||||
	  instructionSet[instructions[pc][0]].apply(null, instructions[pc][1]);
 | 
			
		||||
	  pc++;
 | 
			
		||||
		i++
 | 
			
		||||
	}
 | 
			
		||||
	console.log(registers);
 | 
			
		||||
	return output;
 | 
			
		||||
}
 | 
			
		||||
console.log(generateSequence(196));
 | 
			
		||||
							
								
								
									
										12
									
								
								day25/test.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								day25/test.js
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
var b = 8;
 | 
			
		||||
var a = 0;
 | 
			
		||||
var c = 2;
 | 
			
		||||
while(b != 0){
 | 
			
		||||
  b = b - 1;
 | 
			
		||||
  c = c - 1;
 | 
			
		||||
  if(c == 0){
 | 
			
		||||
    a++;
 | 
			
		||||
    c = 2;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
console.log(c);
 | 
			
		||||
							
								
								
									
										36
									
								
								day25/working_1.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								day25/working_1.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
d = a
 | 
			
		||||
c = 7
 | 
			
		||||
b = 362
 | 
			
		||||
d = d + (b*c)
 | 
			
		||||
b = 0
 | 
			
		||||
c = 0
 | 
			
		||||
IF 0
 | 
			
		||||
a = d
 | 
			
		||||
 | 
			
		||||
IF NOT 0
 | 
			
		||||
b = a
 | 
			
		||||
a = 0
 | 
			
		||||
c = 2
 | 
			
		||||
while b != 0
 | 
			
		||||
	b = b - 1
 | 
			
		||||
	c = c - 1
 | 
			
		||||
	if c == 0
 | 
			
		||||
		a = a + 1#
 | 
			
		||||
		c = 2
 | 
			
		||||
	end if
 | 
			
		||||
end while
 | 
			
		||||
 | 
			
		||||
if a odd c = 1
 | 
			
		||||
if a even c = 2
 | 
			
		||||
a = roundDown(a / 2)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
b = 2
 | 
			
		||||
/*while c != 0
 | 
			
		||||
	b = b - 1
 | 
			
		||||
	c = c - 1
 | 
			
		||||
end if*/
 | 
			
		||||
b = b - c
 | 
			
		||||
c = 0
 | 
			
		||||
output b
 | 
			
		||||
GO BACK UP
 | 
			
		||||
							
								
								
									
										12
									
								
								day25/working_2.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								day25/working_2.txt
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
d = a + (7*362)
 | 
			
		||||
b = 0
 | 
			
		||||
c = 0
 | 
			
		||||
 | 
			
		||||
(GOTO IF 0)
 | 
			
		||||
a = d
 | 
			
		||||
 | 
			
		||||
(GOTO IF NOT 0)
 | 
			
		||||
if a odd output 1
 | 
			
		||||
if a even output 0
 | 
			
		||||
a = a / 2
 | 
			
		||||
GOTO with a
 | 
			
		||||
		Reference in New Issue
	
	Block a user