Advent of Code 2022: Day 18

wip

by Amy L

HTML

<link rel="stylesheet" href="https://adventofcode.com/static/style.css?30">
<h1><a href="https://adventofcode.com/2022/day/18" target="_blank">Day 18</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">2,2,2
1,2,2
3,2,2
2,1,2
2,3,2
2,2,1
2,2,3
2,2,4
2,2,6
1,2,5
3,2,5
2,1,5
2,3,5</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

function Day18(inputData) {
	const input = parseInputData(inputData);

  async function solvePart1() {
  	console.log(input)
  
  }

  async function solvePart2() {

  }

  return { solvePart1, solvePart2 };
}

document.addEventListener('DOMContentLoaded', () => {
  getInputData('INPUT_DATA', (input) => {
    const { solvePart1, solvePart2 } = Day18(input);
    solvePart1().then((answer) => {
      document.getElementById('answer1').value = answer;
    });
    solvePart2().then((answer) => {
      document.getElementById('answer2').value = answer;
    });
  });
});
/*******************************************************************
  Utility libs
**/
function parseInputData(inputData) {
 return inputData.split('\n').map((coord) => {
 	const [x,y,z] = coord.split(',');
  return { 
  	x: parseInt(x),
    y: parseInt(y),
    z: parseInt(z)
  };
 })
}

/*******************************************************************
  General
**/
function getInputData(inputId, callback) {
  const dataEl = document.getElementById(inputId);
  dataEl.addEventListener('input', () => callback(dataEl.value));
  if (dataEl.value) callback(dataEl.value)
}