diff --git a/Claudio-test.code-workspace b/Claudio-test.code-workspace new file mode 100644 index 0000000..c5f17df --- /dev/null +++ b/Claudio-test.code-workspace @@ -0,0 +1,10 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "codestream.team": "Team CodeStream" + } +} \ No newline at end of file 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..e1ae0ae 100644 --- a/underscore.js +++ b/underscore.js @@ -3,13 +3,41 @@ _.min = function(obj, iteratee, context) { lastComputed = Infinity, value, computed; + + 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); + }; + + _.sortBy = function(obj, iteratee, context) { + var index = 0; + + + + + iteratee = cb(iteratee, context); + return _.pluck( + _.map(obj, function(value, key, list) { + + + + + if ( iteratee == null || + (typeof iteratee == "number" && typeof obj[0] != "object" && obj != null) ) { obj = isArrayLike(obj) ? obj : _.values(obj); for (var i = 0, length = obj.length; i < length; i++) { value = obj[i]; + Reset); if (value != null && value < result) { result = value; } @@ -19,7 +47,10 @@ _.min = function(obj, iteratee, context) { _.each(obj, function(v, index, list) { computed = iteratee(v, index, list); if (computed < lastComputed || (computed === Infinity && result === Infinity)) { + + result = v; + lastComputed = computed; } }); @@ -27,9 +58,29 @@ _.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); -}; +} _.sample = function(obj, n, guard) { if (n == null || guard) { @@ -38,6 +89,8 @@ _.sample = function(obj, n, guard) { } 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++) { @@ -51,16 +104,25 @@ _.sample = function(obj, n, guard) { _.sortBy = function(obj, iteratee, context) { var index = 0; + + + + iteratee = cb(iteratee, context); return _.pluck( _.map(obj, function(value, key, list) { return { + + value: value, index: index++, criteria: iteratee(value, key, list) }; + + }).sort(function(left, right) { var a = left.criteria; + var b = right.criteria; if (a !== b) { if (a > b || a === void 0) return 1;