6.8 KiB
6.8 KiB
id | title | challengeType | videoUrl | localeTitle |
---|---|---|---|---|
587d8255367417b2b2512c74 | Create a Priority Queue Class | 1 | Создание класса очереди приоритетов |
Description
[['kitten', 2], ['dog', 2], ['rabbit', 2]]
Здесь второе значение (целое число) представляет приоритет элемента , Если мы ставим в очередь ['human', 1]
с приоритетом 1
(при условии, что более низкие приоритеты заданы приоритетом), тогда это будет первый элемент, который будет удален. Коллекция понравится: [['human', 1], ['kitten', 2], ['dog', 2], ['rabbit', 2]]
. Мы начали писать PriorityQueue
в редакторе кода. Вам нужно будет добавить метод enqueue
для добавления элементов с приоритетом, метод dequeue
для удаления элементов, метод size
для возврата количества элементов в очереди, front
метод для возврата элемента в передней части очереди и наконец, метод isEmpty
, который вернет true
если очередь пуста или false
если это не так. enqueue
должна принимать элементы с форматом, указанным выше ( ['human', 1]
), где 1
представляет приоритет. dequeue
должен возвращать только текущий элемент, а не его приоритет. Instructions
Tests
tests:
- text: Класс <code>Queue</code> должен иметь метод <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: Класс <code>Queue</code> должен иметь метод <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: Класс <code>Queue</code> должен иметь метод <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: Класс <code>Queue</code> должен иметь метод <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: 'Ваш PriorityQueue должен правильно отслеживать текущее количество элементов, используя метод <code>size</code> поскольку элементы находятся в очереди и удалены.'
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: Метод <code>isEmpty</code> должен возвращать <code>true</code> когда очередь пуста.
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: Очередь приоритета должна возвращать элементы с более высоким приоритетом перед элементами с более низким приоритетом и возвращать элементы в порядке «первым в первом порядке» в противном случае.
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