Advent of Code 2022: Day 16

wip

by Amy L

HTML

<link rel="stylesheet" href="https://adventofcode.com/static/style.css?30">
<h1><a href="https://adventofcode.com/2022/day/16" target="_blank">Day 16</a></h1>
<diV class="puzzle-input">
  <label for="INPUT_DATA">Input</label>
  <textarea id="INPUT_DATA" autocomplete="off" placeholder="paste your input here" rows="7" cols="50">Valve AA has flow rate=0; tunnels lead to valves DD, II, BB
Valve BB has flow rate=13; tunnels lead to valves CC, AA
Valve CC has flow rate=2; tunnels lead to valves DD, BB
Valve DD has flow rate=20; tunnels lead to valves CC, AA, EE
Valve EE has flow rate=3; tunnels lead to valves FF, DD
Valve FF has flow rate=0; tunnels lead to valves EE, GG
Valve GG has flow rate=0; tunnels lead to valves FF, HH
Valve HH has flow rate=22; tunnel leads to valve GG
Valve II has flow rate=0; tunnels lead to valves AA, JJ
Valve JJ has flow rate=21; tunnel leads to valve II</textarea>
</diV>
<dl>
<dt>Part 1</dt>
  <dd>
    <label>Answer:
      <input type="text" id="answer1" readonly />
    </label>
  </dd>
  
  <dt>Part 2</dt>
  <dd>
    <label>Answer:
    <input type="text" id="answer2" readonly />
    </label>
  </dd>
</dl>

<canvas id="map1"></canvas>

JavaScript 1.7

const useSample = true;
// const useSample = false;
const TIME_LIMIT = 30;
const STATE = {
  timeRemaining: 30,
  valvesOpen: [],
  totalPressure: 0,
  path: [],
  current: null
};
const GLOBALS = {
  valves: []
}
function Day16(inputData) {
  GLOBALS.valves = parseInputData(inputData);
  async function solvePart1(startingValve) {
    const start = getStartingValve(startingValve);
    console.log('Initial', STATE)

    moveTo('DD'); console.log(STATE);
    openValve(); console.log(STATE);
    moveTo('CC'); console.log(STATE);
    moveTo('BB'); console.log(STATE);
    openValve(); console.log(STATE);
    moveTo('AA'); console.log(STATE);
    moveTo('II'); console.log(STATE);
    moveTo('JJ'); console.log(STATE);
    openValve(); console.log(STATE);
    moveTo('II'); console.log(STATE);
    moveTo('AA'); console.log(STATE);
    moveTo('DD'); console.log(STATE);
    moveTo('EE'); console.log(STATE);
    moveTo('FF'); console.log(STATE);
    moveTo('GG'); console.log(STATE);
    moveTo('HH'); console.log(STATE);
    openValve(); console.log(STATE);
    moveTo('GG'); console.log(STATE);
    moveTo('FF'); console.log(STATE);
    moveTo('EE'); console.log(STATE);
    openValve(); console.log(STATE);
    moveTo('DD'); console.log(STATE);
    moveTo('CC'); console.log(STATE);
    openValve(); console.log(STATE);
    timePasses(); console.log(STATE);
    timePasses(); console.log(STATE);
    timePasses(); console.log(STATE);
    timePasses(); console.log(STATE);
    timePasses(); console.log(STATE);
    timePasses(); console.log(STATE);
  }

  async function solvePart2() {
   
  }

  return { solvePart1, solvePart2 };
}

document.addEventListener('DOMContentLoaded', () => {
  getInputData((useSample) ? 'INPUT_DATA' : 'INPUT_DATA2', (input) => {
    const { solvePart1, solvePart2 } = Day16(input);
    solvePart1('AA').then((answer) => {
      document.getElementById('answer1').value = answer;
    });
    solvePart2((useSample) ? '' : '').then((answer) => {
     ...