Advertisement
Guest User

Untitled

a guest
Dec 4th, 2019
370
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2.  
  3. const chalk = require('chalk');
  4. const fs = require('fs');
  5.  
  6. var args = process.argv.slice(2);
  7.  
  8. function day04(filename) {
  9.     const input = fs.readFileSync(filename).toString();
  10.     const [start,end] = input.split("-").map(n => Number(n));
  11.  
  12.     var part1 = 0;
  13.     var part2 = 0;
  14.     for (var pw = start; pw <= end; pw++) {
  15.         if (validate_part1(pw)) part1 += 1;
  16.         if (validate_part2(pw)) part2 += 1;
  17.     }
  18.  
  19.     return [part1, part2];
  20. }
  21.  
  22. function validate_part1(input) {
  23.     const digits = input.toString().split("").map(n => Number(n));
  24.  
  25.     // Check never decreases
  26.     for (var i = 1; i < digits.length; i++) {
  27.         if (digits[i] < digits[i-1]) { return false; }
  28.     }
  29.  
  30.     // Check for existence of pair
  31.     for (var i = 1; i < digits.length; i++) {
  32.         if (digits[i] == digits[i-1]) { return true; }
  33.     }
  34. }
  35.  
  36. function validate_part2(input) {
  37.     const digits = input.toString().split("").map(n => Number(n));
  38.  
  39.     // Check never decreases
  40.     for (var i = 1; i < digits.length; i++) {
  41.         if (digits[i] < digits[i-1]) { return false; }
  42.     }
  43.  
  44.     // Check for existence of ONLY a pair
  45.     if (input.toString().match(/(?:^|(.)(?!\1))(\d)\2(?!\2)/)) return true;
  46.     return false;
  47. }
  48.  
  49. const [part1,part2] = day04(args[0]);
  50. console.log(chalk.blue("Part 1: ") + chalk.yellow(part1)); // 1855
  51. console.log(chalk.blue("Part 2: ") + chalk.yellow(part2)); // 1253
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement