No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Prep谩rate para tu pr贸ximo empleo comprando hoy a precio especial

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

7 D铆as
20 Hrs
30 Min
55 Seg

Playground: Generador de identificadores para michis

16/35

Aportes 119

Preguntas 1

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

Aqui quice aportar algo diferente , este genera un string unico de 7 caracteres en cada iteracion

export function* getId() {
  while (true) {
    yield Math.random().toString(36).substring(5).toUpperCase();
  }
}

/*Results examples 

["I84P6YK","O7QL83M8","N5NCIQ1","JY6GGDYF","KLUY7TJQ","PAIU4RJB","Y5HUKX1M","SJWKL74O","62C1OBY7","783334YA"]

*/

export function* getId() {
  let michiId = 1
  while (true) {
    yield michiId++
  }
}

const michiId = getId()
console.log(michiId.next())

Siento que este playground esta algo mal estructurado, adem谩s de que la verdad las explicaciones de algunos temas no han sido lo mejor , ojala pudieran poner la respuesta usando exactamente lo que piden por que mire muchos aportes y lo solucionan pero no cumple los requisitos que pide el ejercicio.

export function* getId() {
  const arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];
  for (let i = 1; i > 0; i++){
    for (const letter in arr) {
      yield i + arr[letter];
    }
  }
}

Mi sencilla soluci贸n:

export function* getId() {
  let catID = 1
  while (true) {
    yield catID++
  }
}
export function* getId() {
  for (let i = 1; i > 0; i++){
    yield i;
  }
}

ezzz Aunque el profesor no lo haya explicado del todo bien leer la pagina web
https://www.digitalocean.com/community/tutorials/understanding-generators-in-javascript-es
me hizo tenerlo mas claro.

export function* getId() {
  let id = 0;
  while (true) { yield id++ }
}

En este caso usamos la funcion generadora para generar una cantidad de id infinitas pero, segun tengo entendido, esta funcion esta mas orientada a recorrer valores infinitos.

Con la funcion generadora podemos iterar por cada valor cada que se lo indiquemos con next() y gracias a su propiedad de poder pausarse (con yield) no genera problemas con un bucle o recorrido infinito.

Si te parece no entiendes la respuesta de los compa帽eros, te dejo la mia:

//como el array no esta debemos generarlo de la nada, por lo cual hacemos lo siguiente, generamos un ciclo while, el cual nos permite hacer sumar un numero al id (variable idsGenerados) cada vez que se ejecute, 驴porque no un for?: porque no sabemos cuantos veces se va a ejecutar (lo cual aparentemente fueran 3 veces, pero no lo es (no lo dice)). 

export function* getId() {
    let idsGenerados = 1;
    while (true) {
      yield idsGenerados++;
    }
  }
  const gatosId = getId();
  console.log(gatosId.next().value);

Aqu铆 el c贸digo con el que pude pasar la prueba:

export function* getId() {
  let newMichi = 0 // Es una variable que sirve para llevar el contro de los nuevos ingresos
  let id = Math.random().toString(36).substring(5).toUpperCase(); // Aqu铆 se genera un n煤mero aleatorio alfanum茅rico
  while (true) {
    yield `${newMichi += 1}${id};` // Aqu铆 concateno mi n煤mero de control y los codigos que ir谩n variando para evitar que existan Id麓s duplicados
  }
}

const michiId = getId()
console.log(michiId.next().value)

A mi se me ocurrio de esta forma.

Basicamente solo ponemos M y generamos el numero del id parta el michi

export function* getId() {
  let lastId = 1;
  while (true) {
    yield lastId++;
  }
}

Esta fue mi solucion

function hash(number) {
  return `MN${number*Math.random().toFixed(10)}-${number}`
}

export function* getId() {
  let indexPoss = 0, id = 0
  while (true) {
    id++
    yield indexPoss = hash(id)
  }
}

  let i = 1;
  while (true) {
    yield (`Michis${i}`);
    i++;
  }

Aqui esta mi solucion:

export function* getId() {
  let id = 0;
  while (true)
    yield id++;
}

solucion Simple y rapida (podria almacenar los valores dentro de un arry, antes confirmar que el valor no exista usando .some o .every(segun el enfoque) y luego almacenarlo, para asi asegurar que el valor no se repite)

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  while (true) {
    yield (parseInt(Math.floor(Math.random() * 1000)))
  }
}

