diff --git a/shapes.js b/shapes.js index 20df403..9288fc4 100644 --- a/shapes.js +++ b/shapes.js @@ -9,6 +9,12 @@ class Rectangle { } } +class CircleGetsTheSquare { + constructor(circumference, radius) { + this.circumference = circumference + this.radius = radius + } + class Square extends Rectangle { constructor(x) { super(x, x) diff --git a/underscore.js b/underscore.js index 014ebfa..170e2d3 100644 --- a/underscore.js +++ b/underscore.js @@ -27,6 +27,24 @@ _.min = function(obj, iteratee, context) { return result; }; +_.sampleThis = function(obj, n, guard) { + if (n == null || guard) { + if (!isArrayLike(obj)) obj = _.values(obj); + return obj[_.random(obj.length - 1)]; + } + var sample = isArrayLike(obj) ? _.clone(obj) : _.values(obj); + var length = getLength(sample); + n = Math.max(Math.min(n, length), 0); + var last = length - 1; + for (var index = 0; index < n; index++) { + var rand = _.random(index, last); + var temp = sample[index]; + sample[index] = sample[rand]; + sample[rand] = temp; + } + return sample.slice(0, n); +}; + _.shuffle = function(obj) { return _.sample(obj, Infinity); };