123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- import { loadInput, numericAscSort, strToInt } from "../common.js";
- const input = loadInput(2, parseInput);
- solve(input);
- function parseInput(inputData) {
- const reports = inputData.split(/\n/).map((report) => report.split(" ").map(strToInt));
- return reports;
- }
- function solve(parsedInput) {
- let safeReports = 0;
- for(const report of parsedInput) {
- let currDirection = 0;
- let lastDirection = 0;
-
- let safe = false;
-
- let problemDampenerActive = true;
-
- for(let i = 0; i < report.length - 1; i++) {
- currDirection = numericAscSort(report[i], report[i + 1]);
- const difference = Math.abs(report[i] - report[i + 1]);
-
-
- if(i != 0 && lastDirection != currDirection) {
- if (problemDampenerActive) {
- problemDampenerActive = false;
- }
- else {
- safe = false;
- break;
- }
- }
-
- else if(difference > 3) {
- if (problemDampenerActive) {
- problemDampenerActive = false;
- }
- else {
- safe = false;
- break;
- }
- }
- else {
- safe = true;
- }
- lastDirection = currDirection;
- }
- if(safe) { safeReports++; }
- }
-
- console.log("Safe Reports:", safeReports);
- }
|