export function* getId(array) {
// Tu c贸digo aqu铆
let i = 0;
for (let value of array){
i++
yield value + i;
}
}
const id = getId([鈥榗od-鈥, 鈥榗od-鈥, 鈥榗od-鈥, 鈥榗od-鈥橾);
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);

La redacci贸n de las instrucciones de la gu铆a, me confundieron, junto con la secci贸n de vista que indica 'Genera 10 ID', por lo que pens茅 en armar un array de 10 elementos de solo num茅ricos o solo de cadenas, cada vez que se diera clic en correr pruebas, al fallar ya pude observar la soluci贸n y era m谩s sencillo jajaja.. me proyecte de m谩s. Por lo que me quedo duda de como seria con las cadenas, y encontr茅 esta soluci贸n, donde le indicas que: * Caracteres quieres que tenga la cadena. * Longitud de la cadena. El 7 del ciclo *for* es para la longitud de la cadena. El *indice*, es para obtener un n煤mero aleatorio, conforma a la cadena de caracteres, para posteriormente usarlo con charAt y obtener ese car谩cter de la variable *caracteres*. ```js export function* getId() { while (true) { const cadena = generaCadena(); yield cadena; } } function generaCadena() { const caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; let cadena = ''; for (let i = 0; i < 7; i++) { const indice = Math.floor(Math.random() * caracteres.length); cadena += caracteres.charAt(indice); } return cadena; } ```
export function* getId() {
  let contID = 0;

  while (true) {
    yield `ID: ${++contID}` // Incrementar antes de devolver el valor.
  }
}
```js export function* getId() { // Tu c贸digo aqu铆 馃憟 const caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; const caracteresLength = caracteres.length; while (true) { let michiCredencial = ''; for (let i = 0; i < 5; i++){ michiCredencial += caracteres.charAt(Math.floor(Math.random() * caracteresLength)); } yield michiCredencial; } } ```
```js export function* getId() { // Tu c贸digo aqu铆 馃憟 const caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; const caracteresLength = caracteres.length; while (true) { let michiCredencial = ''; for (let i = 0; i < 5; i++){ michiCredencial += caracteres.charAt(Math.floor(Math.random() * caracteresLength)); } yield michiCredencial; } } ```export function\* getId() {聽 // Tu c贸digo aqu铆 馃憟聽 const caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';聽 const caracteresLength = caracteres.length;聽 while (true) {聽 聽 let michiCredencial = '';聽 聽 for (let i = 0; i < 5; i++){聽 聽 聽 michiCredencial += caracteres.charAt(Math.floor(Math.random() \* caracteresLength));聽 聽 }聽 聽 yield michiCredencial;聽 }}
![](https://static.platzi.com/media/user_upload/reto-3611c558-a47b-48ab-9403-bb08eadfee3b.jpg)
```js export function* getId() { // Tu c贸digo aqu铆 馃憟 while (true) { yield crypto.randomUUID() } } ```export function\* getId() {聽 // Tu c贸digo aqu铆 馃憟聽 while (true) {聽 聽 yield crypto.randomUUID()聽 }}

Este es mi aporte a la soluci貌n de este problema.
Para el generador use un prefijo con letras para los ids de los michis (鈥榤id-鈥), un counter que inicia en 1 y despu茅s se construye un string que tiene el prefijo y el counter convertido en string con ceros para completar 5 posiciones, es decir que los ids pueden ir de mid-00001 hasta mid-99999.

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  // String prefix
  let id = 'mid-'
  // counter init
  let counter = 1;
  // Generator loop
  while (true) {
    // padStart defines the final lenght and leading character 
    let counterString = counter.toString().padStart(5, "0");
    yield id + counterString;
    counter++;
  }
}
export function* getId() {
  let count = 1;

  while (true) {
    let id = generateIdentifier();
    yield id + count.toString();
    count++;
  }
}

function generateIdentifier() {
  const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  let result = '';

  for (let i = 0; i < 8; i++) {
    const randomIndex = Math.floor(Math.random() * characters.length);
    result += characters.charAt(randomIndex);
  }

  return result;
}
```js export function* getId() { // Tu c贸digo aqu铆 馃憟 let counter = 1; while (true) { let newId = counter.toString(36).toUpperCase(); yield newId; counter++; } } ```export function\* getId() {聽 // Tu c贸digo aqu铆 馃憟聽 let counter = 1;聽 while (true) {聽 聽 let newId = counter.toString(36).toUpperCase();聽 聽 yield newId;聽 聽 counter++;聽 }}

reto

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let michi = 1
  while (true) {
    michi += 1
    yield michi
  }
}


function* getId() {
  for (let i = 1; i > 0; i++) {
    yield i
  };
};
const id = getId();
id.next().value;
export function* getId() {
  let id = [];
  let i = 0;
  while (true) {
    yield id.push(i++);
  }
}
```js export function* getId() { let i = 0 while (true) yield ++i } ```export function\* getId() {聽 let i = 0聽 while (true) yield ++i}

馃鉁↙o realic茅 de la siguiente manera:

Aun sabiendo de que es muy poco probable que se generen 2 IDs iguales, de todas maneras agrego una comprobaci贸n simple usando el m茅todo includes() el cual comprueba si ya existe un elemento en un determinado array 馃槈

let ids = [];
function* getId() {
  while (true) {
    let idGenerated = [...Array(1)]
      .map(() => (Math.random() + 1).toString(36).substring(2))
      .join("");
    if (!ids.includes(idGenerated)) {
      ids.push(idGenerated);
      yield idGenerated;
    }
  }
}

let generateId = getId();

console.log(generateId.next().value);
console.log(generateId.next().value);
console.log(generateId.next().value);
console.log(generateId.next().value);
//...
Generando un id con un rango ```js export function* getId() { let id = 1; while (id <= 100) { yield id++ } } ```export function\* getId() {聽 let id = 1;聽 while (id <= 100) {聽 聽 yield id++ 聽聽 }}

Mi soluci贸n :

function* generarCadenaAleatoria() {
  const caracteres = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
  while (true) {
    let cadena = '';
    for (let i = 0; i < 7; i++) {
      const indice = Math.floor(Math.random() * caracteres.length);
      cadena += caracteres.charAt(indice);
    }
    yield cadena;
  }
}

// Creas una instancia del generador
const generador = generarCadenaAleatoria();

// Llamas al generador para obtener una cadena aleatoria
const cadenaAleatoria = generador.next().value;
console.log(cadenaAleatoria);

mi solution

function* getId() {
  for (var i = 1; i > 0; i++) {
    yield i;
  }
}

Estoy empezando a ver que los comentarios de que no se estan explicando lo suficientemente bien los diferentes temas del curso es verdad.
En la clase anterior no se aclaro lo de usar una estructura de ciclo para estos generadores.
De todas formas dejo mi respuesta:

export function* getId() {
  while (true) {
    yield Date.now() * (Math.floor(Math.random() * 100))
  }
}

Esta es mi solucion. El unico problema es que no se como hacer para conocer el valor del Symbol que se genera.

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  while (true) yield Symbol();
}

Here my solution 馃槈

export function* getId() {
  let counter = 0
  
  while (true) {
    yield ++counter
  }
}

Mi propuesta 馃槂

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let id = 1;
  while (true) {
    yield id;
    id++;
  }
}

