sanket3280/code-execution
0
1module.exports = function dequeWrapper({ sourceCode, language }) {2 let prefix = '';3 switch (language) {4 case 'JAVASCRIPT_NODE':5 prefix = `6// Deque helper (JS)7class __Deque{constructor(){this.q=[]}pushFront(x){this.q.unshift(x)}pushBack(x){this.q.push(x)}popFront(){return this.q.shift()}popBack(){return this.q.pop()}front(){return this.q[0]}back(){return this.q[this.q.length-1]}isEmpty(){return this.q.length===0}size(){return this.q.length}}8`;9 break;10 case 'PYTHON3':11 case 'PYTHON3_8':12 prefix = `13# Deque helper (Python)14from collections import deque as __deque15class __Deque:16 def __init__(self):17 self.q = __deque()18 def push_front(self, x):19 self.q.appendleft(x)20 def push_back(self, x):21 self.q.append(x)22 def pop_front(self):23 return self.q.popleft() if self.q else None24 def pop_back(self):25 return self.q.pop() if self.q else None26 def front(self):27 return self.q[0] if self.q else None28 def back(self):29 return self.q[-1] if self.q else None30 def is_empty(self):31 return len(self.q)==032 def size(self):33 return len(self.q)34`;35 break;36 case 'JAVA':37 prefix = `38// Deque helper (Java)39class __Deque { java.util.ArrayDeque<Integer> q=new java.util.ArrayDeque<>(); void pushFront(int x){q.addFirst(x);} void pushBack(int x){q.addLast(x);} int popFront(){return q.removeFirst();} int popBack(){return q.removeLast();} Integer front(){return q.peekFirst();} Integer back(){return q.peekLast();} boolean isEmpty(){return q.isEmpty();} int size(){return q.size();} }40`;41 break;42 case 'CPP14':43 case 'CPP':44 prefix = `45// Deque helper (C++)46struct __Deque { std::deque<int> q; void pushFront(int x){q.push_front(x);} void pushBack(int x){q.push_back(x);} int popFront(){int v=q.front(); q.pop_front(); return v;} int popBack(){int v=q.back(); q.pop_back(); return v;} int front(){return q.front();} int back(){return q.back();} bool isEmpty(){return q.empty();} int size(){return (int)q.size();} };47`;48 break;49 case 'C':50 prefix = `51/* Deque helper (C) - simplified using array */52typedef struct { int a[10005]; int h,t; } __Deque; void __deque_init(__Deque* d){d->h=d->t=5000;} void __deque_push_front(__Deque* d,int x){d->a[--d->h]=x;} void __deque_push_back(__Deque* d,int x){d->a[d->t++]=x;} int __deque_pop_front(__Deque* d){return d->a[d->h++];} int __deque_pop_back(__Deque* d){return d->a[--d->t];} int __deque_front(__Deque* d){return d->a[d->h];} int __deque_back(__Deque* d){return d->a[d->t-1];} int __deque_empty(__Deque* d){return d->h==d->t;} int __deque_size(__Deque* d){return d->t-d->h;}53`;54 break;55 case 'CSHARP':56 prefix = `57// Deque helper (C#)58class __Deque { System.Collections.Generic.LinkedList<int> q=new System.Collections.Generic.LinkedList<int>(); public void PushFront(int x){q.AddFirst(x);} public void PushBack(int x){q.AddLast(x);} public int PopFront(){int v=q.First.Value; q.RemoveFirst(); return v;} public int PopBack(){int v=q.Last.Value; q.RemoveLast(); return v;} public int Front()=>q.First.Value; public int Back()=>q.Last.Value; public bool IsEmpty()=>q.Count==0; public int Size()=>q.Count; }59`;60 break;61 default:62 return { sourceCode, usedRunner: false };63 }64 return { sourceCode: prefix + sourceCode, usedRunner: false };65};66 67 68 