adventJS

All solutions for the challenges of the adventjs by @treslog.

Credits to @midudev.

adventjs 2021

First challenge

      
        function contarOvejas(ovejas) {
  if (!Array.isArray(ovejas)) {
    throw new Error();
  }
  const isArrayOfObjects = ovejas.every((oveja) => typeof oveja === "object");
  if (!isArrayOfObjects) {
    throw new Error("No array of objects provided as parameter");
  }
  return ovejas.filter((oveja) => oveja.color === "rojo").filter(
    (oveja) => oveja.name.toLowerCase().includes("a") && oveja.name.toLowerCase().includes("n")
  );
}
      
    

Second challenge

      
        function listGifts(letter) {
  if (typeof letter !== "string")
    throw new Error("not string provided as parameter");
  const validGifts = letter.split(" ").map((item) => item.trim()).filter((item) => !item.startsWith("_") && item !== "");
  const toys = {};
  validGifts.forEach(
    (toy) => toys[toy] = validGifts.filter((n2) => n2 === toy).length
  );
  return toys;
}
      
    

Third challenge

      
        function isValid(letter) {
  if (!letter)
    throw new Error("string not provided as parameter");
  const validToy = letter.split(" ").filter(
    (toy) => toy === "" || toy === "()" || toy.startsWith("(") && !toy.endsWith(")") || !toy.startsWith("(") && toy.endsWith(")") || toy.slice(1).includes("(") || toy.split("").reverse().join("").slice(1).includes(")") || toy.includes("]") || toy.includes("}")
  );
  if (validToy.length !== 0)
    return false;
  return true;
}
      
    

Fourth challenge

      
        function createXmasTree(height) {
  if (height === void 0)
    throw new Error("no param provided");
  if (typeof height !== "number")
    throw new Error("no number provided");
  if (height < 1 || height > 100)
    throw new Error("height must be between 1 - 100");
  const foo = [1, -1, 0];
  const sum = foo[height] ?? 1;
  height = height === 1 ? 3 : height;
  height = height === 2 ? 3 : height;
  const tree = [];
  let base2 = "";
  for (let i = 1; i < height + sum; i++) {
    const under = height - i;
    tree.push(`${"_".repeat(under)}${"*".repeat(i + i - 1)}${"_".repeat(under)}`);
  }
  base2 = `
${"_".repeat(height - 1)}#${"_".repeat(height - 1)}`.repeat(2);
  return `${tree.join("\n")}${base2}`;
}
      
    

Fifth challenge

      
        function daysToXmas(date) {
  if (date === void 0)
    throw new Error("No date provided");
  const dateProvided = new Date(date).getTime();
  const dateXmas = new Date("Dec 25, 2021").getTime();
  const calculatedDays = dateXmas - dateProvided;
  return Math.ceil(new Date(calculatedDays).getTime() / 1e3 / 60 / 60 / 24);
}
      
    

adventjs 2022

First
Second