const id = getId()
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);
const letras = '514a51sdas21621xc1asd351asd0'.split('');

let gatos = {};

function* getId() {
    while (true) {
        const uniqueElements = [];
        
        while (uniqueElements.length < 10) {
            const randomIndex = Math.floor(Math.random() * letras.length);
            const randomElement = letras[randomIndex];
            
            if (!uniqueElements.includes(randomElement)) {
                uniqueElements.push(randomElement);
            }
        }
        
        const newId = uniqueElements.join('');
        const gatoName = `gato${Object.keys(gatos).length + 1}`;

        gatos[gatoName] = newId;

        yield { [gatoName]: newId };
    }
}

const idGenerator = getId();

console.log(idGenerator.next().value);
console.log(idGenerator.next().value);
console.log(idGenerator.next().value);


Una soluci贸n r谩pida jeje

el 30 que puse es solo para no crear un ciclo infinito con un while true

export function* getId() {
  let size = 0;
  while (size < 30) {
    size++;
    yield size;
  }
}

Hola a todos馃憢! les comparto mi soluci贸n, agrega 鈥楳ichi鈥 antes del id 馃樆

bueno en mi caso se da que no entiendo por que me costo tanto llegar al resultado.
Es satisfactorio llegar a llograrlo, pero realmente me senti mareado con este ejercicio.
Logre suprerar con este codigo:

<code> 
export function* getId() {
  for (let id = 1; true; id++) {
    yield id;
  }
}
const id = getId();
console.log(id.next().value)

Les comparto mi soluci贸n 馃槂

