diff --git a/challenges/00-getting-started/getting-started.json b/challenges/00-getting-started/getting-started.json index d1058746197..cb3ed53dc16 100644 --- a/challenges/00-getting-started/getting-started.json +++ b/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/challenges/01-front-end-development-certification/advanced-bonfires.json b/challenges/01-front-end-development-certification/advanced-bonfires.json index 3a49435492c..9930db2523d 100644 --- a/challenges/01-front-end-development-certification/advanced-bonfires.json +++ b/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/challenges/01-front-end-development-certification/basic-bonfires.json b/challenges/01-front-end-development-certification/basic-bonfires.json index 66146ca0224..2183e7d3194 100644 --- a/challenges/01-front-end-development-certification/basic-bonfires.json +++ b/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/challenges/01-front-end-development-certification/basic-javascript.json b/challenges/01-front-end-development-certification/basic-javascript.json index a3ab7665384..3e3b7bbe35f 100644 --- a/challenges/01-front-end-development-certification/basic-javascript.json +++ b/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/challenges/01-front-end-development-certification/basic-ziplines.json b/challenges/01-front-end-development-certification/basic-ziplines.json index 57ae6c21b9f..c94f4b28d61 100644 --- a/challenges/01-front-end-development-certification/basic-ziplines.json +++ b/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/challenges/01-front-end-development-certification/bootstrap.json b/challenges/01-front-end-development-certification/bootstrap.json index 8fc4b9be3d2..7ef432101b7 100644 --- a/challenges/01-front-end-development-certification/bootstrap.json +++ b/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/challenges/01-front-end-development-certification/html5-and-css.json b/challenges/01-front-end-development-certification/html5-and-css.json index 01c565765e9..596810fc4a6 100644 --- a/challenges/01-front-end-development-certification/html5-and-css.json +++ b/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/challenges/01-front-end-development-certification/intermediate-bonfires.json b/challenges/01-front-end-development-certification/intermediate-bonfires.json index b2a5e419fa4..999abbd6461 100644 --- a/challenges/01-front-end-development-certification/intermediate-bonfires.json +++ b/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/challenges/01-front-end-development-certification/intermediate-ziplines.json b/challenges/01-front-end-development-certification/intermediate-ziplines.json index f7f21c95fd6..e13545eddfa 100644 --- a/challenges/01-front-end-development-certification/intermediate-ziplines.json +++ b/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/challenges/01-front-end-development-certification/jquery.json b/challenges/01-front-end-development-certification/jquery.json index 977281f9046..9b6fec48a9b 100644 --- a/challenges/01-front-end-development-certification/jquery.json +++ b/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/challenges/01-front-end-development-certification/json-apis-and-ajax.json b/challenges/01-front-end-development-certification/json-apis-and-ajax.json index 90d75630f53..293cc96ec64 100644 --- a/challenges/01-front-end-development-certification/json-apis-and-ajax.json +++ b/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/challenges/01-front-end-development-certification/object-oriented-and-functional-programming.json b/challenges/01-front-end-development-certification/object-oriented-and-functional-programming.json index f9d0c91340a..13a7108dcbe 100644 --- a/challenges/01-front-end-development-certification/object-oriented-and-functional-programming.json +++ b/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/challenges/02-data-visualization-certification/d3.json b/challenges/02-data-visualization-certification/d3.json index 0128b92c05f..bafab8cd1f5 100644 --- a/challenges/02-data-visualization-certification/d3.json +++ b/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/challenges/02-data-visualization-certification/data-visualization-projects.json b/challenges/02-data-visualization-certification/data-visualization-projects.json index 822062680c4..19266222873 100644 --- a/challenges/02-data-visualization-certification/data-visualization-projects.json +++ b/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/challenges/02-data-visualization-certification/react-projects.json b/challenges/02-data-visualization-certification/react-projects.json index 0df0abbbb3d..34815857020 100644 --- a/challenges/02-data-visualization-certification/react-projects.json +++ b/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/challenges/02-data-visualization-certification/react.json b/challenges/02-data-visualization-certification/react.json index 482ab4e62db..f326d02ed70 100644 --- a/challenges/02-data-visualization-certification/react.json +++ b/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/challenges/02-data-visualization-certification/sass.json b/challenges/02-data-visualization-certification/sass.json index 54e0126ebad..50e7c498931 100644 --- a/challenges/02-data-visualization-certification/sass.json +++ b/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/challenges/03-back-end-development-certification/api-projects.json b/challenges/03-back-end-development-certification/api-projects.json index 98c52b7a9f0..6fef80f048f 100644 --- a/challenges/03-back-end-development-certification/api-projects.json +++ b/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/challenges/03-back-end-development-certification/automated-testing-and-debugging.json b/challenges/03-back-end-development-certification/automated-testing-and-debugging.json index 90e38c5139c..f3f8dd71fa2 100644 --- a/challenges/03-back-end-development-certification/automated-testing-and-debugging.json +++ b/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/challenges/03-back-end-development-certification/dynamic-web-applications.json b/challenges/03-back-end-development-certification/dynamic-web-applications.json index b49ac3c868d..e2239da0ece 100644 --- a/challenges/03-back-end-development-certification/dynamic-web-applications.json +++ b/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/challenges/03-back-end-development-certification/git.json b/challenges/03-back-end-development-certification/git.json index d268d507dc9..1500377c668 100644 --- a/challenges/03-back-end-development-certification/git.json +++ b/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/challenges/03-back-end-development-certification/mongodb.json b/challenges/03-back-end-development-certification/mongodb.json index e7cfec10cb2..19265a536b5 100644 --- a/challenges/03-back-end-development-certification/mongodb.json +++ b/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/challenges/03-back-end-development-certification/nodejs-and-expressjs.json b/challenges/03-back-end-development-certification/nodejs-and-expressjs.json index 781f4e7a5dc..4f13cd7e7e0 100644 --- a/challenges/03-back-end-development-certification/nodejs-and-expressjs.json +++ b/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/challenges/03-back-end-development-certification/upper-intermediate-bonfires.json b/challenges/03-back-end-development-certification/upper-intermediate-bonfires.json new file mode 100644 index 00000000000..34938b4fd14 --- /dev/null +++ b/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": [] + } + ] +}