28 lines
658 B
JavaScript
28 lines
658 B
JavaScript
var Josephus = {
|
|
init: function(n) {
|
|
this.head = {};
|
|
var current = this.head;
|
|
for (var i = 0; i < n-1; i++) {
|
|
current.label = i+1;
|
|
current.next = {prev: current};
|
|
current = current.next;
|
|
}
|
|
current.label = n;
|
|
current.next = this.head;
|
|
this.head.prev = current;
|
|
return this;
|
|
},
|
|
kill: function(spacing) {
|
|
var current = this.head;
|
|
while (current.next !== current) {
|
|
for (var i = 0; i < spacing-1; i++) {
|
|
current = current.next;
|
|
}
|
|
current.prev.next = current.next;
|
|
current.next.prev = current.prev;
|
|
current = current.next;
|
|
}
|
|
return current.label;
|
|
}
|
|
}
|