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) => {
...