Skip to content

Latest commit

 

History

History
80 lines (58 loc) · 1.3 KB

06.md

File metadata and controls

80 lines (58 loc) · 1.3 KB

⬅️ Regresar

Reto #6: 📦 ¿Regalo dentro de la caja?

Instrucciones

Ya hemos empaquetado cientos de regalos 🎁… pero a un elfo se le ha olvidado revisar si el regalo, representado por un asterisco *, está dentro de la caja.

La caja tiene un regalo (*) y cuenta como dentro de la caja si:

  • Está rodeada por # en los bordes de la caja.
  • El * no está en los bordes de la caja.

Ten en cuenta entonces que el * puede estar dentro, fuera o incluso no estar. Y debemos devolver true si el * está dentro de la caja y false en caso contrario.

Ejemplos:

inBox([
  "###",
  "#*#",
  "###"
]) // ➞ true

inBox([
  "####",
  "#* #",
  "#  #",
  "####"
]) // ➞ true

inBox([
  "#####",
  "#   #",
  "#  #*",
  "#####"
]) // ➞ false

inBox([
  "#####",
  "#   #",
  "#   #",
  "#   #",
  "#####"
]) // ➞ false

Solución

function inBox(box) {
	const y = box.findIndex(b => b.includes("*"))
	const x = box[y]?.indexOf("*")

	const positions = [
		box[y - 1]?.[x],
		box[y]?.[x + 1],
		box[y + 1]?.[x],
		box[y]?.[x - 1]
	]

	return positions.every(pos => pos)
}

Puntaje: 🌟🌟🌟🌟🌟

2114 ops/s

Complejidad cognitiva: 3


⬅️ Regresar