export function* getId() {
  while (true) {
    yield Math.floor(Math.random() * 100) 
  }
}

Usando while

function* getId() {
while (true) {
let id = Math.round(Math.random()*10000)
yield Cat-${id}/unique_id-${id*345467};
}
}

Usando for

function* getId() {
for (let i = 0; i <= 10; i++) {
let id = Math.round(Math.random()*10000)
yield Cat-${id}/unique_id-${id*345467};
}
}

Solo se pasa la prueba usando while

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  do {
    yield crypto.randomUUID().slice(0, 8);
  } while (true)
}

Comparto mi soluci贸n usando el objeto crypto para generar ID aleatorios, recortado el resultado para que no sea excesivamente largo

Mi soluci贸n:

export function* getId() {
  while (true) {
    yield Math.random() * 100;
  }
}

Mi solucion fue:

export function* getId() {
  for (let i = 1; true; i++) {
    yield i
  }
}

Aunque tambien se puede hacer con un ciclo while

lo logre pero si me costo un poco

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let i = 1;
  while (true) {
    yield i;
    i++;
  }
}

const generator = getId();
console.log(generator.next().value);
console.log(generator.next().value);
console.log(generator.next().value);

Muy minimal mi respuesta

export function* getId() {
  while (true) { 
    yield crypto.randomUUID();
  }
}
export function* getId() {
  for (let num = 0; num > -1; num++) { yield num + 1 }
}

Para un id diferente tenemos crypto.randomUUID() , que es una forma nativa para obtener UUID鈥檚

Sin quemarme las pesta帽as. XD

function* getId() {
    let i = 0;
    while (true) {
        yield ++i;
    }
}

este curso es una verdadera verguenza, el profesor no explica nada bien. Pesimo

mi aporte:

function* getId() {
    let value = 0;
    while (true) {
        yield value += 1;
    }
}

const id = getId();
    console.log(id.next().value);
    console.log(id.next().value); 
    console.log(id.next().value);
export function* getId() {
  let count = 1; // Inicializar el contador en 1
  while (true) { // Bucle infinito para generar nuevos identificadores
    let id = ''; // Inicializar la cadena del identificador en vac铆o
    const possibleChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; // Definir los caracteres posibles para el identificador
    for (let i = 0; i < 7; i++) { // Generar una cadena aleatoria de 7 caracteres
      id += possibleChars.charAt(Math.floor(Math.random() * possibleChars.length));
    }
    yield count.toString().padStart(3, '0') + '-' + id; // Devolver el identificador como una cadena que combina el contador y la cadena aleatoria
    count++; // Incrementar el contador para el siguiente identificador
  }
}

export function* getId() {
  const michis = ['Felix', 'Figaro', 'Gatsby', 'Obelix', 'Negro', 'Hani', 'Loki', 'Aristogato', 'Misifu', 'Cardenal'];
  const randomId = () => Math.random().toString(36).substring(2, 10);
  for (let id = 0; id <= michis.length; id++){
    yield `${michis[id].toLowerCase()}-${randomId()}-${id}`
  }
}

export function* getId() {
  let id = 1;
  while (true) {
    yield id++;
  }
}

Aqu铆 va mi aporte, no se si el for se puede dejar as铆 ( as铆 me funcion贸, pero no se que tan buena practica sea esta implementaci贸n)

export function* getId() {
  for (let i = 0; ; i++) {
    yield ("Michi " + i);
  }
}

Entiendo esta soluci贸n, pero pq el while

function* getId() {
  let idInicial = 0;
  while (true) {
    yield idInicial++
  }
}

function* getId() {
    let lastId = 1
    while (true){
        yield lastId++;
    }
}

const id = getId();
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);
export function* getId() {
    let michiId = 1;
    while (true) {
    yield michiId++;
    }
  }

const michiId = getId()
console.log(michiId.next().value)
console.log(michiId.next().value)
console.log(michiId.next().value)

Despues de intentar muchas veces, esta es mi olucion:

