Skip to content

Instantly share code, notes, and snippets.

@Yonet
Created June 11, 2015 04:35
Show Gist options
  • Save Yonet/56c4c9477810d5350329 to your computer and use it in GitHub Desktop.
Save Yonet/56c4c9477810d5350329 to your computer and use it in GitHub Desktop.
var chairs = {
totalNodes: 1,
nodes: {1:{next: null, prev: null, val: 1}},
addNextNode: addNextNode,
removeNode: removeNode
}
function removeNode(node){
node.prev.next = node.next;
node.next.prev = node.prev;
this.totalNodes--;
}
function addNextNode(node, num){
var next = this.nodes[1];
this.nodes[num] = {
next: next,
prev: node,
val: num
}
node.next = this.nodes[num];
this.nodes[1].prev = this.nodes[num];
this.totalNodes++;
}
var createNodes = function(N){
var currentNode = chairs.nodes[1];
for (var i = 2; i <= N; i++){
chairs.addNextNode(currentNode, i);
currentNode = currentNode.next;
}
}
createNodes(11);
var deleteChairs = function(){
var skip = 1;
var currentNode = chairs.nodes[1];
while(chairs.totalNodes > 1){
var newNode = currentNode.next;
chairs.removeNode(currentNode);
for(var j = 0; j < skip; j++){
newNode = newNode.next;
}
currentNode = newNode;
skip++;
}
return currentNode.val;
};
deleteChairs();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment