{"ScriptPreparationCode":"function detRemove(matrix, index) {\r\n let temp = [];\r\n for (let i = 1; i \u003C matrix.length; i\u002B\u002B) {\r\n // pushing a slice instead of a reference avoids the consequences of reference semantics\r\n // when chopping the temp array.\r\n temp.push(matrix[i].slice(0));\r\n temp[temp.length - 1].splice(index, 1);\r\n }\r\n return temp;\r\n}","TestCases":[{"Name":"3x3","Code":"function quickDeterminate(matrix) {\r\n let detSum = 0;\r\n if (matrix.length !== matrix[0].length || matrix.length === 1) {\r\n throw \u0022Invalid matrix input.\u0022;\r\n } else if (matrix.length === 2) {\r\n return matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];\r\n } else {\r\n for (let i = 0; i \u003C matrix[0].length; i\u002B\u002B) {\r\n let temp = detRemove(matrix, i);\r\n detSum \u002B= matrix[0][i] * quickDeterminate(temp) * Math.pow(-1, i);\r\n }\r\n }\r\n return detSum;\r\n\r\n}\r\n\r\nquickDeterminate([[1, 3, 2], [0, 1, 16], [5, 25, 1]])","IsDeferred":false},{"Name":"4x4","Code":"function quickDeterminate(matrix) {\r\n let detSum = 0;\r\n if (matrix.length !== matrix[0].length || matrix.length === 1) {\r\n throw \u0022Invalid matrix input.\u0022;\r\n } else if (matrix.length === 2) {\r\n return matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];\r\n } else {\r\n for (let i = 0; i \u003C matrix[0].length; i\u002B\u002B) {\r\n let temp = detRemove(matrix, i);\r\n detSum \u002B= matrix[0][i] * quickDeterminate(temp) * Math.pow(-1, i);\r\n }\r\n }\r\n return detSum;\r\n\r\n}\r\n\r\nquickDeterminate([[1, 3, 2, 4], [0, 1, 16, 5], [5, 25, 1, 25], [16, 24, 32, 11]])","IsDeferred":false},{"Name":"3x3 old","Code":"function quickDeterminate(matrix) {\r\n let detSum = 0;\r\n if (matrix.length !== matrix[0].length || matrix.length === 1) {\r\n throw \u0022Invalid matrix input.\u0022;\r\n } else if (matrix.length === 2) {\r\n return matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];\r\n } else {\r\n for (let i = 0; i \u003C matrix[0].length; i\u002B\u002B) {\r\n let babyArray = [];\r\n for (let j = 1; j \u003C matrix.length; j\u002B\u002B) {\r\n let row = [];\r\n for (let k = 0; k \u003C matrix.length; k\u002B\u002B) {\r\n if (i === 0 \u0026\u0026 i === k) {\r\n k\u002B\u002B;\r\n }\r\n row.push(matrix[j][k]);\r\n if (k === (i - 1)) {\r\n k\u002B\u002B;\r\n }\r\n }\r\n babyArray.push(row);\r\n }\r\n detSum \u002B= matrix[0][i] * quickDeterminate(babyArray);\r\n }\r\n }\r\n return detSum;\r\n}\r\n\r\nquickDeterminate([[1, 3, 2], [0, 1, 16], [5, 25, 1]])","IsDeferred":false},{"Name":"4x4 old","Code":"function quickDeterminate(matrix) {\r\n let detSum = 0;\r\n if (matrix.length !== matrix[0].length || matrix.length === 1) {\r\n throw \u0022Invalid matrix input.\u0022;\r\n } else if (matrix.length === 2) {\r\n return matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];\r\n } else {\r\n for (let i = 0; i \u003C matrix[0].length; i\u002B\u002B) {\r\n let babyArray = [];\r\n for (let j = 1; j \u003C matrix.length; j\u002B\u002B) {\r\n let row = [];\r\n for (let k = 0; k \u003C matrix.length; k\u002B\u002B) {\r\n if (i === 0 \u0026\u0026 i === k) {\r\n k\u002B\u002B;\r\n }\r\n row.push(matrix[j][k]);\r\n if (k === (i - 1)) {\r\n k\u002B\u002B;\r\n }\r\n }\r\n babyArray.push(row);\r\n }\r\n detSum \u002B= matrix[0][i] * quickDeterminate(babyArray);\r\n }\r\n }\r\n return detSum;\r\n}\r\nquickDeterminate([[1, 3, 2, 4], [0, 1, 16, 5], [5, 25, 1, 25], [16, 24, 32, 11]])","IsDeferred":false},{"Name":"8x8","Code":"function quickDeterminate(matrix) {\r\n let detSum = 0;\r\n if (matrix.length !== matrix[0].length || matrix.length === 1) {\r\n throw \u0022Invalid matrix input.\u0022;\r\n } else if (matrix.length === 2) {\r\n return matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];\r\n } else {\r\n for (let i = 0; i \u003C matrix[0].length; i\u002B\u002B) {\r\n let temp = detRemove(matrix, i);\r\n detSum \u002B= matrix[0][i] * quickDeterminate(temp) * Math.pow(-1, i);\r\n }\r\n }\r\n return detSum;\r\n}\r\n\r\nquickDeterminate([[1, 3, 2, 4, 16, 5, 34, 9], [0, 1, 16, 5, 42, 1, -5, 6], [5, 25, 1, 25, 15, 232, 1, 6], [16, 24, 32, 11, 25, 24, 24, -15], [1, 3, 2, 4, 10, 5, 22, -15], [0, 1, 16, 5, -22, 16, 8, 4], [5, 25, 1, 25, 15, 222, -225, 15], [16, 24, 32, 11, 15, 14, 13, 12]])","IsDeferred":false},{"Name":"8x8 old","Code":"function quickDeterminate(matrix) {\r\n let detSum = 0;\r\n if (matrix.length !== matrix[0].length || matrix.length === 1) {\r\n throw \u0022Invalid matrix input.\u0022;\r\n } else if (matrix.length === 2) {\r\n return matrix[0][0] * matrix[1][1] - matrix[1][0] * matrix[0][1];\r\n } else {\r\n for (let i = 0; i \u003C matrix[0].length; i\u002B\u002B) {\r\n let babyArray = [];\r\n for (let j = 1; j \u003C matrix.length; j\u002B\u002B) {\r\n let row = [];\r\n for (let k = 0; k \u003C matrix.length; k\u002B\u002B) {\r\n if (i === 0 \u0026\u0026 i === k) {\r\n k\u002B\u002B;\r\n }\r\n row.push(matrix[j][k]);\r\n if (k === (i - 1)) {\r\n k\u002B\u002B;\r\n }\r\n }\r\n babyArray.push(row);\r\n }\r\n detSum \u002B= matrix[0][i] * quickDeterminate(babyArray);\r\n }\r\n }\r\n return detSum;\r\n}\r\n\r\nquickDeterminate([[1, 3, 2, 4, 16, 5, 34, 9], [0, 1, 16, 5, 42, 1, -5, 6], [5, 25, 1, 25, 15, 232, 1, 6], [16, 24, 32, 11, 25, 24, 24, -15], [1, 3, 2, 4, 10, 5, 22, -15], [0, 1, 16, 5, -22, 16, 8, 4], [5, 25, 1, 25, 15, 222, -225, 15], [16, 24, 32, 11, 15, 14, 13, 12]])","IsDeferred":false},{"Name":"detRemove 8x8","Code":"detRemove([[1, 3, 2, 4, 16, 5, 34, 9], [0, 1, 16, 5, 42, 1, -5, 6], [5, 25, 1, 25, 15, 232, 1, 6], [16, 24, 32, 11, 25, 24, 24, -15], [1, 3, 2, 4, 10, 5, 22, -15], [0, 1, 16, 5, -22, 16, 8, 4], [5, 25, 1, 25, 15, 222, -225, 15], [16, 24, 32, 11, 15, 14, 13, 12]], 4)","IsDeferred":false}]}