`export function* getId() {
  let valor = 0;
  while (true)
    yield valor++;
}

Comparto mi solucion:D

export function* getId() {
	let charArray = "abcdefghijklmnopqrstuvwxyz0123456789".split("");
	while (true) {
		let str = "";
		for (let i = 0; i < 8; i++) {
			str += charArray[generarNumeroAleatorio()];
		}
		yield str.toUpperCase();
	}
}

function generarNumeroAleatorio() {
	return Math.floor(Math.random() * 36);
}

let result = getId();

console.log(result.next().value);

while (1) , porque mis inicios en programaci贸n se remontan a libros viejos para programar en C

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let n = 1;
  while (1) {
    yield n++
  }
}

Hola, as铆 fue como pude resolver el reto:

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let listaIdMichis = [0]
  for (let idMichi of listaIdMichis) {
    idMichi++
    listaMichis.push(idMichi)
    yield idMichi
  }
}

Este generador podr铆a usarse para generar contrase帽as de 60 caracteres con may煤sculas, min煤sculas, n煤meros y s铆mbolos:

function* generateId() {
  while (true) {
    const alphanumeric = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!"路$%&/()=?驴|@#~鈧-+脟篓`潞陋<>[]{}.,;:*/'.split('');
    const shuffledAlphanumeric = alphanumeric.sort(() => Math.random() - 0.83);
    const first60shuffledAlphanumeric = shuffledAlphanumeric.slice(5, 65);

    yield first60shuffledAlphanumeric.join('');
  };
};

El problema deber铆a especificar que no haya un l铆mite para poder seguir agregando id. Estaba creando un array de 3 elementos 馃槀 y no me sal铆a.

Mi soluci贸n.

Un poco m谩s tricky usando clases:

function* getId() {
    let michiId = 1;
    while (true) {
        yield michiId++;
    }
}

class Michi {
    constructor(name, id) {
        this.name = name;
        this.id = id;
    }
    get mId() {
        return this.id.value;
    }
    set mId(id) {
        this.id = id;
    }
}

const michisId = getId();
const garfield = new Michi('garfield', michisId.next());
console.log(garfield.mId)
const bolaDeNieve2 = new Michi('bolaDeNieve', michisId.next());
console.log(bolaDeNieve2.mId)

Tho, no es muy legible.

Este es mi aporte.

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let value = 1;
  while (true) {
    yield "mich#" + value++;
  }
}

Mi soluci贸n:

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let id = 1;
  while (true) {
    id++;
    yield id;
  }
}

const id = getId();
id.next().value
id.next().value
id.next().value

Mi soluci贸n:

export function* getId() {
  let value = 0
  while (true) { yield value++ }
}
export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  while (true) {
    yield Math.floor(Math.random()*10000);
  }
}
export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  while (true) {
    yield Math.random().toString(36).substring(6);
  }
}
const id = getId()
id.next().value;
id.next().value;
id.next().value;
export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let numero = 0;

  while (true) {
    yield numero++;
  }

}

Aqu铆 mi manera de resolverlo

export function* getId() {
  let michis = 1;
  while (true) {
    yield michis++;
  }
  const michilangos = getId()
  return michilangos.next().value;
}
export function* getId() {
  let i = 0;
  while (true) {
    yield i++;
  }
}

export function* getId(array) {
for (let value of array) {
yield value
}
}

const id = getId([鈥榤ichi1鈥, 鈥榤ichi2鈥, 鈥榤ichi3鈥橾);
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);

este es mi aporte

馃崈 Esta es mi soluci贸n, usando 鈥淢ICHI鈥 como valor inicial para cada ID.

function* getId() {
  // Creamos un string con todos los caracteres posibles para la ID
  let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345679";
  
  // Creamos una funci贸n que genera un n煤mero aleatorio en base a la longitud del string 'alphabet'
  let randomCaracter = () => Math.floor(Math.random() * alphabet.length);
  
  // Creamos un string con el valor inicial de la ID
  let id = "MICHI";
  
  // Generamos una ID con 8 caracteres aleatorios y la devolvemos con 'yield'
  for (let index = 0; index < 8; index++) {
    id += alphabet[randomCaracter()];
  }
  yield id;
  
  // Llamamos a la funci贸n generadora de forma recursiva para generar una nueva ID
  yield* getId();
}

// Creamos un iterador con la funci贸n generadora
const id = getId();

// Llamamos a 'next()' para obtener la primera ID
console.log(id.next().value);

// Llamamos a 'next()' varias veces para obtener IDs adicionales
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);

Investigu茅 e hice un generador de contrase帽as super seguras y nice 8)

function* getId() {
    var chars = "0123456789abcdefghijklmnopqrstuvwxyz!@#$%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var passwordLength = 20;
    var password = "";

while(true){
 for (var i = 0; i <= passwordLength; i++) {
   var randomNumber = Math.floor(Math.random() * chars.length);
   password += chars.substring(randomNumber, randomNumber +1);
  }

  yield password
  password=""
}

}

