diff --git a/day 13/day_13_mark.js b/day 13/day_13_mark.js
new file mode 100644
index 0000000000000000000000000000000000000000..86e68bf6fdd2f307cb0405115f0eec9e4b57241f
--- /dev/null
+++ b/day 13/day_13_mark.js	
@@ -0,0 +1,81 @@
+machines = input.split('\n\n').map(machine => machine.match(/Button A: X\+(\d+), Y\+(\d+)\nButton B: X\+(\d+), Y\+(\d+)\nPrize: X=(\d+), Y=(\d+)/).slice(1).map(Number))
+
+score = (A_presses, B_presses) => 3 * A_presses + B_presses
+
+solved = (machine, A_presses, B_presses) => {
+	X = A_presses * machine[0] + B_presses * machine[2]
+	Y = A_presses * machine[1] + B_presses * machine[3]
+	
+	Xdiff = X - machine[4]
+	Ydiff = Y - machine[5]
+	
+	if(Xdiff < 0 && Ydiff < 0){
+		return -1
+	}
+	if(Xdiff == 0 && Ydiff == 0){
+		return 0
+	}	
+	
+	return 1
+}
+
+solve = machine => {
+	max_B_presses = 0
+	while(solved(machine, 0, max_B_presses) <= 0){
+		max_B_presses++
+	} 
+	
+	B_presses = max_B_presses
+	A_presses = 0
+	
+	do {
+		B_presses--
+		A_presses = 0
+		do {
+			A_presses++
+		} while(solved(machine, A_presses, B_presses) < 0)
+	} while(B_presses >= 0 && solved(machine, A_presses, B_presses) > 0)
+			
+	return solved(machine, A_presses, B_presses) ? 0 : score(A_presses, B_presses)
+}
+
+output1 = machines.reduce((total, machine) => total + solve(machine), 0)
+
+////
+
+machines.map(machine => {machine[4] += 10000000000000; machine[5] += 10000000000000})
+
+solved = (machine, A_presses, B_presses) => {
+	X = A_presses * machine[0] + B_presses * machine[2]
+	Y = A_presses * machine[1] + B_presses * machine[3]
+	
+	Xdiff = X - machine[4]
+	Ydiff = Y - machine[5]
+	
+	if(Xdiff < 0 && Ydiff < 0){
+		return -1
+	}
+	if(Xdiff == 0 && Ydiff == 0){
+		return 0
+	}	
+	
+	return 1
+}
+
+solve = machine => {
+	A_X = machine[0]
+	A_Y = machine[1]
+	B_X = machine[2]
+	B_Y = machine[3]
+	X = machine[4]
+	Y = machine[5]
+	
+	det = A_X * B_Y - A_Y * B_X
+	A_presses = Math.round((B_Y * X - B_X * Y)/det)
+	B_presses = Math.round((A_X * Y - A_Y * X)/det)
+	
+	return solved(machine, A_presses, B_presses) ? 0 : score(A_presses, B_presses)
+}
+
+output2 = machines.reduce((total, machine) => total + solve(machine), 0)
+