Dada una matriz [1, 2, 2, 3, 4, 4, 5] , ¿es posible barajar la matriz y evitar que los duplicados estén uno al lado del otro?
Por ejemplo:
[1, 2, 3, 4, 2, 5, 4] es una solución aceptable.[1, 2, 3, 4, 4, 2, 5] no es una solución aceptable ya que 4 está al lado de otro 4Esta parece una pregunta simple pero después de pensarlo, la solución parece complicada. ¡¡Cualquier ayuda es muy apreciada, gracias!!
Si no le importa el tiempo de ejecución del algoritmo, simplemente baraje varias veces hasta que obtenga el resultado que desea.
let arr = [1, 2, 2, 3, 4, 4, 5]; const hasDublicateItems = (arr) => arr.some((v, i, a) => v === a[i+1]); while (hasDublicateItems(arr)) arr = arr.sort(() => (Math.random() > .5) ? 1 : -1); console.log(arr); .as-console-wrapper{min-height: 100%!important; top: 0}