Created
December 8, 2016 15:51
-
-
Save TristanWiley/8d346b63ac19f553d175f1bf9a546e57 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| String.prototype.replaceAt = function(index, character) { | |
| return this.substr(0, index) + character + this.substr(index + character.length); | |
| } | |
| var instructions = document.body.textContent.split('\n'); | |
| var grid = []; | |
| //create grid | |
| for (var a = 0; a < 6; a++) { | |
| grid.push(Array(51).join("0")); | |
| } | |
| instructions.forEach(function(item) { | |
| if (item.split(' ')[0] == "rotate") { | |
| if (item.split(" ")[1] == "row") { | |
| var row = Number(item.charAt(item.indexOf("=") + 1)); | |
| var dis = Number(item.split(" ")[item.split(" ").length - 1]); | |
| shiftRowRight(row, dis); | |
| } else { | |
| var row = Number(item.charAt(item.indexOf("=") + 1)); | |
| var dis = Number(item.split(" ")[item.split(" ").length - 1]); | |
| shiftRowDown(row, dis); | |
| } | |
| } else { | |
| if (item) { | |
| var p1 = item.split(' ')[1].split('x')[0]; | |
| var p2 = item.split(' ')[1].split('x')[1]; | |
| makeRect(p1, p2); | |
| } | |
| } | |
| }); | |
| function makeRect(w, h) { | |
| for (var b = 0; b < h; b++) { | |
| for (var c = 0; c < w; c++) { | |
| grid[b] = grid[b].replaceAt(c, "1"); | |
| } | |
| } | |
| } | |
| function shiftRowRight(row, dis) { | |
| var ar = grid[row].split(''); | |
| ar = ar.concat(ar.splice(0, ar.length - dis)); | |
| grid[row] = ar.join(""); | |
| } | |
| function shiftRowDown(col, dis) { | |
| var arr = []; | |
| grid.forEach(function(row) { | |
| arr.push(row.charAt(col)); | |
| }); | |
| arr = arr.concat(arr.splice(0, arr.length - dis)); | |
| for (var d = 0; d < grid.length; d++) { | |
| grid[d] = grid[d].replaceAt(col, arr[d]); | |
| } | |
| } | |
| //find answer | |
| var answer = 0; | |
| grid.forEach(function(finalRow) { | |
| answer += (finalRow.match(/1/g) || []).length; | |
| }); | |
| console.log(answer); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment