freeCodeCamp/curriculum/challenges/spanish/08-coding-interview-prep/data-structures/create-a-priority-queue-cla...

5.7 KiB

id title challengeType videoUrl localeTitle
587d8255367417b2b2512c74 Create a Priority Queue Class 1 Crear una clase de cola de prioridad

Description

En este desafío crearás una cola de prioridad. Una cola de prioridad es un tipo especial de cola en la que los elementos pueden tener información adicional que especifica su prioridad. Esto podría ser representado simplemente con un número entero. La prioridad de los elementos anulará el orden de colocación para determinar si los elementos de la secuencia se eliminan. Si un elemento con una prioridad más alta se pone en cola después de los elementos con una prioridad más baja, el elemento de mayor prioridad se eliminará de la cola antes que todos los demás. Por ejemplo, imaginemos que tenemos una cola de prioridad con tres elementos: [['kitten', 2], ['dog', 2], ['rabbit', 2]] Aquí el segundo valor (un entero) representa la prioridad del elemento . Si ponemos en cola ['human', 1] con una prioridad de 1 (suponiendo que se da prioridad a las prioridades más bajas) sería el primer elemento que se eliminará de la cola. A la colección le gustaría esto: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]] . Empezamos a escribir un PriorityQueue en el editor de código. Necesitará agregar un método de enqueue en enqueue para agregar elementos con una prioridad, un método de dequeue para eliminar elementos, un método de size para devolver el número de elementos en la cola, un método front para devolver el elemento al frente de la cola y finalmente, un método isEmpty que devolverá true si la cola está vacía o false si no lo está. La enqueue debe aceptar elementos con el formato que se muestra arriba ( ['human', 1] ) donde 1 representa la prioridad. La dequeue debe devolver solo el elemento actual, no su prioridad.

Instructions

Tests

tests:
  - text: Su clase de <code>Queue</code> debe tener un método de <code>enqueue</code> en <code>enqueue</code> .
    testString: 'assert((function(){var test = new PriorityQueue();  return (typeof test.enqueue === "function")}()), "Your <code>Queue</code> class should have a <code>enqueue</code> method.");'
  - text: Tu clase de <code>Queue</code> debe tener un método de <code>dequeue</code> .
    testString: 'assert((function(){var test = new PriorityQueue();  return (typeof test.dequeue === "function")}()), "Your <code>Queue</code> class should have a <code>dequeue</code> method.");'
  - text: Tu clase de <code>Queue</code> debe tener un método de <code>size</code> .
    testString: 'assert((function(){var test = new PriorityQueue();  return (typeof test.size === "function")}()), "Your <code>Queue</code> class should have a <code>size</code> method.");'
  - text: Tu clase de <code>Queue</code> debe tener un método <code>isEmpty</code> .
    testString: 'assert((function(){var test = new PriorityQueue();  return (typeof test.isEmpty === "function")}()), "Your <code>Queue</code> class should have an <code>isEmpty</code> method.");'
  - text: 'Su PriorityQueue debe realizar un seguimiento correcto del número actual de elementos utilizando el método de <code>size</code> , ya que los elementos se ponen en cola y se eliminan de la cola.'
    testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["David Brown", 2]); test.enqueue(["Jon Snow", 1]); var size1 = test.size(); test.dequeue(); var size2 = test.size(); test.enqueue(["A", 3]); test.enqueue(["B", 3]); test.enqueue(["C", 3]); return (size1 === 2 && size2 === 1 && test.size() === 4)}()), "Your PriorityQueue should correctly keep track of the current number of items using the <code>size</code> method as items are enqueued and dequeued.");'
  - text: El método <code>isEmpty</code> debería devolver <code>true</code> cuando la cola está vacía.
    testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["A", 1]); test.enqueue(["B", 1]); test.dequeue(); var first = test.isEmpty(); test.dequeue(); return (!first && test.isEmpty()); }()), "The <code>isEmpty</code> method should return <code>true</code> when the queue is empty.");'
  - text: 'La cola de prioridad debe devolver los elementos con una prioridad más alta antes de los elementos con una prioridad más baja y devolver los elementos en el orden de primero en entrar, primero en salir, de lo contrario.'
    testString: 'assert((function(){var test = new PriorityQueue(); test.enqueue(["A", 5]); test.enqueue(["B", 5]); test.enqueue(["C", 5]); test.enqueue(["D", 3]); test.enqueue(["E", 1]); test.enqueue(["F", 7]); var result = []; result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); result.push(test.dequeue()); return result.join("") === "EDABCF";}()), "The priority queue should return items with a higher priority before items with a lower priority and return items in first-in-first-out order otherwise.");'

Challenge Seed

function PriorityQueue () {
    this.collection = [];
    this.printCollection = function() {
      console.log(this.collection);
    };
    // Only change code below this line

    // Only change code above this line
}

Solution

// solution required