generated from eric/adventofcode2023
day six part two
This commit is contained in:
80
06/code.js
80
06/code.js
@@ -21,7 +21,7 @@ let total = 0;
|
|||||||
const problems = [];
|
const problems = [];
|
||||||
for (const row of usedArray) {
|
for (const row of usedArray) {
|
||||||
const contents = row.trim().split(/\s+/);
|
const contents = row.trim().split(/\s+/);
|
||||||
console.log(contents);
|
|
||||||
for (let i = 0; i < contents.length; i++) {
|
for (let i = 0; i < contents.length; i++) {
|
||||||
const element = contents[i];
|
const element = contents[i];
|
||||||
if (!problems[i]) {
|
if (!problems[i]) {
|
||||||
@@ -52,12 +52,84 @@ console.log(total);
|
|||||||
// Part Two
|
// Part Two
|
||||||
|
|
||||||
console.time("part2");
|
console.time("part2");
|
||||||
for (const element of usedArray) {
|
|
||||||
const contents = element.split(" ");
|
|
||||||
|
|
||||||
|
let total2 = 0;
|
||||||
|
|
||||||
|
let newInput = JSON.parse(JSON.stringify(usedArray));
|
||||||
|
for (let rowIndex = 0; rowIndex < newInput.length; rowIndex++) {
|
||||||
|
const row = newInput[rowIndex];
|
||||||
|
newInput[rowIndex] = row.split("");
|
||||||
|
}
|
||||||
|
|
||||||
|
const problemStarts = [];
|
||||||
|
const operatorRowArray = newInput[usedArray.length - 1];
|
||||||
|
for (let i = 0; i < operatorRowArray.length; i++) {
|
||||||
|
if (["*", "+"].includes(operatorRowArray[i])) {
|
||||||
|
problemStarts.push(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let rowIndex = 0; rowIndex < usedArray.length; rowIndex++) {
|
||||||
|
const row = usedArray[rowIndex];
|
||||||
|
for (let i = 0; i < row.length; i++) {
|
||||||
|
const char = row[i];
|
||||||
|
if (char === " " && !problemStarts.includes(i + 1)) {
|
||||||
|
newInput[rowIndex][i] = '#';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let rowIndex = 0; rowIndex < newInput.length; rowIndex++) {
|
||||||
|
const row = newInput[rowIndex];
|
||||||
|
newInput[rowIndex] = row.join("");
|
||||||
|
}
|
||||||
|
|
||||||
|
const problems2 = [];
|
||||||
|
for (const row of newInput) {
|
||||||
|
const contents = row.trim().split(/\s+/);
|
||||||
|
for (let i = 0; i < contents.length; i++) {
|
||||||
|
const element = contents[i];
|
||||||
|
if (!problems2[i]) {
|
||||||
|
problems2[i] = [];
|
||||||
|
}
|
||||||
|
problems2[i].push(element);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let problemsVertical = [];
|
||||||
|
for (let i = 0; i < problems2.length; i++) {
|
||||||
|
const problem = problems2[i];
|
||||||
|
let vertProblem = [];
|
||||||
|
for (let j = 0; j < problem.length - 1; j++) {
|
||||||
|
const newElement =
|
||||||
|
(problem[0] && problem[0][j] && problem[0][j] !== '#' ? problem[0][j] : '') +
|
||||||
|
(problem[1] && problem[1][j] && problem[1][j] !== '#' ? problem[1][j] : '') +
|
||||||
|
(problem[2] && problem[2][j] && problem[2][j] !== '#' ? problem[2][j] : '') +
|
||||||
|
(problem[3] && problem[3][j] && problem[3][j] !== '#' ? problem[3][j] : '') +
|
||||||
|
(problem[4] && problem[4][j] && problem[4][j] !== '#' ? problem[4][j] : '');
|
||||||
|
if (Number.parseInt(newElement)) {
|
||||||
|
vertProblem.push(Number.parseInt(newElement));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
vertProblem.push(problem[problem.length - 1]);
|
||||||
|
problemsVertical.push(vertProblem);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let problem of problemsVertical) {
|
||||||
|
problem = problem.reverse();
|
||||||
|
const operator = problem.shift();
|
||||||
|
let answer = operator.includes('+') ? 0 : 1;
|
||||||
|
for (const number of problem) {
|
||||||
|
if (operator.includes('+')) {
|
||||||
|
answer += Number.parseInt(number);
|
||||||
|
} else {
|
||||||
|
answer *= Number.parseInt(number);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
total2 += answer;
|
||||||
}
|
}
|
||||||
|
|
||||||
console.timeEnd("part2");
|
console.timeEnd("part2");
|
||||||
console.log();
|
console.log(total2);
|
||||||
|
|
||||||
// functions
|
// functions
|
||||||
|
|||||||
Reference in New Issue
Block a user