SOURCE

class dbQueue{
    constructor(){
        this.dbqueue = {};
        this.startIndex = 0;
        this.endIndex = 0
    }
    isEmpty(){
        return this.endIndex === this.startIndex;
    }
    addFront(val){
        this.startIndex --;
        this.dbqueue[this.startIndex] = val;
        return this.dbqueue;
    }
    addBack(val){
        this.dbqueue[this.endIndex] = val;
        this.endIndex++;
        return this.dbqueue;
    }
    removeFront(){
        if(!this.isEmpty()){
            let front = this.dbqueue[this.startIndex]
            delete this.dbqueue[this.startIndex];
            this.startIndex++;
            return front;
        }
        return undefined;
        
    }
    removeBack(){
        if(this.endIndex>0){
            let back = this.dbqueue[this.endIndex];
            delete this.dbqueue[this.endIndex];
            this.endIndex--;
            return back;
        }
        return undefined;
        
    }
    peekFront(){
        if(this.startIndex>=0) return this.dbqueue[this.startIndex];
    }
    peekBack(){
        if(this.endIndex>=0) return this.dbqueue[this.endIndex];
    }
    clear(){
        this.dbqueue= {};
        this.startIndex = 0;
        this.endIndex = 0;
    }
    size(){
        return this.endIndex - this.startIndex;
    }
    toString(){
        if(this.isEmpty()) return '';
        let result = this.dbqueue[this.startIndex];
        for(let i = this.startIndex+1;i<this.endIndex;i++){
            result = `@{result},@{this.dbqueue[i]}`;
        }
        return result;
    }
}

function hotPotato(list,num){
    let dbqueue = new dbQueue();
    for(let i = 0;i<list.length;i++){
        dbqueue.addBack(list[i]);
    }
    let eliminateList = [];
    while(dbqueue.size()>1){
        for(let i = 0;i<num-1;i++){
         dbqueue.addBack(dbqueue.removeFront());
     }
     eliminateList.push(dbqueue.removeFront());
    }

    return{
        eliminateList:eliminateList,
        winner:dbqueue.removeFront()
    }
    
}

let testList = ["anthoy","john","ben","ivy","lila","jeffery"];
console.log(hotPotato(testList,4).winner);
console.log(hotPotato(testList,4).eliminateList);

console.log(null == 0);
console 命令行工具 X clear

                    
>
console