2022-19 in js
This commit is contained in:
parent
ece85a2e99
commit
3430a7074b
11 changed files with 358 additions and 32 deletions
|
@ -18,8 +18,7 @@ fs.readFileSync("input", "utf8")
|
|||
rate: a[2],
|
||||
computePathCostTo: function (target) {
|
||||
Object.values(valves).forEach(v => v.cost = 0);
|
||||
let nq = new PriorityQueue();
|
||||
nq.enqueue(this, 0);
|
||||
let nq = new PriorityQueue(this);
|
||||
while (true) {
|
||||
let n = nq.dequeue();
|
||||
if (n.element.label === target) {
|
||||
|
|
|
@ -6,50 +6,34 @@ export class QElement {
|
|||
}
|
||||
|
||||
export class PriorityQueue {
|
||||
constructor() {
|
||||
constructor(elt) {
|
||||
this.items = [];
|
||||
if (elt !== undefined) {
|
||||
this.enqueue(elt, 0);
|
||||
}
|
||||
}
|
||||
|
||||
enqueue(element, priority) {
|
||||
var qElement = new QElement(element, priority);
|
||||
var contain = false;
|
||||
let qElement = new QElement(element, priority);
|
||||
|
||||
for (var i = 0; i < this.items.length; i++) {
|
||||
for (let i = 0; i < this.items.length; ++i) {
|
||||
if (this.items[i].priority > qElement.priority) {
|
||||
this.items.splice(i, 0, qElement);
|
||||
contain = true;
|
||||
break;
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (!contain) {
|
||||
this.items.push(qElement);
|
||||
}
|
||||
this.items.push(qElement);
|
||||
}
|
||||
dequeue() {
|
||||
if (this.isEmpty()){
|
||||
throw "Attempting to dequeue an empty queue";
|
||||
}
|
||||
return this.items.shift();
|
||||
return this.items.shift(); // pop highest priority, use shift() for lower priority
|
||||
}
|
||||
front() {
|
||||
if (this.isEmpty()){
|
||||
throw "Attempting to front an empty queue";
|
||||
}
|
||||
return this.items[0];
|
||||
}
|
||||
rear() {
|
||||
if (this.isEmpty()){
|
||||
throw "Attempting to rear an empty queue";
|
||||
}
|
||||
return this.items[this.items.length - 1];
|
||||
}
|
||||
isEmpty() {
|
||||
return this.items.length == 0;
|
||||
}
|
||||
printPQueue() {
|
||||
var str = "";
|
||||
for (var i = 0; i < this.items.length; i++)
|
||||
str += this.items[i].element + " ";
|
||||
return str;
|
||||
return this.items.length === 0;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,8 +18,7 @@ fs.readFileSync("input", "utf8")
|
|||
rate: a[2],
|
||||
computePathCostTo: function (target) {
|
||||
Object.values(valves).forEach(v => v.cost = 0);
|
||||
let nq = new PriorityQueue();
|
||||
nq.enqueue(this, 0);
|
||||
let nq = new PriorityQueue(this);
|
||||
while (true) {
|
||||
let n = nq.dequeue();
|
||||
if (n.element.label === target) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue