var ensureTwoPower = function(n) { if (n && !(n & (n - 1))) return n; var p = 1; while (p < n) p <<= 1; return p; }; var Cyclist = function(size) { if (!(this instanceof Cyclist)) return new Cyclist(size); size = ensureTwoPower(size); this.mask = size-1; this.size = size; this.values = new Array(size); }; Cyclist.prototype.put = function(index, val) { var pos = index & this.mask; this.values[pos] = val; return pos; }; Cyclist.prototype.get = function(index) { return this.values[index & this.mask]; }; Cyclist.prototype.del = function(index) { var pos = index & this.mask; var val = this.values[pos]; this.values[pos] = undefined; return val; }; module.exports = Cyclist;