Unable to load image

Advent of Code 2022 : Day 9

grate filter edition

:#marseycapyhacker:

17
Jump in the discussion.

No email address required.

better late than never:

import * as fs from 'fs'

let pos = Array.from({length: 10},() => ({r:0, c:0}));
const g1: {[k: string]: number} = {'0-0': 1};
const g9: {[k: string]: number} = {'0-0': 1};

fs.readFileSync(process.argv[2], 'utf-8').split('\n').map(l => {
  const [dir, amt] = l.match(/\S+/g) || [];
  for (let i=0; i < Number(amt); i++) {
    if (dir === 'R') pos[0].c += 1;
    else if (dir === 'L') pos[0].c -= 1;
    else if (dir === 'U') pos[0].r += 1;
    else if (dir === 'D') pos[0].r -= 1;

    pos.forEach((nPos, i) => {
      if (i === 0) return;
      const pPos = pos[i-1];
      const dc = pPos.c-nPos.c;
      const dr = pPos.r-nPos.r;

      if (dc === 2) {
        nPos.c = pPos.c-1;
        if (Math.abs(dr) <= 1) nPos.r = pPos.r
      } 
      if (dc === -2) {
        nPos.c = pPos.c+1;
        if (Math.abs(dr) <= 1) nPos.r = pPos.r;
      }
      if (dr === 2) {
        nPos.r = pPos.r-1;
        if (Math.abs(dc) <= 1) nPos.c = pPos.c;
      }
      if (dr === -2) {
        nPos.r = pPos.r+1
        if (Math.abs(dc) <= 1) nPos.c = pPos.c;
      }
      if (i === 1) g1[`${nPos.r}-${nPos.c}`]=1;
      else if (i === 9) g9[`${nPos.r}-${nPos.c}`]=1;
    });
  }
})

console.log(Object.keys(g1).length, Object.keys(g9).length);
Jump in the discussion.

No email address required.

Link copied to clipboard
Action successful!
Error, please refresh the page and try again.