generated from eric/adventofcode2023
170 lines
4.5 KiB
JavaScript
170 lines
4.5 KiB
JavaScript
import { readFileSync } from 'node:fs';
|
|
|
|
// const inputArray = readFileSync('sample.txt').toString().split("\n");
|
|
const inputArray = readFileSync('input.txt').toString().split("\n");
|
|
|
|
// Part One
|
|
|
|
console.time("part1");
|
|
let sum = 0;
|
|
|
|
for (const element of inputArray) {
|
|
const length = element.length;
|
|
let firstDigitLocation = 0;
|
|
let firstDigit = 1;
|
|
let lastDigit = 0;
|
|
|
|
for (let i = 0; i < length - 1; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > firstDigit) {
|
|
firstDigit = digit;
|
|
firstDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = firstDigitLocation + 1; i < length; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > lastDigit) {
|
|
lastDigit = digit;
|
|
}
|
|
}
|
|
const joltage = (firstDigit * 10) + lastDigit;
|
|
sum += joltage;
|
|
}
|
|
|
|
console.timeEnd("part1");
|
|
console.log(sum);
|
|
|
|
// Part Two
|
|
|
|
console.time("part2");
|
|
let sum2 = 0;
|
|
|
|
for (const element of inputArray) {
|
|
const length = element.length;
|
|
let firstDigitLocation = 0;
|
|
let firstDigit = 1;
|
|
let secondDigitLocation = 1;
|
|
let secondDigit = 0;
|
|
let thirdDigitLocation = 2;
|
|
let thirdDigit = 0;
|
|
let fourthDigitLocation = 3;
|
|
let fourthDigit = 0;
|
|
let fifthDigitLocation = 4;
|
|
let fifthDigit = 0;
|
|
let sixthDigitLocation = 5;
|
|
let sixthDigit = 0;
|
|
let seventhDigitLocation = 6;
|
|
let seventhDigit = 0;
|
|
let eighthDigitLocation = 7;
|
|
let eighthDigit = 0;
|
|
let ninthDigitLocation = 8;
|
|
let ninthDigit = 0;
|
|
let tenthDigitLocation = 9;
|
|
let tenthDigit = 0;
|
|
let eleventhDigitLocation = 10;
|
|
let eleventhDigit = 0;
|
|
let lastDigit = 0;
|
|
|
|
for (let i = 0; i < length - 11; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > firstDigit) {
|
|
firstDigit = digit;
|
|
firstDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = firstDigitLocation + 1; i < length - 10; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > secondDigit) {
|
|
secondDigit = digit;
|
|
secondDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = secondDigitLocation + 1; i < length - 9 ; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > thirdDigit) {
|
|
thirdDigit = digit;
|
|
thirdDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = thirdDigitLocation + 1; i < length - 8; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > fourthDigit) {
|
|
fourthDigit = digit;
|
|
fourthDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = fourthDigitLocation + 1; i < length - 7; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > fifthDigit) {
|
|
fifthDigit = digit;
|
|
fifthDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = fifthDigitLocation + 1; i < length - 6; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > sixthDigit) {
|
|
sixthDigit = digit;
|
|
sixthDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = sixthDigitLocation + 1; i < length - 5; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > seventhDigit) {
|
|
seventhDigit = digit;
|
|
seventhDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = seventhDigitLocation + 1; i < length - 4; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > eighthDigit) {
|
|
eighthDigit = digit;
|
|
eighthDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = eighthDigitLocation + 1; i < length - 3; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > ninthDigit) {
|
|
ninthDigit = digit;
|
|
ninthDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = ninthDigitLocation + 1; i < length - 2; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > tenthDigit) {
|
|
tenthDigit = digit;
|
|
tenthDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = tenthDigitLocation + 1; i < length - 1; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > eleventhDigit) {
|
|
eleventhDigit = digit;
|
|
eleventhDigitLocation = i;
|
|
}
|
|
}
|
|
for (let i = eleventhDigitLocation + 1; i < length; i++) {
|
|
const digit = Number.parseInt(element[i]);
|
|
if (digit > lastDigit) {
|
|
lastDigit = digit;
|
|
}
|
|
}
|
|
|
|
const joltage = (firstDigit * 100000000000) +
|
|
(secondDigit * 10000000000) +
|
|
(thirdDigit * 1000000000) +
|
|
(fourthDigit * 100000000) +
|
|
(fifthDigit * 10000000) +
|
|
(sixthDigit * 1000000) +
|
|
(seventhDigit * 100000) +
|
|
(eighthDigit * 10000) +
|
|
(ninthDigit * 1000) +
|
|
(tenthDigit * 100) +
|
|
(eleventhDigit * 10) +
|
|
lastDigit;
|
|
sum2 += joltage;
|
|
}
|
|
|
|
console.timeEnd("part2");
|
|
console.log(sum2);
|
|
// functions
|