const id=getId()  
console.log(id.next().value)
console.log(id.next().value)
console.log(id.next().value)
console.log(id.next().value)
console.log(id.next().value)

Mi aporte, decidi usar la instancia de Set, ya que no admite elementos repetidos, en vez de un array.

function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let newMichi = 0
  while (true) {
    //Creamos una instancia de set que no admite elementos repetidos
    const setOfRandoms = new Set()

    //Creamos el id
    const id = Math.random().toString(36).substring(5).toUpperCase();

    //Agregamos el nuevo Id al set de Ids
    setOfRandoms.add(id)

    //Iteramos el set
    for (let value of setOfRandoms) {
      //Devolvemos un id unico personalizado
      yield `mi${newMichi++}${value}`
    }
  }
}

Esta fue mi solucion

export function* getId(array) {
  for (let value of array) {
    yield value;
  }
}

const id = getId(['Pedro', 'Juan', 'Alonso', 'Negro', 'Pato']);
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);
console.log(id.next().value);
export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  while (true) {
    yield Math.random().toString(26).substring(5).toUpperCase();
  }
}```

Mi solucion:

export function* getId() {
  const identifiers = [];
  while (true) {
    // i > 0 no sera un ciclo infinito debido a que se iterara cada ciclo al ejecutar el metodo next()
    for (let i = 1; i > 0; i++) {
      let identify = identifiers.push(i);
      yield identify;
    }
  }
}

quiero compartir con ustedes una referencia
sobre c贸mo generar IDs 煤nicos y aleatorios en la vida real

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  for (let i = 1; i <Infinity; i++) {
    yield i;
  }
}
export function* getId(array) {

    for (let value of array) {
        yield value;
    }
}

const michiArray = (['MIchi Negro', 'Michi Blanco', 'Michi Naranja', 'Michi negro con manchas naranjas']);

const id = getId(michisArray);
    id.next().value

Al parecer la sintaxis se ha actualizado, al querer hacerlo con un ciclo 鈥渇or鈥 me marca error, ahora se tiene que declarar una variable con un valor inicial y eventualmente, a traves de un 鈥渨hile鈥 ir incrementando la iteraci贸n.

<export function* getId() {
let nombreDeVariable = valor inicial
while (validaci贸n)
yield nombreDeVariable++ //asse aumenta la iteraci贸n
}

const nombreDeConst = Funci贸n([argumentos])
nombreDeConst.next().nombreDeVariable
nombreDeConst.next().nombreDeVariable
nombreDeConst.next().nombreDeVariable> 

Parece dificil, las instrucciones me parecen un poco complicadas, pero en realidad son ejercicios sencillos.

export function* getId() {
  let id = 0 
  while (true) {
    yield id;
    id+=1
  }
}

Generator no puede ser un () => {}, pero se puede modernizar a ECMA parcialmente. Agregado el .done.

export const getId = function* () {
    let id;
    for (let michiNum = 1; michiNum <= 10; michiNum++) {
        yield id = `Michi-n#${michiNum}`;
    };
};
const id = getId();
console.log(id.next().value); // x10 times C&P
console.log(id.next().done); // true

As simpler as possible:

export function* getId() {
  for (let i = 1; ; i++) {
    yield i;
  }
}

As simpler as possible:

export function* getId() {
  // Tu c贸digo aqu铆 馃憟

  let value = 0;
  while (true) { 
    value++;
    yield value;
  }

}
export function* getId() {
  let value = 0
  for (let i = 0; i < Infinity; i++) {
    value += 1
    yield value 
  }
}

Listo, tuve que guiarme en los comentarios para entenderle.

Mi soluci贸n generando un numero aleatorio entre el 1 y 100

- Floor: redonde numeros cercanos hacia abajo
- Random: genera un numero aleatorio entre 0 y 1

Existen otras alternativas para solucionar el ejercicio, pero creo que el playground recibe solo la estructura requerida, si es asi, deberian corregirlo.

export function* getId() {
  // Tu c贸digo aqu铆 馃憟
  let numId = 0;
  while (true) {
    yield numId += Math.floor(Math.random() * 100);
  }
}

function* getId(arr) {
    for (let value of arr) {
      yield value;
    }
  }
  
  const id = getId([1, 2, 3]);
  console.log(id.next().value);
  console.log(id.next().value);
  console.log(id.next().value);
undefined