Advent of Code 2022

scripts.ts at [63deb3b727]
Login

File day2/scripts.ts artifact 515ba67818 part of check-in 63deb3b727


// If blank strings/ints is not enough
export const inputMapper = (inputs: string) => inputs;

export function solution1(inputs: string[]): number {
  const winning = ["A Y", "B Z", "C X"];
  const tie = ["A X", "B Y", "C Z"];

  return inputs.filter((input) => winning.includes(input)).length * 6 +
    inputs.filter((input) => tie.includes(input)).length * 3 +
    inputs.filter((input) => input.includes("X")).length +
    inputs.filter((input) => input.includes("Y")).length * 2 +
    inputs.filter((input) => input.includes("Z")).length * 3;
}

export function solution2(inputs: string[]): number {
  const getWinning = {
    A: "Y",
    B: "Z",
    C: "X",
  } as const;

  const getLosing = {
    A: "Z",
    B: "X",
    C: "Y",
  } as const;

  const getTie = {
    A: "X",
    B: "Y",
    C: "Z",
  } as const;

  const solution1Format = inputs.map((i) => {
    const [move, result] = i.split(" ") as [
      ("A" | "B" | "C"),
      ("X" | "Y" | "Z"),
    ];

    // Need to lose
    if (result === "X") {
      return `${move} ${getLosing[move]}`;
    } else if (result === "Y") {
      return `${move} ${getTie[move]}`;
    } else {
      return `${move} ${getWinning[move]}`;
    }
  });

  return solution1(solution1Format);
}