diff --git a/seed/challenges/00-getting-started/getting-started.json b/seed/challenges/00-getting-started/getting-started.json index d105874619..cb3ed53dc1 100644 --- a/seed/challenges/00-getting-started/getting-started.json +++ b/seed/challenges/00-getting-started/getting-started.json @@ -2,6 +2,7 @@ "name": "Getting Started", "order": 1, "time": "15m", + "helpRoom": "Help", "challenges": [ { "id": "560add10cb82ac38a17513be", diff --git a/seed/challenges/01-front-end-development-certification/advanced-bonfires.json b/seed/challenges/01-front-end-development-certification/advanced-bonfires.json index 3a49435492..9930db2523 100644 --- a/seed/challenges/01-front-end-development-certification/advanced-bonfires.json +++ b/seed/challenges/01-front-end-development-certification/advanced-bonfires.json @@ -2,6 +2,7 @@ "name": "Advanced Algorithm Scripting", "order": 12, "time": "50h", + "helpRoom": "HelpJavaScript", "challenges": [ { "id": "aff0395860f5d3034dc0bfc9", diff --git a/seed/challenges/01-front-end-development-certification/basic-bonfires.json b/seed/challenges/01-front-end-development-certification/basic-bonfires.json index 66146ca022..2183e7d319 100644 --- a/seed/challenges/01-front-end-development-certification/basic-bonfires.json +++ b/seed/challenges/01-front-end-development-certification/basic-bonfires.json @@ -2,6 +2,7 @@ "name": "Basic Algorithm Scripting", "order": 8, "time": "50h", + "helpRoom": "HelpJavaScript", "challenges": [ { "id": "bd7158d2c442eddfbeb5bd1f", diff --git a/seed/challenges/01-front-end-development-certification/basic-javascript.json b/seed/challenges/01-front-end-development-certification/basic-javascript.json index a3ab766538..3e3b7bbe35 100644 --- a/seed/challenges/01-front-end-development-certification/basic-javascript.json +++ b/seed/challenges/01-front-end-development-certification/basic-javascript.json @@ -2,6 +2,7 @@ "name": "Basic JavaScript", "time": "10h", "order": 6, + "helpRoom": "HelpJavaScript", "challenges": [ { "id": "bd7123c9c441eddfaeb4bdef", diff --git a/seed/challenges/01-front-end-development-certification/basic-ziplines.json b/seed/challenges/01-front-end-development-certification/basic-ziplines.json index 57ae6c21b9..c94f4b28d6 100644 --- a/seed/challenges/01-front-end-development-certification/basic-ziplines.json +++ b/seed/challenges/01-front-end-development-certification/basic-ziplines.json @@ -2,6 +2,7 @@ "name": "Basic Front End Development Projects", "order": 9, "time": "100h", + "helpRoom": "HelpFrontEnd", "challenges": [ { "id": "bd7158d8c442eddfbeb5bd1f", diff --git a/seed/challenges/01-front-end-development-certification/bootstrap.json b/seed/challenges/01-front-end-development-certification/bootstrap.json index 8fc4b9be3d..7ef432101b 100644 --- a/seed/challenges/01-front-end-development-certification/bootstrap.json +++ b/seed/challenges/01-front-end-development-certification/bootstrap.json @@ -2,6 +2,7 @@ "name": "Responsive Design with Bootstrap", "order": 3, "time": "5h", + "helpRoom": "Help", "challenges": [ { "id": "bad87fee1348bd9acde08712", diff --git a/seed/challenges/01-front-end-development-certification/html5-and-css.json b/seed/challenges/01-front-end-development-certification/html5-and-css.json index 01c565765e..596810fc4a 100644 --- a/seed/challenges/01-front-end-development-certification/html5-and-css.json +++ b/seed/challenges/01-front-end-development-certification/html5-and-css.json @@ -2,6 +2,7 @@ "name": "HTML5 and CSS", "order": 2, "time": "5h", + "helpRoom": "Help", "challenges": [ { "id": "bd7123c8c441eddfaeb5bdef", diff --git a/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json b/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json index b2a5e419fa..999abbd646 100644 --- a/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json +++ b/seed/challenges/01-front-end-development-certification/intermediate-bonfires.json @@ -2,6 +2,7 @@ "name": "Intermediate Algorithm Scripting", "order": 10, "time": "50h", + "helpRoom": "HelpJavaScript", "challenges": [ { "id": "a3566b1109230028080c9345", diff --git a/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json b/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json index f7f21c95fd..e13545eddf 100644 --- a/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json +++ b/seed/challenges/01-front-end-development-certification/intermediate-ziplines.json @@ -2,6 +2,7 @@ "name": "Intermediate Front End Development Projects", "order": 11, "time": "200h", + "helpRoom": "HelpFrontEnd", "challenges": [ { "id": "bd7158d8c442eddfaeb5bd10", diff --git a/seed/challenges/01-front-end-development-certification/jquery.json b/seed/challenges/01-front-end-development-certification/jquery.json index 977281f904..9b6fec48a9 100644 --- a/seed/challenges/01-front-end-development-certification/jquery.json +++ b/seed/challenges/01-front-end-development-certification/jquery.json @@ -2,6 +2,7 @@ "name": "jQuery", "order": 5, "time": "3h", + "helpRoom": "Help", "challenges": [ { "id": "bad87fee1348bd9acdd08826", diff --git a/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json b/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json index 90d75630f5..293cc96ec6 100644 --- a/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json +++ b/seed/challenges/01-front-end-development-certification/json-apis-and-ajax.json @@ -2,6 +2,7 @@ "name": "JSON APIs and Ajax", "order": 10.5, "time": "2h", + "helpRoom": "Help", "challenges": [ { "id": "bb000000000000000000001", diff --git a/seed/challenges/01-front-end-development-certification/object-oriented-and-functional-programming.json b/seed/challenges/01-front-end-development-certification/object-oriented-and-functional-programming.json index f9d0c91340..13a7108dcb 100644 --- a/seed/challenges/01-front-end-development-certification/object-oriented-and-functional-programming.json +++ b/seed/challenges/01-front-end-development-certification/object-oriented-and-functional-programming.json @@ -2,6 +2,7 @@ "name": "Object Oriented and Functional Programming", "order": 7, "time": "2h", + "helpRoom": "HelpJavaScript", "note": [ "Methods", "Closures", diff --git a/seed/challenges/02-data-visualization-certification/d3.json b/seed/challenges/02-data-visualization-certification/d3.json index 0128b92c05..bafab8cd1f 100644 --- a/seed/challenges/02-data-visualization-certification/d3.json +++ b/seed/challenges/02-data-visualization-certification/d3.json @@ -3,6 +3,7 @@ "order": 16, "isComingSoon": true, "time": "5h", + "helpRoom": "HelpDataViz", "challenges": [ { "id": "bd7158d8c423ede2aab5bdee", diff --git a/seed/challenges/02-data-visualization-certification/data-visualization-projects.json b/seed/challenges/02-data-visualization-certification/data-visualization-projects.json index 822062680c..1926622287 100644 --- a/seed/challenges/02-data-visualization-certification/data-visualization-projects.json +++ b/seed/challenges/02-data-visualization-certification/data-visualization-projects.json @@ -2,6 +2,7 @@ "name": "Data Visualization Projects", "order": 17, "time": "200h", + "helpRoom": "HelpDataViz", "challenges": [ { "id": "bd7168d8c242eddfaeb5bd13", diff --git a/seed/challenges/02-data-visualization-certification/react-projects.json b/seed/challenges/02-data-visualization-certification/react-projects.json index 0df0abbbb3..3481585702 100644 --- a/seed/challenges/02-data-visualization-certification/react-projects.json +++ b/seed/challenges/02-data-visualization-certification/react-projects.json @@ -2,6 +2,7 @@ "name": "React Projects", "order": 15, "time": "200h", + "helpRoom": "HelpDataViz", "challenges": [ { "id": "bd7157d8c242eddfaeb5bd13", diff --git a/seed/challenges/02-data-visualization-certification/react.json b/seed/challenges/02-data-visualization-certification/react.json index 482ab4e62d..f326d02ed7 100644 --- a/seed/challenges/02-data-visualization-certification/react.json +++ b/seed/challenges/02-data-visualization-certification/react.json @@ -3,6 +3,7 @@ "order": 14, "isComingSoon": true, "time": "5h", + "helpRoom": "HelpDataViz", "challenges": [ { "id": "bd7158d8c423ede3aeb5bdee", diff --git a/seed/challenges/02-data-visualization-certification/sass.json b/seed/challenges/02-data-visualization-certification/sass.json index 54e0126eba..50e7c49893 100644 --- a/seed/challenges/02-data-visualization-certification/sass.json +++ b/seed/challenges/02-data-visualization-certification/sass.json @@ -3,6 +3,7 @@ "order": 13.5, "isComingSoon": true, "time": "5h", + "helpRoom": "HelpDataViz", "challenges": [ { "id": "bd7158d8c423ede2aeb5bdee", diff --git a/seed/challenges/03-back-end-development-certification/api-projects.json b/seed/challenges/03-back-end-development-certification/api-projects.json index 98c52b7a9f..6fef80f048 100644 --- a/seed/challenges/03-back-end-development-certification/api-projects.json +++ b/seed/challenges/03-back-end-development-certification/api-projects.json @@ -2,6 +2,7 @@ "name": "API Projects", "order": 26, "time": "150h", + "helpRoom": "HelpBackEnd", "challenges": [ { "id": "bd7158d8c443eddfaeb5bcef", diff --git a/seed/challenges/03-back-end-development-certification/automated-testing-and-debugging.json b/seed/challenges/03-back-end-development-certification/automated-testing-and-debugging.json index 90e38c5139..f3f8dd71fa 100644 --- a/seed/challenges/03-back-end-development-certification/automated-testing-and-debugging.json +++ b/seed/challenges/03-back-end-development-certification/automated-testing-and-debugging.json @@ -2,6 +2,7 @@ "name": "Automated Testing and Debugging", "order": 20, "time": "15m", + "helpRoom": "HelpBackEnd", "challenges": [ { "id":"cf1111c1c16feddfaeb6bdef", diff --git a/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json b/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json index b49ac3c868..e2239da0ec 100644 --- a/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json +++ b/seed/challenges/03-back-end-development-certification/dynamic-web-applications.json @@ -2,6 +2,7 @@ "name": "Dynamic Web Application Projects", "order": 27, "time": "250h", + "helpRoom": "HelpBackEnd", "challenges": [ { "id": "bd7158d8c443eddfaeb5bdef", diff --git a/seed/challenges/03-back-end-development-certification/git.json b/seed/challenges/03-back-end-development-certification/git.json index d268d507dc..1500377c66 100644 --- a/seed/challenges/03-back-end-development-certification/git.json +++ b/seed/challenges/03-back-end-development-certification/git.json @@ -2,6 +2,7 @@ "name": "Git", "order" : 24, "time": "3h", + "helpRoom": "HelpBackEnd", "challenges": [ { "id": "bd7353d8c341eddeaeb5bd0f", diff --git a/seed/challenges/03-back-end-development-certification/mongodb.json b/seed/challenges/03-back-end-development-certification/mongodb.json index e7cfec10cb..19265a536b 100644 --- a/seed/challenges/03-back-end-development-certification/mongodb.json +++ b/seed/challenges/03-back-end-development-certification/mongodb.json @@ -2,6 +2,7 @@ "name": "MongoDB", "order" : 25, "time": "3h", + "helpRoom": "HelpBackEnd", "challenges": [ { "id": "bd7243d8c341eddeaeb5bd0f", diff --git a/seed/challenges/03-back-end-development-certification/nodejs-and-expressjs.json b/seed/challenges/03-back-end-development-certification/nodejs-and-expressjs.json index 781f4e7a5d..4f13cd7e7e 100644 --- a/seed/challenges/03-back-end-development-certification/nodejs-and-expressjs.json +++ b/seed/challenges/03-back-end-development-certification/nodejs-and-expressjs.json @@ -2,6 +2,7 @@ "name": "Node.js and Express.js", "order" : 24, "time": "20h", + "helpRoom": "HelpBackEnd", "challenges": [ { "id": "bd7153d8c441eddfaeb5bd0f", diff --git a/seed/challenges/03-back-end-development-certification/upper-intermediate-bonfires.json b/seed/challenges/03-back-end-development-certification/upper-intermediate-bonfires.json new file mode 100644 index 0000000000..34938b4fd1 --- /dev/null +++ b/seed/challenges/03-back-end-development-certification/upper-intermediate-bonfires.json @@ -0,0 +1,164 @@ +{ + "name": "Upper Intermediate Algorithm Scripting", + "order": 19, + "time": "50h", + "helpRoom": "HelpBackEnd", + "challenges": [ + { + "id": "a2f1d72d9b908d0bd72bb9f6", + "title": "Make a Person", + "description": [ + "Fill in the object constructor with the methods specified in the tests.", + "Those methods are getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(last), and setFullName(firstAndLast).", + "All functions that take an argument have an arity of 1, and the argument will be a string.", + "These methods must be the only available means for interacting with the object.", + "Remember to use Read-Search-Ask if you get stuck. Try to pair program. Write your own code." + ], + "challengeSeed": [ + "var Person = function(firstAndLast) {", + " return firstAndLast;", + "};", + "", + "var bob = new Person('Bob Ross');", + "bob.getFullName();" + ], + "tests": [ + "assert.deepEqual(Object.keys(bob).length, 6, 'message: Object.keys(bob).length should return 6.');", + "assert.deepEqual(bob instanceof Person, true, 'message: bob instanceof Person should return true.');", + "assert.deepEqual(bob.firstName, undefined, 'message: bob.firstName should return undefined.');", + "assert.deepEqual(bob.lastName, undefined, 'message: bob.lastName should return undefined.');", + "assert.deepEqual(bob.getFirstName(), 'Bob', 'message: bob.getFirstName() should return \"Bob\".');", + "assert.deepEqual(bob.getLastName(), 'Ross', 'message: bob.getLastName() should return \"Ross\".');", + "assert.deepEqual(bob.getFullName(), 'Bob Ross', 'message: bob.getFullName() should return \"Bob Ross\".');", + "assert.strictEqual((function () { bob.setFirstName(\"Haskell\"); return bob.getFullName(); })(), 'Haskell Ross', 'message: bob.getFullName() should return \"Haskell Ross\" after bob.setFirstName(\"Haskell\").');", + "assert.strictEqual((function () { var _bob=new Person('Haskell Ross'); _bob.setLastName(\"Curry\"); return _bob.getFullName(); })(), 'Haskell Curry', 'message: bob.getFullName() should return \"Haskell Curry\" after bob.setLastName(\"Curry\").');", + "assert.strictEqual((function () { bob.setFullName(\"Haskell Curry\"); return bob.getFullName(); })(), 'Haskell Curry', 'message: bob.getFullName() should return \"Haskell Curry\" after bob.setFullName(\"Haskell Curry\").');", + "assert.strictEqual((function () { bob.setFullName(\"Haskell Curry\"); return bob.getFirstName(); })(), 'Haskell', 'message: bob.getFirstName() should return \"Haskell\" after bob.setFullName(\"Haskell Curry\").');", + "assert.strictEqual((function () { bob.setFullName(\"Haskell Curry\"); return bob.getLastName(); })(), 'Curry', 'message: bob.getLastName() should return \"Curry\" after bob.setFullName(\"Haskell Curry\").');" + ], + "MDNlinks": [ + "Closures", + "Details of the Object Model" + ], + "solutions": [ + "var Person = function(firstAndLast) {\n\n var firstName, lastName;\n\n function updateName(str) { \n firstName = str.split(\" \")[0];\n lastName = str.split(\" \")[1]; \n }\n\n updateName(firstAndLast);\n\n this.getFirstName = function(){\n return firstName;\n };\n \n this.getLastName = function(){\n return lastName;\n };\n \n this.getFullName = function(){\n return firstName + \" \" + lastName;\n };\n \n this.setFirstName = function(str){\n firstName = str;\n };\n \n\n this.setLastName = function(str){\n lastName = str;\n };\n \n this.setFullName = function(str){\n updateName(str);\n };\n};\n\nvar bob = new Person('Bob Ross');\nbob.getFullName();" + ], + "type": "bonfire", + "challengeType": 5, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "Crea una Persona", + "descriptionEs": [ + "Completa el constructor de objetos con los métodos especificados en las pruebas.", + "Los métodos son: getFirstName(), getLastName(), getFullName(), setFirstName(first), setLastName(last), y setFullName(firstAndLast). ", + "Todas las funciones que aceptan un argumento tienen una aridad de 1, y el argumento es una cadena de texto", + "Estos métodos deben ser el único medio para interactuar con el objeto", + "Recuerda utilizar Read-Search-Ask si te sientes atascado. Intenta programar en pareja. Escribe tu propio código." + ], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "af4afb223120f7348cdfc9fd", + "title": "Map the Debris", + "dashedName": "bonfire-map-the-debris", + "description": [ + "Return a new array that transforms the element's average altitude into their orbital periods.", + "The array will contain objects in the format {name: 'name', avgAlt: avgAlt}.", + "You can read about orbital periods on wikipedia.", + "The values should be rounded to the nearest whole number. The body being orbited is Earth.", + "The radius of the earth is 6367.4447 kilometers, and the GM value of earth is 398600.4418", + "Remember to use Read-Search-Ask if you get stuck. Try to pair program. Write your own code." + ], + "challengeSeed": [ + "function orbitalPeriod(arr) {", + " var GM = 398600.4418;", + " var earthRadius = 6367.4447;", + " return arr;", + "}", + "", + "orbitalPeriod([{name : \"sputnik\", avgAlt : 35873.5553}]);" + ], + "tests": [ + "assert.deepEqual(orbitalPeriod([{name : \"sputnik\", avgAlt : 35873.5553}]), [{name: \"sputnik\", orbitalPeriod: 86400}], 'message: orbitalPeriod([{name : \"sputnik\", avgAlt : 35873.5553}]) should return [{name: \"sputnik\", orbitalPeriod: 86400}].');", + "assert.deepEqual(orbitalPeriod([{name: \"iss\", avgAlt: 413.6}, {name: \"hubble\", avgAlt: 556.7}, {name: \"moon\", avgAlt: 378632.553}]), [{name : \"iss\", orbitalPeriod: 5557}, {name: \"hubble\", orbitalPeriod: 5734}, {name: \"moon\", orbitalPeriod: 2377399}], 'message: orbitalPeriod([{name: \"iss\", avgAlt: 413.6}, {name: \"hubble\", avgAlt: 556.7}, {name: \"moon\", avgAlt: 378632.553}]) should return [{name : \"iss\", orbitalPeriod: 5557}, {name: \"hubble\", orbitalPeriod: 5734}, {name: \"moon\", orbitalPeriod: 2377399}].');" + ], + "MDNlinks": [ + "Math.pow()" + ], + "solutions": [ + "function orbitalPeriod(arr) {\n var GM = 398600.4418;\n var earthRadius = 6367.4447;\n var TAU = 2 * Math.PI; \n return arr.map(function(obj) {\n return {\n name: obj.name,\n orbitalPeriod: Math.round(TAU * Math.sqrt(Math.pow(obj.avgAlt+earthRadius, 3)/GM))\n };\n });\n}\n\norbitalPeriod([{name : \"sputkin\", avgAlt : 35873.5553}]);\n" + ], + "type": "bonfire", + "challengeType": 5, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "Ubica los escombros", + "descriptionEs": [ + "Crea una función que devuelva un nuevo arreglo que transforme la altitud promedio del elemento en su período orbital.", + "El arreglo debe contener objetos en el formato {name: 'name', avgAlt: avgAlt}.", + "Puedes leer acerca de períodos orbitales en wikipedia.", + "Los valores deben estar redondeados al número entero más próximo. El cuerpo orbitado es la Tierra", + "El radio de la Tierra es 6367.4447 kilómetros, y el valor GM del planeta es de 398600.4418", + "Recuerda utilizar Read-Search-Ask si te sientes atascado. Intenta programar en pareja. Escribe tu propio código." + ], + "namePt": "", + "descriptionPt": [] + }, + { + "id": "a3f503de51cfab748ff001aa", + "title": "Pairwise", + "description": [ + "Return the sum of all indices of elements of 'arr' that can be paired with one other element to form a sum that equals the value in the second argument 'arg'. If multiple sums are possible, return the smallest sum. Once an element has been used, it cannot be reused to pair with another.", + "For example, pairwise([1, 4, 2, 3, 0, 5], 7) should return 11 because 4, 2, 3 and 5 can be paired with each other to equal 7.", + "pairwise([1, 3, 2, 4], 4) would only equal 1, because only the first two elements can be paired to equal 4, and the first element has an index of 0!", + "Remember to use Read-Search-Ask if you get stuck. Try to pair program. Write your own code." + ], + "challengeSeed": [ + "function pairwise(arr, arg) {", + " return arg;", + "}", + "", + "pairwise([1,4,2,3,0,5], 7);" + ], + "tests": [ + "assert.deepEqual(pairwise([1, 4, 2, 3, 0, 5], 7), 11, 'message: pairwise([1, 4, 2, 3, 0, 5], 7) should return 11.');", + "assert.deepEqual(pairwise([1, 3, 2, 4], 4), 1, 'message: pairwise([1, 3, 2, 4], 4) should return 1.');", + "assert.deepEqual(pairwise([1, 1, 1], 2), 1, 'message: pairwise([1, 1, 1], 2) should return 1.');", + "assert.deepEqual(pairwise([0, 0, 0, 0, 1, 1], 1), 10, 'message: pairwise([0, 0, 0, 0, 1, 1], 1) should return 10.');", + "assert.deepEqual(pairwise([], 100), 0, 'message: pairwise([], 100) should return 0.');" + ], + "MDNlinks": [ + "Array.reduce()" + ], + "type": "bonfire", + "solutions": [ + "function pairwise(arr, arg) {\n var sum = 0;\n arr.forEach(function(e, i, a) {\n if (e != null) { \n var diff = arg-e;\n a[i] = null;\n var dix = a.indexOf(diff);\n if (dix !== -1) {\n sum += dix;\n sum += i;\n a[dix] = null;\n } \n }\n });\n return sum;\n}\n\npairwise([1,4,2,3,0,5], 7);\n" + ], + "challengeType": 5, + "nameCn": "", + "descriptionCn": [], + "nameFr": "", + "descriptionFr": [], + "nameRu": "", + "descriptionRu": [], + "nameEs": "En parejas", + "descriptionEs": [ + "Crea una función que devuelva la suma de todos los índices de los elementos de 'arr' que pueden ser emparejados con otro elemento de tal forma que la suma de ambos equivalga al valor del segundo argumento, 'arg'. Si varias combinaciones son posibles, devuelve la menor suma de índices. Una vez un elemento ha sido usado, no puede ser usado de nuevo para emparejarlo con otro elemento.", + "Por ejemplo, pairwise([1, 4, 2, 3, 0, 5], 7) debe devolver 11 porque 4, 2, 3 y 5 pueden ser emparejados para obtener una suma de 7", + "pairwise([1, 3, 2, 4], 4) devolvería el valor de 1, porque solo los primeros dos elementos pueden ser emparejados para sumar 4. ¡Recuerda que el primer elemento tiene un índice de 0!", + "Recuerda utilizar Read-Search-Ask si te sientes atascado. Intenta programar en pareja. Escribe tu propio código." + ], + "namePt": "", + "descriptionPt": [] + } + ] +}