From 3935668bb0b44df335c878efc23d371988d6b912 Mon Sep 17 00:00:00 2001 From: mgchmiel Date: Thu, 22 Feb 2018 15:53:40 -0500 Subject: [PATCH 1/6] WIP --- src/recursion.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/recursion.js b/src/recursion.js index a6a6c13..aff91af 100644 --- a/src/recursion.js +++ b/src/recursion.js @@ -3,6 +3,7 @@ const nFibonacci = (n) => { // fibonacci sequence: 1 1 2 3 5 8 13 ... // return the nth number in the sequence + n = }; const nFactorial = (n) => { From 1fa596065cd71e5269fd4f57f7d93dceb2d4391e Mon Sep 17 00:00:00 2001 From: mgchmiel Date: Thu, 22 Feb 2018 17:05:52 -0500 Subject: [PATCH 2/6] thank you google --- package-lock.json | 165 +++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- src/recursion.js | 32 +++++++-- 3 files changed, 177 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index c2d7130..1b6fa4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "js-homework-1", + "name": "javascript-ii", "version": "1.0.0", "lockfileVersion": 1, "requires": true, @@ -127,6 +127,14 @@ "sprintf-js": "1.0.3" } }, + "aria-query": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.3.0.tgz", + "integrity": "sha1-y4qZhOKGJxHIPICt5bj1yg3itGc=", + "requires": { + "ast-types-flow": "0.0.7" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -169,6 +177,15 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, + "array.prototype.find": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", + "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -187,6 +204,11 @@ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", @@ -1049,6 +1071,11 @@ "es5-ext": "0.10.30" } }, + "damerau-levenshtein": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", + "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=" + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1095,6 +1122,15 @@ "strip-bom": "2.0.0" } }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", @@ -1151,6 +1187,11 @@ "jsbn": "0.1.1" } }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==" + }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", @@ -1169,6 +1210,28 @@ "is-arrayish": "0.2.1" } }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, "es5-ext": { "version": "0.10.30", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", @@ -1458,6 +1521,40 @@ } } }, + "eslint-plugin-jsx-a11y": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-4.0.0.tgz", + "integrity": "sha1-d5uw/nsI2lZKQiYkkR3hAGHgSO4=", + "requires": { + "aria-query": "0.3.0", + "ast-types-flow": "0.0.7", + "damerau-levenshtein": "1.0.4", + "emoji-regex": "6.5.1", + "jsx-ast-utils": "1.4.1", + "object-assign": "4.1.1" + } + }, + "eslint-plugin-react": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.9.0.tgz", + "integrity": "sha1-VMLpkGt2+dEBQgML3DTp1oQKC7I=", + "requires": { + "array.prototype.find": "2.0.4", + "doctrine": "1.5.0", + "jsx-ast-utils": "1.4.1" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + } + } + }, "eslint-restricted-globals": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", @@ -1673,6 +1770,11 @@ "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -1699,8 +1801,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "generate-function": { "version": "2.0.0", @@ -1853,7 +1954,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, "requires": { "function-bind": "1.1.1" } @@ -2022,6 +2122,11 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" + }, "is-ci": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", @@ -2031,6 +2136,11 @@ "ci-info": "1.1.1" } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -2148,6 +2258,14 @@ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.1" + } + }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", @@ -2157,6 +2275,11 @@ "tryit": "1.0.3" } }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2172,8 +2295,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -2688,6 +2810,11 @@ } } }, + "jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -2929,8 +3056,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" }, "object.omit": { "version": "2.0.1", @@ -3695,15 +3826,6 @@ } } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", @@ -3724,6 +3846,15 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", diff --git a/package.json b/package.json index f761ac7..6c36267 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "repository": { "type": "git", "url": "git+https://github.com/LambdaSchool/javascript-ii.git" - }, + }, "devDependencies": { "babel-jest": "^19.0.0", "eslint": "^3.17.1", diff --git a/src/recursion.js b/src/recursion.js index aff91af..f7546ab 100644 --- a/src/recursion.js +++ b/src/recursion.js @@ -1,20 +1,44 @@ // Complete the following functions. const nFibonacci = (n) => { - // fibonacci sequence: 1 1 2 3 5 8 13 ... + if (n <= 1) { + return n; + } + return nFibonacci(n - 2) + nFibonacci(n - 1); // fibonacci sequence: 1 1 2 3 5 8 13 ... // return the nth number in the sequence - n = }; const nFactorial = (n) => { // factorial example: !5 = 5 * 4 * 3 * 2 * 1 // return the factorial of `n` + if (n <= 1) { + return 1; + } + return n * nFactorial(n - 1); }; /* Extra Credit */ const checkMatchingLeaves = (obj) => { - // return true if every property on `obj` is the same - // otherwise return false + let result = true; + const leaves = []; + const recur = (objGiven) => { + Object.keys(objGiven).forEach((key) => { + if (typeof objGiven[key] === 'number' || typeof objGiven[key] === 'string') { + leaves.push(objGiven[key]); + } + if (typeof objGiven[key] === 'object') { + recur(objGiven[key]); + } + }); + }; + recur(obj); + leaves.reduce((memo, i) => { + if (memo !== i) { + result = false; + } + return i; + }); + return result; }; /* eslint-enable no-unused-vars */ From dec0e1bc257d9c60f09b1efed259564ef6f8012a Mon Sep 17 00:00:00 2001 From: Megan Williamson Date: Thu, 22 Feb 2018 15:20:15 -0800 Subject: [PATCH 3/6] Megan Williamson | recursion complete --- package-lock.json | 165 +++++++++++++++++++++++++++++++++++++++++----- package.json | 2 +- src/class.js | 28 ++++++++ src/recursion.js | 32 ++++++++- 4 files changed, 206 insertions(+), 21 deletions(-) diff --git a/package-lock.json b/package-lock.json index c2d7130..1b6fa4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "js-homework-1", + "name": "javascript-ii", "version": "1.0.0", "lockfileVersion": 1, "requires": true, @@ -127,6 +127,14 @@ "sprintf-js": "1.0.3" } }, + "aria-query": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-0.3.0.tgz", + "integrity": "sha1-y4qZhOKGJxHIPICt5bj1yg3itGc=", + "requires": { + "ast-types-flow": "0.0.7" + } + }, "arr-diff": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", @@ -169,6 +177,15 @@ "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=", "dev": true }, + "array.prototype.find": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.0.4.tgz", + "integrity": "sha1-VWpcU2LAhkgyPdrrnenRS8GGTJA=", + "requires": { + "define-properties": "1.1.2", + "es-abstract": "1.10.0" + } + }, "arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -187,6 +204,11 @@ "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=", "dev": true }, + "ast-types-flow": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", + "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=" + }, "async": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/async/-/async-2.5.0.tgz", @@ -1049,6 +1071,11 @@ "es5-ext": "0.10.30" } }, + "damerau-levenshtein": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.4.tgz", + "integrity": "sha1-AxkcQyy27qFou3fzpV/9zLiXhRQ=" + }, "dashdash": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", @@ -1095,6 +1122,15 @@ "strip-bom": "2.0.0" } }, + "define-properties": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.2.tgz", + "integrity": "sha1-g6c/L+pWmJj7c3GTyPhzyvbUXJQ=", + "requires": { + "foreach": "2.0.5", + "object-keys": "1.0.11" + } + }, "del": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", @@ -1151,6 +1187,11 @@ "jsbn": "0.1.1" } }, + "emoji-regex": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-6.5.1.tgz", + "integrity": "sha512-PAHp6TxrCy7MGMFidro8uikr+zlJJKJ/Q6mm2ExZ7HwkyR9lSVFfE3kt36qcwa24BQL7y0G9axycGjK1A/0uNQ==" + }, "errno": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.4.tgz", @@ -1169,6 +1210,28 @@ "is-arrayish": "0.2.1" } }, + "es-abstract": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz", + "integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==", + "requires": { + "es-to-primitive": "1.1.1", + "function-bind": "1.1.1", + "has": "1.0.1", + "is-callable": "1.1.3", + "is-regex": "1.0.4" + } + }, + "es-to-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.1.1.tgz", + "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=", + "requires": { + "is-callable": "1.1.3", + "is-date-object": "1.0.1", + "is-symbol": "1.0.1" + } + }, "es5-ext": { "version": "0.10.30", "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.30.tgz", @@ -1458,6 +1521,40 @@ } } }, + "eslint-plugin-jsx-a11y": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-4.0.0.tgz", + "integrity": "sha1-d5uw/nsI2lZKQiYkkR3hAGHgSO4=", + "requires": { + "aria-query": "0.3.0", + "ast-types-flow": "0.0.7", + "damerau-levenshtein": "1.0.4", + "emoji-regex": "6.5.1", + "jsx-ast-utils": "1.4.1", + "object-assign": "4.1.1" + } + }, + "eslint-plugin-react": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-6.9.0.tgz", + "integrity": "sha1-VMLpkGt2+dEBQgML3DTp1oQKC7I=", + "requires": { + "array.prototype.find": "2.0.4", + "doctrine": "1.5.0", + "jsx-ast-utils": "1.4.1" + }, + "dependencies": { + "doctrine": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz", + "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=", + "requires": { + "esutils": "2.0.2", + "isarray": "1.0.0" + } + } + } + }, "eslint-restricted-globals": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/eslint-restricted-globals/-/eslint-restricted-globals-0.1.1.tgz", @@ -1673,6 +1770,11 @@ "for-in": "1.0.2" } }, + "foreach": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz", + "integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=" + }, "forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -1699,8 +1801,7 @@ "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, "generate-function": { "version": "2.0.0", @@ -1853,7 +1954,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/has/-/has-1.0.1.tgz", "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=", - "dev": true, "requires": { "function-bind": "1.1.1" } @@ -2022,6 +2122,11 @@ "builtin-modules": "1.1.1" } }, + "is-callable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.3.tgz", + "integrity": "sha1-hut1OSgF3cM69xySoO7fdO52BLI=" + }, "is-ci": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.0.10.tgz", @@ -2031,6 +2136,11 @@ "ci-info": "1.1.1" } }, + "is-date-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", + "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" + }, "is-dotfile": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", @@ -2148,6 +2258,14 @@ "integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=", "dev": true }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "requires": { + "has": "1.0.1" + } + }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", @@ -2157,6 +2275,11 @@ "tryit": "1.0.3" } }, + "is-symbol": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.1.tgz", + "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=" + }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", @@ -2172,8 +2295,7 @@ "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "isexe": { "version": "2.0.0", @@ -2688,6 +2810,11 @@ } } }, + "jsx-ast-utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-1.4.1.tgz", + "integrity": "sha1-OGchPo3Xm/Ho8jAMDPwe+xgsDfE=" + }, "kind-of": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", @@ -2929,8 +3056,12 @@ "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-keys": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz", + "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=" }, "object.omit": { "version": "2.0.1", @@ -3695,15 +3826,6 @@ } } }, - "string_decoder": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", - "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", - "dev": true, - "requires": { - "safe-buffer": "5.1.1" - } - }, "string-length": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/string-length/-/string-length-1.0.1.tgz", @@ -3724,6 +3846,15 @@ "strip-ansi": "3.0.1" } }, + "string_decoder": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz", + "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==", + "dev": true, + "requires": { + "safe-buffer": "5.1.1" + } + }, "stringstream": { "version": "0.0.5", "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.5.tgz", diff --git a/package.json b/package.json index f761ac7..6c36267 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "repository": { "type": "git", "url": "git+https://github.com/LambdaSchool/javascript-ii.git" - }, + }, "devDependencies": { "babel-jest": "^19.0.0", "eslint": "^3.17.1", diff --git a/src/class.js b/src/class.js index 1ec26ec..2ffd38d 100644 --- a/src/class.js +++ b/src/class.js @@ -20,6 +20,34 @@ // property set on the Cat instance. // code here +// function Animal (object) { //constructor function +// this.type = object.type; +// this.name = object.name; +// this.sound = object.sound; +// this.speak = function() { +// return this.sound; +// }; +// } + +// const doggo = new Animal({type: 'Dog', name: 'Murphy', sound: 'Woof'}); +// console.log(doggo); +// console.log(doggo.name); +// console.log(doggo.speak()); +// const liger = new Animal({type: 'Liger', name: 'Leroy', sound: 'Nyeeoow'}); +// console.log(liger); + +// Declaring a Class + +class Animal { + constructor(object) { + this.type = object.type; + this.name = object.name; + this.sound = object.sound; + } + speak() { + return this.sound; + } +} /* eslint-disable no-undef */ diff --git a/src/recursion.js b/src/recursion.js index aff91af..28467e5 100644 --- a/src/recursion.js +++ b/src/recursion.js @@ -3,20 +3,46 @@ const nFibonacci = (n) => { // fibonacci sequence: 1 1 2 3 5 8 13 ... // return the nth number in the sequence - n = + if (n <= 1) { + return n; + } + return nFibonacci(n - 2) + nFibonacci(n - 1); }; const nFactorial = (n) => { // factorial example: !5 = 5 * 4 * 3 * 2 * 1 // return the factorial of `n` + if (n <= 1) { + return 1; + } + return n * nFactorial(n - 1); }; /* Extra Credit */ const checkMatchingLeaves = (obj) => { - // return true if every property on `obj` is the same - // otherwise return false + let result = true; + const leaves = []; + const recur = (objGiven) => { + Object.keys(objGiven).forEach((key) => { + if (typeof objGiven[key] === 'number' || typeof objGiven[key] === 'string') { + leaves.push(objGiven[key]); + } + if (typeof objGiven[key] === 'object') { + recur(objGiven[key]); + } + }); + }; + recur(obj); + leaves.reduce((memo, i) => { + if (memo !== i) { + result = false; + } + return i; + }); + return result; }; + /* eslint-enable no-unused-vars */ module.exports = { From 9d0fbfb8a1596b523c0b2685052974afda47e920 Mon Sep 17 00:00:00 2001 From: mgchmiel Date: Mon, 26 Feb 2018 09:05:08 -0500 Subject: [PATCH 4/6] Finished --- src/this.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/this.js b/src/this.js index f0f994c..a9f48a5 100644 --- a/src/this.js +++ b/src/this.js @@ -6,6 +6,9 @@ class User { constructor(options) { + this.username = options.username; + this.password = options.password; + this.checkPassword = options.checkPassword; // set a username and password property on the user object that is created } // create a method on the User class called `checkPassword` @@ -16,13 +19,17 @@ class User { const me = new User({ username: 'LambdaSchool', password: 'correcthorsebatterystaple', + checkPassword(otherpassword) { + return this.password === otherpassword; + }, }); const result = me.checkPassword('correcthorsebatterystaple'); // should return `true` - +console.log(result); /* part 2 */ const checkPassword = function comparePasswords(passwordToCompare) { + return this.password === passwordToCompare; // recreate the `checkPassword` method that you made on the `User` class // use `this` to access the object's `password` property. // do not modify this function's parameters @@ -33,7 +40,9 @@ const checkPassword = function comparePasswords(passwordToCompare) { // use .call, .apply, and .bind // .call - +console.log(checkPassword.call(me, 'correcthorsebatterystaple')); // .apply - +console.log(checkPassword.apply(me, ['correcthorsebatterystaple'])); // .bind +const checkPasswordme = checkPassword.bind(me); +console.log(checkPasswordme('coorecthorsebatterystaple')); From 7685e6df49c29485e681a52d4229329bb214dd89 Mon Sep 17 00:00:00 2001 From: mgchmiel Date: Wed, 21 Mar 2018 23:50:29 -0400 Subject: [PATCH 5/6] CHANGES --- src/prototype.js | 55 ++++++++++++++++++++++++++++++++++++++++++++++-- src/this.js | 10 ++++----- 2 files changed, 58 insertions(+), 7 deletions(-) diff --git a/src/prototype.js b/src/prototype.js index e2494a6..eee6a2b 100644 --- a/src/prototype.js +++ b/src/prototype.js @@ -7,8 +7,59 @@ createdAt dimensions destroy() // prototype method -> returns the string 'Game object was removed from the game.' - - NPC +*/ +class GameObject { + this.createdAt = gameOptions.createdAt; + this.dimensions = gameOptions.dimensions +} +{ + { +destroy() +return this `${this.dimensions} was removed from the game.`; +} +} +class NPC extends GameObject { + constructor(npcOptions) { + super(npcOptions) { + this.hp = npcOptions.hp; + this.name = npcOptions.name + } + takeDamage() { + return `${this.name} took damage.`; + } + } +} + class newHumanoid extends NPC { + constructor(humanoidOptions) { + super(humanoidOptions); + this.factions = humanoidOptions.factions; + this.weapons = humanoidOptions.weapons; + this.language = humanoidOptions.language; + } + greet() { + return `${this.name} offers a gretting in ${this.languge}`; + } + } + const newHumanoid = newHumanoid({ + createdAt: new Date(), + dimensions: { + length: 2, + width: 1, + height: 1, + }, + gameName: 'Game Object', + hp: 1, + name: 'PUBG', + faction: 'Sverny', + weapons: [ + 'akm', + 'sickle' + ], + language: 'Ruby', + }); + newHumanoid.greet(); + console.log(newHumanoid.dimensions); + /* NPC hp name takeDamage() // prototype method -> returns the string ' took damage.' diff --git a/src/this.js b/src/this.js index a9f48a5..fae53a2 100644 --- a/src/this.js +++ b/src/this.js @@ -18,13 +18,13 @@ class User { const me = new User({ username: 'LambdaSchool', - password: 'correcthorsebatterystaple', + password: 'correct', checkPassword(otherpassword) { return this.password === otherpassword; }, }); -const result = me.checkPassword('correcthorsebatterystaple'); // should return `true` +const result = me.checkPassword('correct'); // should return `true` console.log(result); /* part 2 */ @@ -40,9 +40,9 @@ const checkPassword = function comparePasswords(passwordToCompare) { // use .call, .apply, and .bind // .call -console.log(checkPassword.call(me, 'correcthorsebatterystaple')); +console.log(checkPassword.call(me, 'correct')); // .apply -console.log(checkPassword.apply(me, ['correcthorsebatterystaple'])); +console.log(checkPassword.apply(me, ['correct'])); // .bind const checkPasswordme = checkPassword.bind(me); -console.log(checkPasswordme('coorecthorsebatterystaple')); +console.log(checkPasswordme('coorect')); From 99437144da140de2aae9345c73623d5611b8ed01 Mon Sep 17 00:00:00 2001 From: mgchmiel Date: Thu, 22 Mar 2018 15:38:17 -0400 Subject: [PATCH 6/6] Spelling Errors --- src/class.js | 2 +- src/prototype.js | 94 ++++++++++++++++++++++++------------------------ 2 files changed, 49 insertions(+), 47 deletions(-) diff --git a/src/class.js b/src/class.js index ff52e64..8ef6c8b 100644 --- a/src/class.js +++ b/src/class.js @@ -34,7 +34,7 @@ class Animal { this.age = options.age; } growOlder() { - return this.age + 1; + return ++this.age; } } diff --git a/src/prototype.js b/src/prototype.js index eee6a2b..648543a 100644 --- a/src/prototype.js +++ b/src/prototype.js @@ -9,56 +9,58 @@ destroy() // prototype method -> returns the string 'Game object was removed from the game.' */ class GameObject { - this.createdAt = gameOptions.createdAt; - this.dimensions = gameOptions.dimensions -} -{ - { -destroy() -return this `${this.dimensions} was removed from the game.`; -} -} + constructor(gameOptions) { + this.createdAt = gameOptions.createdAt; + this.dimensions = gameOptions.dimensions; + } + // destroy() { + // return `Game object was removed from the game.`; + } +GameObject.prototype.destroy = function destroy() { + return 'Game object was removed from the game.'; +}; class NPC extends GameObject { constructor(npcOptions) { - super(npcOptions) { - this.hp = npcOptions.hp; - this.name = npcOptions.name - } - takeDamage() { - return `${this.name} took damage.`; - } + super(npcOptions); + this.hp = npcOptions.hp; + this.name = npcOptions.name; } -} - class newHumanoid extends NPC { - constructor(humanoidOptions) { - super(humanoidOptions); - this.factions = humanoidOptions.factions; - this.weapons = humanoidOptions.weapons; - this.language = humanoidOptions.language; - } - greet() { - return `${this.name} offers a gretting in ${this.languge}`; - } + takeDamage() { + return `${this.name} took damage.`; } - const newHumanoid = newHumanoid({ - createdAt: new Date(), - dimensions: { - length: 2, - width: 1, - height: 1, - }, - gameName: 'Game Object', - hp: 1, - name: 'PUBG', - faction: 'Sverny', - weapons: [ - 'akm', - 'sickle' - ], - language: 'Ruby', - }); - newHumanoid.greet(); - console.log(newHumanoid.dimensions); + } +class Humanoid extends NPC { + constructor(humanoidOptions) { + super(humanoidOptions); + this.faction = humanoidOptions.faction; + this.weapons = humanoidOptions.weapons; + this.language = humanoidOptions.language; + } + greet() { + return `${this.name} offers a greeting in ${this.language}.`; + } + } +const newPlayer = new Humanoid({ + createdAt: new Date(), + dimensions: { + length: 5, + width: 5, + height: 15, + }, + gameName: 'Game Object', + hp: 100, + name: 'PUBG', + faction: 'Sverny', + weapons: [ + 'AKM', + 'Pan', + ], + language: 'Common Tongue', +}); +newPlayer.greet(); +newPlayer.takeDamage(); +newPlayer.destroy(); + /* NPC hp name