summaryrefslogtreecommitdiff
path: root/2026/games/liquidcake1/queue.mjs
diff options
context:
space:
mode:
authorLLLL Colonq <llll@colonq>2026-08-29 04:06:51 -0400
committerLLLL Colonq <llll@colonq>2026-08-29 04:06:51 -0400
commit761a3172bf4c15aed3836e4d1cd6f815b651b0e0 (patch)
treecc90491529e83349d84d42a8e9982e5f0f38338e /2026/games/liquidcake1/queue.mjs
parent0d2d8cd897e94bd94e0b3ae7c6ce9aa580a44a0a (diff)
Fix
Diffstat (limited to '2026/games/liquidcake1/queue.mjs')
-rw-r--r--2026/games/liquidcake1/queue.mjs30
1 files changed, 30 insertions, 0 deletions
diff --git a/2026/games/liquidcake1/queue.mjs b/2026/games/liquidcake1/queue.mjs
new file mode 100644
index 0000000..e6c3efe
--- /dev/null
+++ b/2026/games/liquidcake1/queue.mjs
@@ -0,0 +1,30 @@
+export class Queue {
+ /* Structure is a (hopefully short) list of (longer) lists.
+ * Queue to the last list.
+ * Hold index into first list.
+ */
+ length = 0;
+ index = -1;
+ content = [[]];
+ max_len = 100;
+ push(x) {
+ let content = this.content;
+ if (content[content.length - 1].length > this.max_len) {
+ content.push([]);
+ }
+ content[content.length - 1].push(x);
+ this.length += 1;
+ }
+ pop() {
+ this.index += 1;
+ if (this.index >= this.content[0].length) {
+ if (this.content.length == 1) {
+ throw("empty");
+ }
+ this.content.shift();
+ this.index = 0;
+ }
+ this.length -= 1;
+ return this.content[0][this.index];
+ }
+}