add releasedOn dates to all new challenges (#13417)
This commit is contained in:
committed by
mrugesh mohapatra
parent
b326a679e5
commit
2709eb6b3a
@ -27,24 +27,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d774c367417b2b2512a9c",
|
||||
@ -66,6 +55,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -102,6 +92,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -143,6 +134,7 @@
|
||||
"All the h5 tags are siblings, and should be changed to the same new heading level."
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -173,6 +165,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -218,6 +211,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -266,6 +260,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -319,6 +314,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -373,6 +369,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -412,6 +409,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -479,6 +477,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -534,6 +533,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -603,6 +603,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -652,6 +653,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -706,6 +708,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -820,6 +823,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -859,6 +863,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -900,6 +905,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -937,6 +943,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -966,6 +973,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1013,6 +1021,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1083,6 +1092,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1141,6 +1151,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7791367417b2b2512ab3",
|
||||
@ -87,6 +76,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -141,6 +131,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -196,6 +187,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -254,6 +246,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -313,6 +306,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -373,6 +367,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -431,6 +426,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -490,6 +486,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -550,6 +547,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -616,6 +614,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -676,6 +675,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -743,6 +743,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -809,6 +810,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -877,6 +879,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -956,6 +959,7 @@
|
||||
],
|
||||
"solutions": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1001,6 +1005,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1065,6 +1070,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1092,6 +1098,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1120,6 +1127,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1145,6 +1153,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1175,6 +1184,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1210,6 +1220,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1244,6 +1255,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1286,6 +1298,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1340,6 +1353,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1389,6 +1403,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1431,6 +1446,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1460,6 +1476,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1503,6 +1520,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1550,6 +1568,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1610,6 +1629,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1662,6 +1682,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1716,6 +1737,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1752,6 +1774,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1800,6 +1823,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1826,6 +1850,7 @@
|
||||
"Remember to wrap the address in quotes within the url() function."
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1873,6 +1898,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1913,6 +1939,7 @@
|
||||
"Make sure to apply the CSS rule to the hover state of the div, using div:hover"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1954,6 +1981,7 @@
|
||||
"Notice that there is no space between the number and \"deg\" (-32deg) when declaring the degrees value."
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1992,6 +2020,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2035,6 +2064,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2097,6 +2127,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2147,6 +2178,7 @@
|
||||
"Make sure the @keyframes rule links to the animation-name."
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2184,6 +2216,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2242,6 +2275,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2290,6 +2324,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2344,6 +2379,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2434,6 +2470,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2508,6 +2545,7 @@
|
||||
"Check the animation-name declared in the star-1 class to find the right @keyframes rule to change."
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2583,6 +2621,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2643,6 +2682,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2706,6 +2746,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2762,6 +2803,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -2822,6 +2864,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -39,18 +39,7 @@
|
||||
"type": "Waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "bad87fee1348bd9aedf08803",
|
||||
|
@ -27,18 +27,7 @@
|
||||
"type": "Waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "bd7123c8c441eddfaeb5bdef",
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d78ab367417b2b2512af0",
|
||||
@ -74,6 +63,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -189,6 +179,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -232,6 +223,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -343,6 +335,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -384,6 +377,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -491,6 +485,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -544,6 +539,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -652,6 +648,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -706,6 +703,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -818,6 +816,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -892,6 +891,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -938,6 +938,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -983,6 +984,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1028,6 +1030,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1074,6 +1077,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1118,6 +1122,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1163,6 +1168,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -33,24 +33,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d78b0367417b2b2512b08",
|
||||
@ -80,6 +69,7 @@
|
||||
"assert(code.match(/@media \\(max-height:\\s*?800px\\)/g), 'message: Declare an <code>@media</code> query for devices with <code>heights</code> less than or equal to 800px.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solution": [],
|
||||
"hints": [],
|
||||
"challengeType": 0,
|
||||
@ -110,6 +100,7 @@
|
||||
"assert(code.match(/height:\\s*?auto;/g), 'message: Your <code>img</code> tag should have a <code>height</code> set to auto.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
@ -137,6 +128,7 @@
|
||||
"assert($('img').css('height') == '100px', 'message: Your <code>img</code> tag should have a <code>height</code> of 100 pixels.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
@ -170,6 +162,7 @@
|
||||
"assert(code.match(/p\\s*?{\\s*?width:\\s*?75vmin;\\s*?}/g), 'message: Your <code>p</code> tag should have a <code>width</code> of 75vmin.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"challengeType": 0,
|
||||
|
@ -27,24 +27,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7b7e367417b2b2512b20",
|
||||
@ -69,6 +58,7 @@
|
||||
"assert(yourArray.filter( el => typeof el === 'string').length >= 1, 'message: <code>yourArray</code> contains at least one <code>string</code>');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -136,6 +126,7 @@
|
||||
"assert.notStrictEqual(mixedNumbers.toString().search(/\\.unshift\\(/), -1, 'message: The <code>mixedNumbers</code> function should utilize the <code>unshift()</code> method');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -168,6 +159,7 @@
|
||||
"assert.notStrictEqual(popShift.toString().search(/\\.shift\\(/), -1, 'message: The <code>popShift</code> function should utilize the <code>shift()</code> method');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -200,6 +192,7 @@
|
||||
"assert.notStrictEqual(sumOfTen.toString().search(/\\.splice\\(/), -1, 'message: The <code>sumOfTen</code> function should utilize the <code>splice()</code> method');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -232,6 +225,7 @@
|
||||
"assert(!/\\[\\d\\]\\s*=/.test(code), 'message: You should not use array bracket notation.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -261,6 +255,7 @@
|
||||
"assert(/\\.slice\\(/.test(code), 'message: The <code>forecast</code> function should utilize the <code>slice()</code> method');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -298,6 +293,7 @@
|
||||
"assert.notStrictEqual(copyMachine.toString().search(/[...]/), -1, 'message: The <code>copyMachine</code> function should utilize the <code>...</code> operator');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -327,6 +323,7 @@
|
||||
"assert.notStrictEqual(spreadOut.toString().search(/[...]/), -1, 'message: The <code>spreadOut</code> function should utilize spread syntax');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -359,6 +356,7 @@
|
||||
"assert.notStrictEqual(quickCheck.toString().search(/\\.indexOf\\(/), -1, 'message: The <code>quickCheck</code> function should utilize the <code>indexOf()</code> method');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -394,6 +392,7 @@
|
||||
"assert.notStrictEqual(filteredArray.toString().search(/for/), -1, 'message: The <code>filteredArray</code> function should utilize a <code>for</code> loop');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -432,6 +431,7 @@
|
||||
"assert((function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deepest').length === 1 && (function howDeep(array, target, depth = 0) {return array.reduce((combined, current) => {if (Array.isArray(current)) { return combined.concat(howDeep(current, target, depth + 1));} else if (current === target) { return combined.concat(depth);} else { return combined;}}, []);})(myNestedArray, 'deepest')[0] === 4, 'message: <code>myNestedArray</code> should contain exactly one occurrence of the string <code>\"deepest\"</code> on an array nested 5 levels deep');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -465,24 +465,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7b7c367417b2b2512b18",
|
||||
@ -519,6 +508,7 @@
|
||||
"assert(code.search(/bananas:/) === -1 && code.search(/grapes:/) === -1 && code.search(/strawberries:/) === -1, 'message: The key-value pairs should be set using dot or bracket notation');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -556,6 +546,7 @@
|
||||
"assert.strictEqual(code.search(/online: 45/), -1, 'message: The <code>online</code> property is set using dot or bracket notation');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -597,6 +588,7 @@
|
||||
"assert.strictEqual(checkInventory('strawberries'), 27, 'message: <code>checkInventory(\"strawberries\")</code> should return <code>27</code>');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -633,6 +625,7 @@
|
||||
"assert(code.search(/oranges:/) !== -1 && code.search(/plums:/) !== -1 && code.search(/strawberries:/) !== -1, 'message: The <code>oranges</code>, <code>plums</code>, and <code>strawberries</code> keys are removed using <code>delete</code>');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -680,6 +673,7 @@
|
||||
"assert((function() { delete users.Alan; delete users.Jeff; delete users.Sarah; delete users.Ryan; return isEveryoneHere(users) })() === false, 'message: The function <code>isEveryoneHere</code> returns <code>false</code> if <code>Alan</code>, <code>Jeff</code>, <code>Sarah</code>, and <code>Ryan</code> are not properties on the <code>users</code> object');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -728,6 +722,7 @@
|
||||
"assert((function() { users.Harry = {online: true}; users.Sam = {online: true}; users.Carl = {online: true}; return countOnline(users) })() === 5, 'message: The function <code>countOnline</code> returns the number of users with the <code>online</code> property set to <code>true</code>');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -773,6 +768,7 @@
|
||||
"assert((function() { users.Sam = {}; users.Lewis = {}; let R = getArrayOfUsers(users); return (R.indexOf('Alan') !== -1 && R.indexOf('Jeff') !== -1 && R.indexOf('Sarah') !== -1 && R.indexOf('Ryan') !== -1 && R.indexOf('Sam') !== -1 && R.indexOf('Lewis') !== -1); })() === true, 'message: The <code>getArrayOfUsers</code> function returns an array which contains all the keys in the <code>users</code> object');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -820,6 +816,7 @@
|
||||
"assert.deepEqual((function() { delete user.data.friends; user.data.friends = ['Sam', 'Kira', 'Tomo']; return addFriend(user, 'Pete') })(), ['Sam', 'Kira', 'Tomo', 'Pete'], 'message: <code>addFriend(user, \"Pete\")</code> should return <code>[\"Sam\", \"Kira\", \"Tomo\", \"Pete\"]</code>');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
|
@ -1087,7 +1087,6 @@
|
||||
"assert(!/\\\\/g.test(code) && myStr === '<a href=\"http://www.example.com\" target=\"_blank\">Link</a>', 'message: Remove all the <code>backslashes</code> (<code>\\</code>)');",
|
||||
"assert(code.match(/\"/g).length === 6 && code.match(/'/g).length === 4, 'message: You should have two single quotes <code>'</code> and four double quotes <code>"</code>');"
|
||||
],
|
||||
|
||||
"type": "waypoint",
|
||||
"challengeType": 1,
|
||||
"translations": {
|
||||
@ -5568,7 +5567,8 @@
|
||||
],
|
||||
"type": "waypoint",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
"translations": {},
|
||||
"releasedOn": "February 17, 2017"
|
||||
},
|
||||
{
|
||||
"id": "587d7b7e367417b2b2512b22",
|
||||
@ -5601,6 +5601,7 @@
|
||||
],
|
||||
"type": "waypoint",
|
||||
"challengeType": 1,
|
||||
"releasedOn": "February 17, 2017",
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
@ -5634,6 +5635,7 @@
|
||||
],
|
||||
"type": "waypoint",
|
||||
"challengeType": 1,
|
||||
"releasedOn": "February 17, 2017",
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
@ -5665,6 +5667,7 @@
|
||||
],
|
||||
"type": "waypoint",
|
||||
"challengeType": 1,
|
||||
"releasedOn": "February 17, 2017",
|
||||
"translations": {}
|
||||
}
|
||||
]
|
||||
|
@ -27,24 +27,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7b83367417b2b2512b33",
|
||||
@ -71,11 +60,10 @@
|
||||
"tests": [
|
||||
"assert(code.match(/console\\.log\\(a\\)/g), 'message: Your code should use <code>console.log()</code> to check the value of the variable <code>a</code>.');"
|
||||
],
|
||||
"solutions": [
|
||||
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -102,10 +90,10 @@
|
||||
"assert(code.match(/typeof[\\( ]seven\\)?/g), 'message: Your code should use <code>typeof</code> to check the type of the variable <code>seven</code>.');",
|
||||
"assert(code.match(/typeof[\\( ]three\\)?/g), 'message: Your code should use <code>typeof</code> to check the type of the variable <code>three</code>.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -131,11 +119,10 @@
|
||||
"assert(!code.match(/payable;/g), 'message: There should be no instances of mis-spelled variables in the code.');",
|
||||
"assert(code.match(/payables/g).length == 2, 'message: The <code>payables</code> variable should be declared and used properly in the code.');"
|
||||
],
|
||||
"solutions": [
|
||||
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -157,10 +144,10 @@
|
||||
"assert(code.match(/myArray\\s*?=\\s*?\\[\\s*?1\\s*?,\\s*?2\\s*?,\\s*?3\\s*?\\];/g), 'message: Your code should fix the missing piece of the array.');",
|
||||
"assert(arraySum === 6, 'message: Your code should fix the missing piece of the <code>.reduce()</code> method. The console output should show that \"Sum of array values is: 6\".');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -185,10 +172,10 @@
|
||||
"assert(code.match(/<a href=\\s*?('|\\\\\")#Home\\1\\s*?>/g), 'message: Your code should fix the quotes around the <code>href</code> value \"#Home\" by either changing or escaping them.');",
|
||||
"assert(code.match(/\"<p>.*?<\\/p>\";/g), 'message: Your code should keep the double quotes around the entire string.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -221,10 +208,10 @@
|
||||
"assert(result == \"Not equal!\", 'message: Your code should fix the condition so it checks for equality, instead of using assignment.');",
|
||||
"assert(code.match(/x\\s*?===?\\s*?y/g), 'message: The condition can use either <code>==</code> or <code>===</code> to test for equality.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -252,10 +239,10 @@
|
||||
"assert(result == 9, 'message: Your code should fix the variable <code>result</code> so it is set to the number that the function <code>getNine</code> returns.');",
|
||||
"assert(code.match(/getNine\\(\\)/g).length == 2, 'message: Your code should call the <code>getNine</code> function.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -286,10 +273,10 @@
|
||||
"assert(power == 8, 'message: Your code should fix the variable <code>power</code> so it equals 2 raised to the 3rd power, not 3 raised to the 2nd power.');",
|
||||
"assert(code.match(/positivePowers\\(\\s*?base\\s*?,\\s*?exp\\s*?\\);/g), 'message: Your code should use the correct order of the arguments for the <code>positivePowers</code> function call.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -320,10 +307,10 @@
|
||||
"assert(code.match(/i\\s*?<\\s*?len\\s*?;/g).length == 1, 'message: Your code should set the terminal condition of the loop so it stops at the last index.');",
|
||||
"assert(!code.match(/i\\s*?<=\\s*?len;/g), 'message: Your code should fix the terminal condition of the loop.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -362,10 +349,10 @@
|
||||
"assert(matrix.length == 3, 'message: The <code>matrix</code> variable should have 3 rows.');",
|
||||
"assert(matrix[0].length == 2 && matrix[1].length === 2 && matrix[2].length === 2, 'message: The <code>matrix</code> variable should have 2 columns in each row.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -391,10 +378,10 @@
|
||||
"assert(code.match(/i\\s*?<=\\s*?4;/g).length == 1, 'message: Your code should change the comparison operator in the terminal condition (the middle part) of the <code>for</code> loop.');",
|
||||
"assert(!code.match(/i\\s*?!=\\s*?4;/g), 'message: Your code should fix the comparison operator in the terminal condition of the loop.');"
|
||||
],
|
||||
"solutions": [
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7b87367417b2b2512b3f",
|
||||
@ -62,6 +51,7 @@
|
||||
"assert(favorite === \"Rudolph is Santa's favorite reindeer.\", \"message: <code>favorite</code> should return Santa's favorite reindeer.\");"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -104,6 +94,7 @@
|
||||
"assert(checkScope() === \"function scope\", 'message: <code>checkScope()</code> should return \"function scope\"');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -139,6 +130,7 @@
|
||||
"// Test pi and calulateCircumference has been renamed"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -171,6 +163,7 @@
|
||||
"// Test s is still mutable, and object freeze was not invoked"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -209,6 +202,7 @@
|
||||
"// Test arrow => was used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -242,6 +236,7 @@
|
||||
"// Test arrow => was used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -280,6 +275,7 @@
|
||||
"// Test map and filter were used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -308,6 +304,7 @@
|
||||
"// Test default parameter was used for 'value'"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -337,6 +334,7 @@
|
||||
"assert(sum() === 0, 'The result of sum() should be 0');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -360,7 +358,6 @@
|
||||
"const arr1 = ['JAN', 'FEB', 'MAR', 'APR', 'MAY'];",
|
||||
"const arr2 = [];",
|
||||
"// change code below this line",
|
||||
|
||||
"// change code above this line",
|
||||
"arr1.push('JUN');",
|
||||
"console.log(arr2); // arr2 should not be affected"
|
||||
@ -371,6 +368,7 @@
|
||||
"// Test spread operator was used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -402,6 +400,7 @@
|
||||
"// Test destructuring was used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -433,6 +432,7 @@
|
||||
"// Test destructuring was used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -466,6 +466,7 @@
|
||||
"// Test destructuring was used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -498,6 +499,7 @@
|
||||
"// Test slice was not used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -539,6 +541,7 @@
|
||||
"// Test destructuring was used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -591,6 +594,7 @@
|
||||
"// Test template strings were used"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -630,6 +634,7 @@
|
||||
"// Test no : was present"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -666,6 +671,7 @@
|
||||
"// Test no : was present"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -705,6 +711,7 @@
|
||||
"// Test that other objects could be created with the class"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -759,6 +766,7 @@
|
||||
"// Test that other objects could be created with the class"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -785,6 +793,7 @@
|
||||
"assert(code.match(/import\\s+\\{\\s?capitalizeString\\s?\\}\\s+from\\s+\"string_functions\"/ig)"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -818,6 +827,7 @@
|
||||
"assert(code.match(/export\\s+const\\s+boo\\s+=+\\s\"far\"/ig))"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -845,6 +855,7 @@
|
||||
"assert(code.match(/import\\s+\\*\\s+as\\s+myStringModule\\s+from\\s+\"capitalize_strings\"/ig))"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -869,6 +880,7 @@
|
||||
"assert(code.match(/export\\s+default\\s+const\\s+subtract\\s+=\\s+\\(x,y\\)\\s+=>\\s+{return\\s+x\\s-\\s+y;}/ig))"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -891,6 +903,7 @@
|
||||
"assert(code.match(/import\\s+subtract\\s+from\\s+\"math_functions\"/ig))"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7dac367417b2b2512b73",
|
||||
@ -62,6 +51,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -93,6 +83,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -126,6 +117,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -162,6 +154,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -197,6 +190,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -233,6 +227,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -272,6 +267,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -307,6 +303,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -345,6 +342,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -383,6 +381,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -424,6 +423,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -461,6 +461,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -498,6 +499,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -537,6 +539,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -570,6 +573,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -610,6 +614,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -667,6 +672,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -716,6 +722,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -758,6 +765,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -799,6 +807,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -848,6 +857,7 @@
|
||||
"Objects inherit methods from other objects by cloning their prototype. The Object.create method will come in handy, and don't forget to reset the constructor property afterward!"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -897,6 +907,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -944,6 +955,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -977,6 +989,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1006,6 +1019,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1045,6 +1059,7 @@
|
||||
],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7db3367417b2b2512b8e",
|
||||
@ -57,6 +46,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -85,6 +75,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -116,6 +107,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -149,6 +141,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -175,6 +168,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -204,6 +198,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -237,6 +232,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -267,6 +263,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -295,6 +292,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -322,6 +320,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -348,6 +347,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -375,6 +375,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -406,6 +407,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -431,6 +433,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -468,6 +471,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -495,6 +499,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -521,6 +526,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -550,6 +556,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -578,6 +585,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -608,6 +616,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -638,6 +647,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -669,6 +679,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -696,6 +707,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -723,6 +735,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -754,6 +767,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -785,6 +799,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -815,6 +830,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -843,6 +859,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -878,6 +895,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -911,6 +929,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -940,6 +959,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -967,6 +987,7 @@
|
||||
"You can use .replace() to remove the matched items by replacing them with an empty string."
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -32,18 +32,7 @@
|
||||
"type": "Waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "bad87fee1348bd9acde08712",
|
||||
|
@ -71,7 +71,7 @@
|
||||
"Once you're done, submit the URL to your working project with all its tests passing.",
|
||||
"Remember to use the <a href='https://forum.freeCodeCamp.com/t/how-to-get-help-when-you-are-stuck/19514' target='_blank'>Read-Search-Ask</a> method if you get stuck."
|
||||
],
|
||||
"releasedOn": "January 10, 2016",
|
||||
"releasedOn": "February 17, 2017",
|
||||
"challengeSeed": [
|
||||
"OkeFgKL"
|
||||
],
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
}
|
||||
]
|
||||
}
|
@ -21,24 +21,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
}
|
||||
]
|
||||
}
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
}
|
||||
]
|
||||
}
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7dbd367417b2b2512bb4",
|
||||
@ -87,6 +76,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -133,6 +123,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -185,6 +176,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -231,6 +223,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -279,6 +272,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -328,6 +322,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -386,6 +381,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -420,6 +416,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -476,6 +473,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -98,7 +98,7 @@
|
||||
],
|
||||
"tests": [],
|
||||
"isRequired": true,
|
||||
"releasedOn": "January 15, 2017",
|
||||
"releasedOn": "February 17, 2017",
|
||||
"type": "zipline",
|
||||
"challengeType": 3,
|
||||
"translations": {}
|
||||
@ -119,7 +119,7 @@
|
||||
],
|
||||
"tests": [],
|
||||
"isRequired": true,
|
||||
"releasedOn": "January 15, 2017",
|
||||
"releasedOn": "February 17, 2017",
|
||||
"type": "zipline",
|
||||
"challengeType": 3,
|
||||
"translations": {}
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7fa6367417b2b2512bc2",
|
||||
@ -78,6 +67,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -120,6 +110,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -164,6 +155,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -214,6 +206,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -257,6 +250,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -309,6 +303,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -359,6 +354,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -419,6 +415,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -480,6 +477,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -530,6 +528,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -580,6 +579,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -634,6 +634,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -700,6 +701,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -762,6 +764,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -827,6 +830,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -879,6 +883,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -947,6 +952,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1008,6 +1014,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1075,6 +1082,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1152,6 +1160,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1210,6 +1219,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1285,6 +1295,7 @@
|
||||
"The cy attribute should be the second number of the data point array subtracted from the height of the SVG."
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1364,6 +1375,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1411,6 +1423,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1459,6 +1472,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1506,6 +1520,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1578,6 +1593,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1682,6 +1698,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1779,6 +1796,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -20,24 +20,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7fad367417b2b2512be1",
|
||||
@ -104,6 +93,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -171,6 +161,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -247,11 +238,10 @@
|
||||
"assert(code.match(/JSON\\.parse\\(.*\\.responseText\\)/g), 'message: Your code should use the <code>JSON.parse</code> method to parse the <code>responseText</code>.');",
|
||||
"assert(code.match(/document\\.getElementsByClassName\\(\\s*?('|\")message\\1\\s*?\\)\\[0\\]\\.innerHTML\\s*?=\\s*?JSON\\.stringify\\(.+?\\)/g), 'message: Your code should get the element with class <code>message</code> and change its inner HTML to the string of JSON data.');"
|
||||
],
|
||||
"solutions": [
|
||||
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -332,6 +322,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -412,6 +403,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -491,6 +483,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -573,6 +566,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -611,6 +605,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -691,6 +686,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -12,19 +12,24 @@
|
||||
"description": [
|
||||
"This is just a test of the new backend challenge test framework"
|
||||
],
|
||||
"tests": [{
|
||||
"tests": [
|
||||
{
|
||||
"text": "website should return 200",
|
||||
"testString": "getUserInput => $.ajax({ url: getUserInput('url'), method: 'HEAD' }).then(null, (err) => assert.fail(err));"
|
||||
}, {
|
||||
},
|
||||
{
|
||||
"text": "package.json should have a valid \"keywords\" key",
|
||||
"testString": "getUserInput => ($.get(getUserInput('url') + '/_api/package.json').then(function(data){ var packJson = JSON.parse(data); assert(packJson.keywords); }, err => { throw new Error('Err: ' + err.statusText);}))"
|
||||
}, {
|
||||
},
|
||||
{
|
||||
"text": "\"keywords\" field should be an Array",
|
||||
"testString": "getUserInput => ($.get(getUserInput('url') + '/_api/package.json').then(function(data){ var packJson = JSON.parse(data); assert.isArray(packJson.keywords); }, err => { throw new Error('Err: ' + err.statusText);}))"
|
||||
}, {
|
||||
},
|
||||
{
|
||||
"text": "\"keywords\" should include \"freecodecamp\"",
|
||||
"testString": "getUserInput => ($.get(getUserInput('url') + '/_api/package.json').then(function(data){ var packJson = JSON.parse(data); assert.include(packJson.keywords, 'freecodecamp'); }, err => { throw new Error('Err: ' + err.statusText); }))"
|
||||
}],
|
||||
}
|
||||
],
|
||||
"type": "backend"
|
||||
},
|
||||
{
|
||||
@ -58,8 +63,7 @@
|
||||
"translations": {
|
||||
"es": {
|
||||
"title": "Microservicio de Marca Temporal",
|
||||
"description": [
|
||||
]
|
||||
"description": []
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -86,8 +90,7 @@
|
||||
"translations": {
|
||||
"es": {
|
||||
"title": "Microservicio para analizar el encabezado de una petición",
|
||||
"description": [
|
||||
]
|
||||
"description": []
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -122,8 +125,7 @@
|
||||
"translations": {
|
||||
"es": {
|
||||
"title": "Microservicio para acortar URLs",
|
||||
"description": [
|
||||
]
|
||||
"description": []
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -161,13 +163,12 @@
|
||||
"hints": [],
|
||||
"type": "basejump",
|
||||
"isRequired": true,
|
||||
"releasedOn": "January 1, 2016",
|
||||
"releasedOn": "February 17, 2017",
|
||||
"challengeType": 4,
|
||||
"translations": {
|
||||
"es": {
|
||||
"title": "Capa de abstracción para buscar imágenes",
|
||||
"description": [
|
||||
]
|
||||
"description": []
|
||||
}
|
||||
}
|
||||
},
|
||||
@ -198,8 +199,7 @@
|
||||
"translations": {
|
||||
"es": {
|
||||
"title": "Microservicio de metadatos de archivos",
|
||||
"description": [
|
||||
]
|
||||
"description": []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7fb0367417b2b2512bed",
|
||||
@ -44,8 +33,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "<code>\"Hello World\"</code> should be in the console",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/_api/hello-console').then(data => { assert.isTrue(data.passed, '\"Hello World\" is not in the server console'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "<code>\"Hello World\"</code> should be in the console",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/hello-console').then(data => { assert.isTrue(data.passed, '\"Hello World\" is not in the server console'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -70,8 +59,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "Your app should serve the string 'Hello Express'",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url')).then(data => { assert.equal(data, 'Hello Express', 'Your app does not serve the text \"Hello Express\"'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Your app should serve the string 'Hello Express'",
|
||||
"testString": "getUserInput => $.get(getUserInput('url')).then(data => { assert.equal(data, 'Hello Express', 'Your app does not serve the text \"Hello Express\"'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -93,8 +82,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "Your app should serve the file views/index.html",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url')).then(data => { assert.match(data, /<h1>.*<\\/h1>/, 'Your app does not serve the expected HTML'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Your app should serve the file views/index.html",
|
||||
"testString": "getUserInput => $.get(getUserInput('url')).then(data => { assert.match(data, /<h1>.*<\\/h1>/, 'Your app does not serve the expected HTML'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -114,8 +103,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "Your app should serve asset files from the <code>/public</code> directory",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/style.css').then(data => { assert.match(data, /body\\s*\\{[^\\}]*\\}/, 'Your app does not serve static assets'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Your app should serve asset files from the <code>/public</code> directory",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/style.css').then(data => { assert.match(data, /body\\s*\\{[^\\}]*\\}/, 'Your app does not serve static assets'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -135,8 +124,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "The endpoint <code>/json</code> should serve the json object <code>{\"message\": \"Hello json\"}</code>",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/json').then(data => { assert.equal(data.message, 'Hello json', 'The \\'/json\\' endpoint does not serve the right data'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "The endpoint <code>/json</code> should serve the json object <code>{\"message\": \"Hello json\"}</code>",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/json').then(data => { assert.equal(data.message, 'Hello json', 'The \\'/json\\' endpoint does not serve the right data'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -156,8 +145,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "The response of the endpoint <code>/json</code> should change according to the environment variable <code>MESSAGE_STYLE</code>",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/_api/use-env-vars').then(data => { assert.isTrue(data.passed, 'The response of \"/json\" does not change according to MESSAGE_STYLE'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "The response of the endpoint <code>/json</code> should change according to the environment variable <code>MESSAGE_STYLE</code>",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/use-env-vars').then(data => { assert.isTrue(data.passed, 'The response of \"/json\" does not change according to MESSAGE_STYLE'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -184,8 +173,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "Root level logger middleware should be active",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/_api/root-middleware-logger').then(data => { assert.isTrue(data.passed, 'root-level logger is not working as expected'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Root level logger middleware should be active",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/root-middleware-logger').then(data => { assert.isTrue(data.passed, 'root-level logger is not working as expected'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -213,12 +202,12 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "The /now endpoint should have mounted middleware",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/_api/chain-middleware-time').then(data => { assert.equal(data.stackLength, 2, '\"/now\" route has no mounted middleware'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "The /now endpoint should have mounted middleware",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/chain-middleware-time').then(data => { assert.equal(data.stackLength, 2, '\"/now\" route has no mounted middleware'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
},
|
||||
{
|
||||
"text" : "The /now endpoint should return a time that is +/- 20 secs from now",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/_api/chain-middleware-time').then(data => { var now = new Date(); assert.isAtMost(Math.abs(new Date(data.time) - now), 20000, 'the returned time is not between +- 20 secs from now'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "The /now endpoint should return a time that is +/- 20 secs from now",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/chain-middleware-time').then(data => { var now = new Date(); assert.isAtMost(Math.abs(new Date(data.time) - now), 20000, 'the returned time is not between +- 20 secs from now'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -240,12 +229,12 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "Test 1 : Your echo server should repeat words correctly",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/eChOtEsT/echo').then(data => { assert.equal(data.echo, 'eChOtEsT', 'Test 1: the echo server is not working as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Test 1 : Your echo server should repeat words correctly",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/eChOtEsT/echo').then(data => { assert.equal(data.echo, 'eChOtEsT', 'Test 1: the echo server is not working as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
},
|
||||
{
|
||||
"text" : "Test 2 : Your echo server should repeat words correctly",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/ech0-t3st/echo').then(data => { assert.equal(data.echo, 'ech0-t3st', 'Test 2: the echo server is not working as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Test 2 : Your echo server should repeat words correctly",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/ech0-t3st/echo').then(data => { assert.equal(data.echo, 'ech0-t3st', 'Test 2: the echo server is not working as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -268,12 +257,12 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "Test 1 : Your API endpoint should respond with the correct name",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/name?first=Mick&last=Jagger').then(data => { assert.equal(data.name, 'Mick Jagger', 'Test 1: \"GET /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Test 1 : Your API endpoint should respond with the correct name",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/name?first=Mick&last=Jagger').then(data => { assert.equal(data.name, 'Mick Jagger', 'Test 1: \"GET /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
},
|
||||
{
|
||||
"text" : "Test 2 : Your APi endpoint should respond with the correct name",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/name?last=Richards&first=Keith').then(data => { assert.equal(data.name, 'Keith Richards', 'Test 2: \"GET /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Test 2 : Your APi endpoint should respond with the correct name",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/name?last=Richards&first=Keith').then(data => { assert.equal(data.name, 'Keith Richards', 'Test 2: \"GET /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -303,8 +292,8 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "The 'body-parser' middleware should be mounted",
|
||||
"testString" : "getUserInput => $.get(getUserInput('url') + '/_api/add-body-parser').then(data => { assert.isAbove(data.mountedAt, 0, '\"body-parser\" is not mounted correctly') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "The 'body-parser' middleware should be mounted",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/add-body-parser').then(data => { assert.isAbove(data.mountedAt, 0, '\"body-parser\" is not mounted correctly') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
@ -332,12 +321,12 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text" : "Test 1 : Your API endpoint should respond with the correct name",
|
||||
"testString" : "getUserInput => $.post(getUserInput('url') + '/name', {first: 'Mick', last: 'Jagger'}).then(data => { assert.equal(data.name, 'Mick Jagger', 'Test 1: \"POST /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Test 1 : Your API endpoint should respond with the correct name",
|
||||
"testString": "getUserInput => $.post(getUserInput('url') + '/name', {first: 'Mick', last: 'Jagger'}).then(data => { assert.equal(data.name, 'Mick Jagger', 'Test 1: \"POST /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
},
|
||||
{
|
||||
"text" : "Test 2 : Your API endpoint should respond with the correct name",
|
||||
"testString" : "getUserInput => $.post(getUserInput('url') + '/name', {first: 'Keith', last: 'Richards'}).then(data => { assert.equal(data.name, 'Keith Richards', 'Test 2: \"POST /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
"text": "Test 2 : Your API endpoint should respond with the correct name",
|
||||
"testString": "getUserInput => $.post(getUserInput('url') + '/name', {first: 'Keith', last: 'Richards'}).then(data => { assert.equal(data.name, 'Keith Richards', 'Test 2: \"POST /name\" route does not behave as expected') }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7fb3367417b2b2512bfb",
|
||||
@ -52,7 +41,7 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [
|
||||
{
|
||||
"text": "package.json should have a valid \"author\" key" ,
|
||||
"text": "package.json should have a valid \"author\" key",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/package.json').then(data => { var packJson = JSON.parse(data); assert(packJson.author, '\"author\" is missing'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
],
|
||||
|
@ -15,24 +15,13 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "587d7fb6367417b2b2512c06",
|
||||
|
@ -15,24 +15,13 @@
|
||||
"https://gomix.com/#!/project/fcc-advanced"
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "5895f700f9fc0f352b528e63",
|
||||
@ -429,24 +418,13 @@
|
||||
"https://gomix.com/#!/project/fcc-social"
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
"descriptionEs": [
|
||||
[]
|
||||
],
|
||||
"titleFr": "",
|
||||
"descriptionFr": [
|
||||
[]
|
||||
],
|
||||
"titleDe": "",
|
||||
"descriptionDe": [
|
||||
[]
|
||||
]
|
||||
"translations": {}
|
||||
},
|
||||
{
|
||||
"id": "589a69f5f9fc0f352b528e70",
|
||||
@ -552,10 +530,10 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
@ -764,10 +742,10 @@
|
||||
""
|
||||
]
|
||||
],
|
||||
"releasedOn": "",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "Waypoint",
|
||||
"type": "waypoint",
|
||||
"challengeType": 7,
|
||||
"isRequired": false,
|
||||
"titleEs": "",
|
||||
|
@ -20,6 +20,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -39,6 +40,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -54,7 +56,8 @@
|
||||
{
|
||||
"text": "helmet.frameguard() middleware should be mounted correctly",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/app-info').then(data => { assert.include(data.appStack, 'frameguard', 'helmet.frameguard() middleware is not mounted correctly'); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
}, {
|
||||
},
|
||||
{
|
||||
"text": "helmet.frameguard() 'action' should be set to 'DENY'",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/app-info').then(data => { assert.property(data.headers, 'x-frame-options'); assert.equal(data.headers['x-frame-options'], 'DENY');}, xhr => { throw new Error(xhr.responseText); })"
|
||||
}
|
||||
@ -62,6 +65,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -85,6 +89,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -104,6 +109,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -123,6 +129,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -148,6 +155,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -167,6 +175,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -186,6 +195,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -211,6 +221,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -244,6 +255,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -300,6 +312,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -323,6 +336,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -345,6 +359,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -28,6 +28,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -59,6 +60,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -91,6 +93,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -124,6 +127,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -143,7 +147,6 @@
|
||||
{
|
||||
"text": "Choose the right assertion - equal vs. notEqual",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=unit&n=4').then(data => { assert.equal(data.assertions[0].method, 'equal', 'Numbers are coerced into strings with == '); }, xhr => { throw new Error(xhr.responseText); })"
|
||||
|
||||
},
|
||||
{
|
||||
"text": "Choose the right assertion - equal vs. notEqual",
|
||||
@ -161,6 +164,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -197,6 +201,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -225,6 +230,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -260,6 +266,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -295,6 +302,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -326,6 +334,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -351,6 +360,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -376,6 +386,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -407,6 +418,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -435,6 +447,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -463,6 +476,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -495,6 +509,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -535,6 +550,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -571,6 +587,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -599,6 +616,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -627,6 +645,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -671,6 +690,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -709,6 +729,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -734,22 +755,20 @@
|
||||
{
|
||||
"text": "assert that the text inside the element 'span#name' is 'Cristoforo'",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=4').then(data => { assert.equal(data.assertions[1].method, 'browser.text'); assert.equal(data.assertions[1].args[0], '\\'span#name\\''); assert.equal(data.assertions[1].args[1], '\\'Cristoforo\\'');}, xhr => { throw new Error(xhr.responseText); })"
|
||||
|
||||
},
|
||||
{
|
||||
"text": "assert that the text inside the element 'span#surname' is 'Colombo'",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=4').then(data => { assert.equal(data.assertions[2].method, 'browser.text'); assert.equal(data.assertions[2].args[0], '\\'span#surname\\''); assert.equal(data.assertions[2].args[1], '\\'Colombo\\'');}, xhr => { throw new Error(xhr.responseText); })"
|
||||
|
||||
},
|
||||
{
|
||||
"text": "assert that the element 'span#dates' exist and its count is 1",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=4').then(data => { assert.equal(data.assertions[3].method, 'browser.element'); assert.equal(data.assertions[3].args[0], '\\'span#dates\\''); assert.equal(data.assertions[3].args[1], 1);}, xhr => { throw new Error(xhr.responseText); })"
|
||||
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
},
|
||||
@ -773,22 +792,20 @@
|
||||
{
|
||||
"text": "assert that the text inside the element 'span#name' is 'Amerigo'",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=5').then(data => { assert.equal(data.assertions[1].method, 'browser.text'); assert.equal(data.assertions[1].args[0], '\\'span#name\\''); assert.equal(data.assertions[1].args[1], '\\'Amerigo\\'');}, xhr => { throw new Error(xhr.responseText); })"
|
||||
|
||||
},
|
||||
{
|
||||
"text": "assert that the text inside the element 'span#surname' is 'Vespucci'",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=5').then(data => { assert.equal(data.assertions[2].method, 'browser.text'); assert.equal(data.assertions[2].args[0], '\\'span#surname\\''); assert.equal(data.assertions[2].args[1], '\\'Vespucci\\'');}, xhr => { throw new Error(xhr.responseText); })"
|
||||
|
||||
},
|
||||
{
|
||||
"text": "assert that the element 'span#dates' exist and its count is 1",
|
||||
"testString": "getUserInput => $.get(getUserInput('url') + '/_api/get-tests?type=functional&n=5').then(data => { assert.equal(data.assertions[3].method, 'browser.element'); assert.equal(data.assertions[3].args[0], '\\'span#dates\\''); assert.equal(data.assertions[3].args[1], 1);}, xhr => { throw new Error(xhr.responseText); })"
|
||||
|
||||
}
|
||||
],
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "backend",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 0,
|
||||
"translations": {}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Coding Interview Algorithm Questions",
|
||||
"order": 10,
|
||||
"time": "50 hours",
|
||||
"order": 1,
|
||||
"time": "",
|
||||
"helpRoom": "HelpJavaScript",
|
||||
"challenges": [
|
||||
{
|
||||
@ -485,7 +485,8 @@
|
||||
"type": "waypoint",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
"translations": {},
|
||||
"releasedOn": "February 17, 2017"
|
||||
},
|
||||
{
|
||||
"id": "587d8259367417b2b2512c85",
|
||||
@ -522,7 +523,8 @@
|
||||
"type": "waypoint",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
"translations": {},
|
||||
"releasedOn": "February 17, 2017"
|
||||
},
|
||||
{
|
||||
"id": "587d8259367417b2b2512c86",
|
||||
@ -559,7 +561,8 @@
|
||||
"type": "waypoint",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
"translations": {},
|
||||
"releasedOn": "February 17, 2017"
|
||||
},
|
||||
{
|
||||
"id": "587d825a367417b2b2512c89",
|
||||
@ -597,7 +600,8 @@
|
||||
"type": "waypoint",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
"translations": {},
|
||||
"releasedOn": "February 17, 2017"
|
||||
},
|
||||
{
|
||||
"id": "587d825c367417b2b2512c8f",
|
||||
@ -638,7 +642,8 @@
|
||||
"type": "waypoint",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
"translations": {},
|
||||
"releasedOn": "February 17, 2017"
|
||||
}
|
||||
]
|
||||
}
|
@ -1,8 +1,8 @@
|
||||
{
|
||||
"name": "Coding Interview Data Structure Questions",
|
||||
"order": 9,
|
||||
"time": "50 hours",
|
||||
"helpRoom": "Help",
|
||||
"order": 2,
|
||||
"time": "",
|
||||
"helpRoom": "HelpJavaScript",
|
||||
"challenges": [
|
||||
{
|
||||
"id": "587d8253367417b2b2512c6a",
|
||||
@ -35,6 +35,7 @@
|
||||
"assert(i32View.length === 16, 'message: Your <code>i32View</code> view of your buffer should be 16 elements long.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [
|
||||
"var buffer = new ArrayBuffer(64);\nvar i32View = new Int32Array(buffer);"
|
||||
],
|
||||
@ -66,6 +67,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -105,6 +107,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -143,6 +146,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -181,6 +185,7 @@
|
||||
"assert((function(){var test = new PriorityQueue(); test.enqueue(['David Brown', 1]);test.enqueue(['Jon Snow', 1]); return (test.dequeue() === 'David Brown' && test.dequeue() === 'Jon Snow')}()), 'message: Your code did not correctly prioritize the incoming items. If 2 items have the same priority the older item remains infront of new items');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -223,6 +228,7 @@
|
||||
"assert((function(){ var test = new CircularQueue(); test.enqueue('a'); test.enqueue('b'); return test.front() === 'a' && test.front() === 'a'; })(), 'message: Your <code>front</code> method should return the item at the current read pointer position, without removing it.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [
|
||||
"class CircularQueue {\n constructor () {\n this._cq = ['', '', '', '', ''];\n this._reader = 0;\n this._writer = 0;\n }\n \n printCollection () {\n return this._cq;\n }\n \n _updatePointer (id) {\n if (++this[id] === this._cq.length) {\n this[id] = 0;\n }\n }\n \n enqueue (item) {\n if (Array.isArray(item)) {\n for (const x of item) {\n this.enqueue(x);\n }\n\n return;\n }\n \n this._cq[this._writer] = item;\n \n this._updatePointer('_writer');\n }\n \n dequeue () {\n const item = this._cq[this._reader];\n this._cq[this._reader] = '';\n \n this._updatePointer('_reader');\n return item;\n }\n \n front () {\n return this._cq[this._reader];\n }\n}"
|
||||
],
|
||||
@ -263,6 +269,7 @@
|
||||
"assert((function(){var test = new Set(); test.add('a'); var result = test.add('a'); return (result != undefined) && (result === false);}()), 'message: Your <code>Set</code> should return <code>false</code> when the user tries to add a duplicate value.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -302,6 +309,7 @@
|
||||
"assert((function(){var test = new Set(); test.add(\"a\");test.add(\"b\");test.remove(\"a\"); var vals = test.values(); return (vals[0] === 'b' && vals.length === 1)}()), 'message: Your code should remove the item from');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -350,6 +358,7 @@
|
||||
"assert((function(){var test = new Set(); test.add(\"a\");test.add(\"b\");test.remove(\"a\");return (test.size() === 1)}()), 'message: The <code>size</code> method should return the number of elements in the collection.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -403,6 +412,7 @@
|
||||
"assert((function(){var setA = new Set(); var setB = new Set(); setA.add(\"a\"); setA.add(\"b\"); setA.add(\"c\"); setB.add(\"c\"); setB.add(\"d\"); var unionSetAB = setA.union(setB); var final = unionSetAB.values(); return (final.indexOf('a') !== -1 && final.indexOf('b') !== -1 && final.indexOf('c') !== -1 && final.indexOf('d') !== -1 && final.length === 4)})(), 'message: The proper collection was returned');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -468,6 +478,7 @@
|
||||
"assert(function(){ var setA = new Set(); var setB = new Set(); setA.add(\"a\"); setA.add(\"b\"); setA.add(\"c\"); setB.add(\"c\"); setB.add(\"d\"); var intersectionSetAB = setA.intersection(setB); return (intersectionSetAB.values() === [ 'c' ])}), 'message: The proper collection was returned');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -544,6 +555,7 @@
|
||||
"assert(function(){ var setA = new Set(); var setB = new Set(); setA.add(\"a\"); setA.add(\"b\"); setA.add(\"c\"); setB.add(\"c\"); setB.add(\"d\"); var differenceSetAB = setA.difference(setB);return (differenceSetAB.values() === [ 'a', 'b' ])}), 'message: The proper collection was returned');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -631,6 +643,7 @@
|
||||
"assert(function(){ var setA = new Set(); var setB = new Set(); setA.add(\"a\"); setB.add(\"b\"); setB.add(\"c\"); setB.add(\"a\"); setB.add(\"d\"); var subSetSetAB = setA.subset(setB);return (subSetSetAB === true)}), 'message: The first Set() was contained in the second Set');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -666,6 +679,7 @@
|
||||
"assert((function(){var test = checkSet(); var testArr = [...test]; testArr === [ 1, 2, 3, 'Taco', 'Cat', 'Awesome'])}, 'message: Your Set was returned correctly!');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -695,6 +709,7 @@
|
||||
"assert((function(){var test = checkSet(); var testArr = [...test]; testArr === [ 2, 3 ])}, 'message: Your Set was returned correctly!');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -723,6 +738,7 @@
|
||||
"assert((function(){var test = checkSet([1,2,3], 2); test === [ true, 3 ])}, 'message: Your Set was returned correctly!');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -752,6 +768,7 @@
|
||||
"assert((function(){var test = checkSet(new Set([1,2,3,4,5,6,7])); test === [ 1, 2, 3, 4, 5, 6, 7 ])}, 'message: Your Set was returned correctly!');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -788,6 +805,7 @@
|
||||
"assert((function() { var test = false; if (typeof Map !== 'undefined') { test = new Map() }; test.add('b','b'); test.add('c','d'); test.remove('asdfas'); var init = test.size(); test.clear(); return (init == 2 && test.size() == 0)})(), 'message: The clear method empties the map and the size method returns the number of items present in the map.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -814,6 +832,7 @@
|
||||
"assert(myMap.get('freeCodeCamp') === 'Awesome!', 'message: myMap contains the key value pair <code>freeCodeCamp</code>, <code>Awesome!</code>.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -862,6 +881,7 @@
|
||||
"assert((function() { var test = false; if (typeof HashTable !== 'undefined') { test = new HashTable() }; called = 0; test.add('key1','value1'); test.add('1key','value2'); test.add('ke1y','value3'); return (test.lookup('key1') === 'value1' && test.lookup('1key') == 'value2' && test.lookup('ke1y') == 'value3')})(), 'message: The hash table handles collisions.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -897,6 +917,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -946,6 +967,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1012,6 +1034,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1091,6 +1114,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1171,6 +1195,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1235,6 +1260,7 @@
|
||||
"solutions": [],
|
||||
"hints": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
},
|
||||
@ -1303,6 +1329,7 @@
|
||||
"assert((function() { var test = false; if (typeof DoublyLinkedList !== 'undefined') { test = new DoublyLinkedList() }; test.add(25); test.add(35); test.add(60); test.remove(60); return ( test.print().join('') == '2535' ) })(), 'message: The last item can be removed from the list.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1383,6 +1410,7 @@
|
||||
"};"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1452,6 +1480,7 @@
|
||||
"};"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1515,6 +1544,7 @@
|
||||
"assert((function() { var test = false; if (typeof BinarySearchTree !== 'undefined') { test = new BinarySearchTree() } else { return false; }; if (typeof test.add !== 'function') { return false; }; test.add(4); return test.add(4) == null; })(), 'message: Adding an element that already exists returns null');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1579,6 +1609,7 @@
|
||||
"assert((function() { var test = false; if (typeof BinarySearchTree !== 'undefined') { test = new BinarySearchTree() } else { return false; }; if (typeof test.isPresent !== 'function') { return false; }; return test.isPresent(5) == false; })(), 'message: isPresent handles cases where the tree is empty.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1648,6 +1679,7 @@
|
||||
"assert((function() { var test = false; if (typeof BinarySearchTree !== 'undefined') { test = new BinarySearchTree() } else { return false; }; if (typeof test.isBalanced !== 'function') { return false; }; test.add(4); test.add(1); test.add(7); test.add(87); test.add(34); test.add(45); test.add(73); test.add(8); return test.isBalanced(); })(), 'message: The isBalanced method returns true if the tree is a balanced binary search tree.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1722,6 +1754,7 @@
|
||||
"assert((function() { var test = false; if (typeof BinarySearchTree !== 'undefined') { test = new BinarySearchTree() } else { return false; }; if (typeof test.postorder !== 'function') { return false; }; return (test.postorder() == null); })(), 'message: The postorder method returns null for an empty tree.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1790,6 +1823,7 @@
|
||||
"assert((function() { var test = false; if (typeof BinarySearchTree !== 'undefined') { test = new BinarySearchTree() } else { return false; }; if (typeof test.reverseLevelOrder !== 'function') { return false; }; return (test.reverseLevelOrder() == null); })(), 'message: The reverseLevelOrder method returns null for an empty tree.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -1905,6 +1939,7 @@
|
||||
"};"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2058,6 +2093,7 @@
|
||||
"};"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2227,6 +2263,7 @@
|
||||
"};"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2307,6 +2344,7 @@
|
||||
"assert((function() { var test = false; if (typeof BinarySearchTree !== 'undefined') { test = new BinarySearchTree() } else { return false; }; if (typeof test.invert !== 'function') { return false; }; return (test.invert() == null); })(), 'message: Inverting an empty tree returns null.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2349,6 +2387,7 @@
|
||||
"assert((function testTrie() { var test = false; if (typeof Trie !== 'undefined') { test = new Trie() } else { return false; }; test.add('hop'); test.add('hops'); test.add('hopped'); test.add('hoppy'); test.add('hope'); return (test.isWord('hop') && !test.isWord('ho') && test.isWord('hopped') && !test.isWord('hopp') && test.isWord('hoppy') && !test.isWord('hoping')); }()), 'message: The isWord method returns true only for words added to the trie and false for all other words.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2386,6 +2425,7 @@
|
||||
"assert((function() { var test = false; if (typeof MaxHeap !== 'undefined') { test = new MaxHeap() } else { return false; }; test.insert(50); test.insert(100); test.insert(700); test.insert(32); test.insert(51); let result = test.print(); return ((result.length == 5) ? result[0] == 700 : result[1] == 700) })(), 'message: The insert method adds elements according to the max heap property.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2414,6 +2454,7 @@
|
||||
"assert((function() { var test = false; if (typeof MaxHeap !== 'undefined') { test = new MaxHeap() } else { return false; }; test.insert(30); test.insert(300); test.insert(500); test.insert(10); let result = []; result.push(test.remove()); result.push(test.remove()); result.push(test.remove()); result.push(test.remove()); return (result.join('') == '5003003010') })(), 'The remove method removes the greatest element from the max heap while maintaining the max heap property.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2451,6 +2492,7 @@
|
||||
"assert((function() { var test = false; if (typeof MinHeap !== 'undefined') { test = new MinHeap() } else { return false; }; test.insert(3); test.insert(12); test.insert(5); test.insert(10); test.insert(1); test.insert(27); test.insert(42); test.insert(57); test.insert(5); var result = test.sort(); return (isSorted(result)); })(), 'message: The sort method returns an array containing all items added to the min heap in sorted order.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
@ -2487,6 +2529,7 @@
|
||||
"challengeSeed": [],
|
||||
"tests": [],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 7,
|
||||
"translations": {}
|
||||
@ -2517,6 +2560,7 @@
|
||||
"assert(undirectedAdjList.Jeff.includes(\"Jenny\") && undirectedAdjList.Jenny.includes(\"Jeff\"), 'message: There should be an edge between <code>Jeff</code> and <code>Jenny</code>.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [
|
||||
"var undirectedAdjList = {\n\"James\": [\"Jeff\"],\"Jill\": [\"Jenny\"],\"Jenny\": [\"Jill\", \"Jeff\"],\n\"Jeff\": [\"James\", \"Jenny\"]\n};"
|
||||
],
|
||||
@ -2552,6 +2596,7 @@
|
||||
"assert((adjMatUndirected[3][4] === 1) && (adjMatUndirected[4][3] === 1), 'message: There should be an edge between the fourth and fifth node.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [
|
||||
"var adjMatUndirected = [[0, 0, 1, 1, 0],[0, 0, 0, 0, 0],[1, 0, 0, 0, 1],[1, 0, 0, 0, 1],[0, 0, 1, 1, 0]];"
|
||||
],
|
||||
@ -2591,6 +2636,7 @@
|
||||
"assert((incMatUndirected[1][3] === 1) && (incMatUndirected[3][3] === 1), 'message: There should be a fourth edge between the second and fourth node.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [
|
||||
"var incMatUndirected = [[1, 0, 0, 0],[1, 1, 0, 1],[0, 1, 1, 0],[0, 0, 0, 1],[0, 0, 1, 0]];"
|
||||
],
|
||||
@ -2661,6 +2707,7 @@
|
||||
"}"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [
|
||||
"function bfs(graph, root) {\n// Distance object returned\nvar nodesLen = {};\n// Set all distances to infinity\nfor (var i = 0; i < graph.length; i++) {\nnodesLen[i] = Infinity;\n}\nnodesLen[root] = 0; // ...except root node\nvar queue = [root]; // Keep track of nodes to visit\nvar current; // Current node traversing\n// Keep on going until no more nodes to traverse\nwhile (queue.length !== 0) {\ncurrent = queue.shift();\n// Get adjacent nodes from current node\nvar curConnected = graph[current]; // Get layer of edges from current\nvar neighborIdx = []; // List of nodes with edges\nvar idx = curConnected.indexOf(1); // Get first edge connection\nwhile (idx !== -1) {\nneighborIdx.push(idx); // Add to list of neighbors\nidx = curConnected.indexOf(1, idx + 1); // Keep on searching\n}\n// Loop through neighbors and get lengths\nfor (var j = 0; j < neighborIdx.length; j++) {\n// Increment distance for nodes traversed\nif (nodesLen[neighborIdx[j]] === Infinity) {\nnodesLen[neighborIdx[j]] = nodesLen[current] + 1;\nqueue.push(neighborIdx[j]); // Add new neighbors to queue\n}\n}\n}\nreturn nodesLen;}"
|
||||
],
|
||||
@ -2700,6 +2747,7 @@
|
||||
"assert.deepEqual((function() { var graph = [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0]]; return dfs(graph, 0);})(), [0, 1], 'message: The input graph <code>[[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0]]</code> with a start node of <code>0</code> should return <code>[0, 1]</code>.');"
|
||||
],
|
||||
"type": "waypoint",
|
||||
"releasedOn": "Feb 17, 2017",
|
||||
"solutions": [],
|
||||
"challengeType": 1,
|
||||
"translations": {}
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Coding Interview Take-home Projects",
|
||||
"order": 1,
|
||||
"time": "500 hours",
|
||||
"order": 4,
|
||||
"time": "",
|
||||
"helpRoom": "HelpFrontEnd",
|
||||
"challenges": [
|
||||
{
|
||||
@ -307,6 +307,127 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bd7155d8c242eddfaeb5bd13",
|
||||
"title": "Build a Recipe Box",
|
||||
"description": [
|
||||
"<strong>Objective:</strong> Build a <a href='https://codepen.io' target='_blank'>CodePen.io</a> app that is functionally similar to this: <a href='https://codepen.io/FreeCodeCamp/full/xVXWag/' target='_blank'>https://codepen.io/FreeCodeCamp/full/xVXWag/</a>.",
|
||||
"Fulfill the below <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>user stories</a>. Use whichever libraries or APIs you need. Give it your own personal style.",
|
||||
"<strong>User Story:</strong> I can create recipes that have names and ingredients.",
|
||||
"<strong>User Story:</strong> I can see an index view where the names of all the recipes are visible.",
|
||||
"<strong>User Story:</strong> I can click into any of those recipes to view it.",
|
||||
"<strong>User Story:</strong> I can edit these recipes.",
|
||||
"<strong>User Story:</strong> I can delete these recipes.",
|
||||
"<strong>User Story:</strong> All new recipes I add are saved in my browser's local storage. If I refresh the page, these recipes will still be there.",
|
||||
"<strong>Hint: </strong> You should prefix your local storage keys on CodePen, i.e. <code>_username_recipes</code>",
|
||||
"Remember to use <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/FreeCodeCamp-Get-Help' target='_blank'>Read-Search-Ask</a> if you get stuck.",
|
||||
"When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen.",
|
||||
"You can get feedback on your project by sharing it with your friends on Facebook."
|
||||
],
|
||||
"releasedOn": "January 1, 2016",
|
||||
"challengeSeed": [
|
||||
"6tZ4c-Bxstg"
|
||||
],
|
||||
"tests": [],
|
||||
"type": "zipline",
|
||||
"isRequired": false,
|
||||
"challengeType": 3,
|
||||
"titleRu": "Создайте хранилище рецептов",
|
||||
"descriptionRu": [
|
||||
"<strong>Задание:</strong> Создайте приложение <a href='https://codepen.io' target='_blank'>CodePen.io</a>, функционал которого схож с этим: <a href='https://codepen.io/FreeCodeCamp/full/xVXWag/' target='_blank'>https://codepen.io/FreeCodeCamp/full/xVXWag/</a>.",
|
||||
"<strong>Правило #1:</strong> Не подсматривайте код приложения-примера. Напишите его самостоятельно.",
|
||||
"<strong>Правило #2:</strong> Приложение должно удовлетворять нижеприведённым <a href='https://ru.wikipedia.org/wiki/Пользовательские_истории' target='_blank'>пользовательским историям</a>. Используйте любые библиотеки или API, которые потребуются. Придайте ему свой личный стиль.",
|
||||
"<strong>Правило #3:</strong> Для создания этого проекта вы должны использовать Sass и React.",
|
||||
"<strong>Пользовательская история:</strong> Я могу создавать рецепты, содержащие название и ингредиенты.",
|
||||
"<strong>Пользовательская история:</strong> Я могу просмотреть корневой вид, на котором видны все рецепты.",
|
||||
"<strong>Пользовательская история:</strong> Я могу нажать на имя каждого из рецептов для просмотра содержимого.",
|
||||
"<strong>Пользовательская история:</strong> Я могу отредактировать эти рецепты.",
|
||||
"<strong>Пользовательская история:</strong> Я могу удалить эти рецепты.",
|
||||
"<strong>Пользовательская история:</strong> Все новые рецепты, которые я добавил, сохранены в локальном хранилище моего браузера. Если я обновлю страницу, эти рецепты будут всё ещё там.",
|
||||
"Если что-то не получается, не забывайте пользоваться методом <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/FreeCodeCamp-Get-Help' target='_blank'>Читай-Ищи-Спрашивай</a>.",
|
||||
"Когда закончите, нажмите кнопку \"I've completed this challenge\" и укажите ссылку на вашу работу на CodePen.",
|
||||
"Вы можете получить отзыв о вашем проекте от коллег, поделившись ссылкой на него в нашем <a href='//gitter.im/freecodecamp/codereview' target='_blank'>чате для рассмотрения кода</a>. Также вы можете поделиться ею через Twitter и на странице Free Code Camp вашего города на Facebook."
|
||||
],
|
||||
"titleEs": "Crea una caja de recetas",
|
||||
"descriptionEs": [
|
||||
"<strong>Objetivo:</strong> Construye una aplicación en <a href='https://codepen.io' target='_blank'>CodePen.io</a> que funcione de forma similar al siguiente ejemplo: <a href='https://codepen.io/FreeCodeCamp/full/xVXWag/' target='_blank'>https://codepen.io/FreeCodeCamp/full/xVXWag/</a>.",
|
||||
"<strong>Regla #1:</strong> No veas el código del proyecto de ejemplo. Encuentra la forma de hacerlo por tu cuenta.",
|
||||
"<strong>Regla #2:</strong> Satisface las siguientes <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>historias de usuario</a>. Usa cualquier librería o API que sea necesaria. ¡Ponle un toque personal!.",
|
||||
"<strong>Rule #3:</strong> Debes utilizar ambos Sass y React para construir este proyecto.",
|
||||
"<strong>Historia de usuario:</strong> Puedo crear recetas a las que les puedo poner un nombre y los ingredientes necesarios.",
|
||||
"<strong>Historia de usuario:</strong> Puedo ver un índice que contenga los nombres de todas las recetas.",
|
||||
"<strong>Historia de usuario:</strong> Puedo pulsar cualquiera de las recetas para verla.",
|
||||
"<strong>Historia de usuario:</strong> Puedo editar las recetas.",
|
||||
"<strong>Historia de usuario:</strong> Puedo eliminar las recetas.",
|
||||
"<strong>Historia de usuario:</strong> Las recetas que voy agregando deben guardarse en el almacenamiento local de mi navegador. Las recetas deben seguir allí si refresco la página.",
|
||||
"Recuerda utilizar <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/FreeCodeCamp-Get-Help' target='_blank'>Read-Search-Ask</a> si te sientes atascado.",
|
||||
"Cuando termines, haz clic en el botón de \"I've completed this challenge\" e incluye el vínculo de tu proyecto en CodePen. ",
|
||||
"Puedes obtener retroalimentación acerca de tu proyecto de parte de tus compañeros campistas compartiéndolo en nuestro <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Cuarto de revisión de código</a>. También puedes compartirlo en Twitter y en el campamento de tu ciudad (en Facebook)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "bd7154d8c242eddfaeb5bd13",
|
||||
"title": "Build the Game of Life",
|
||||
"description": [
|
||||
"<strong>Objective:</strong> Build a <a href='https://codepen.io' target='_blank'>CodePen.io</a> app that is functionally similar to this: <a href='https://codepen.io/FreeCodeCamp/full/reGdqx/' target='_blank'>https://codepen.io/FreeCodeCamp/full/reGdqx/</a>.",
|
||||
"Fulfill the below <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>user stories</a>. Use whichever libraries or APIs you need. Give it your own personal style.",
|
||||
"<strong>User Story:</strong> When I first arrive at the game, it will randomly generate a board and start playing.",
|
||||
"<strong>User Story:</strong> I can start and stop the board.",
|
||||
"<strong>User Story:</strong> I can set up the board.",
|
||||
"<strong>User Story:</strong> I can clear the board.",
|
||||
"<strong>User Story:</strong> When I press start, the game will play out.",
|
||||
"<strong>User Story:</strong> Each time the board changes, I can see how many generations have gone by.",
|
||||
"<strong>Hint:</strong> Here's an explanation of Conway's Game of Life from John Conway himself: <a href='https://www.youtube.com/watch?v=E8kUJL04ELA' target='_blank'>https://www.youtube.com/watch?v=E8kUJL04ELA</a>",
|
||||
"<strong>Hint:</strong> Here's an overview of Conway's Game of Life with rules for your reference: <a href='https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life' target='_blank'>https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life</a>",
|
||||
"Remember to use <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/FreeCodeCamp-Get-Help' target='_blank'>Read-Search-Ask</a> if you get stuck.",
|
||||
"When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. ",
|
||||
"You can get feedback on your project by sharing it with your friends on Facebook."
|
||||
],
|
||||
"releasedOn": "January 1, 2016",
|
||||
"challengeSeed": [
|
||||
"5Ajcjs3OmjA"
|
||||
],
|
||||
"tests": [],
|
||||
"type": "zipline",
|
||||
"isRequired": false,
|
||||
"challengeType": 3,
|
||||
"titleRu": "Создайте игру \"Жизнь\"",
|
||||
"descriptionRu": [
|
||||
"<strong>Задание:</strong> Создайте приложение <a href='https://codepen.io' target='_blank'>CodePen.io</a>, функционал которого схож с этим: <a href='https://codepen.io/FreeCodeCamp/full/reGdqx/' target='_blank'>https://codepen.io/FreeCodeCamp/full/reGdqx/</a>.",
|
||||
"<strong>Правило #1:</strong> Не подсматривайте код приложения-примера. Напишите его самостоятельно.",
|
||||
"<strong>Правило #2:</strong> Приложение должно удовлетворять нижеприведённым <a href='https://ru.wikipedia.org/wiki/Пользовательские_истории' target='_blank'>пользовательским историям</a>. Используйте любые библиотеки или API, которые потребуются. Придайте ему свой личный стиль.",
|
||||
"<strong>Правило #3:</strong> Для создания этого проекта вы должны использовать Sass и React.",
|
||||
"<strong>Пользовательская история:</strong> Когда я впервые запускаю игру, она генерирует доску случайным образом и начинает игру.",
|
||||
"<strong>Пользовательская история:</strong> Я могу запустить и остановить игру.",
|
||||
"<strong>Пользовательская история:</strong> Я могу настроить доску.",
|
||||
"<strong>Пользовательская история:</strong> Я могу очистить доску.",
|
||||
"<strong>Пользовательская история:</strong> Когда я нажимаю начать, игра начинает воспроизведение.",
|
||||
"<strong>Пользовательская история:</strong> Каждый раз, когда доска меняется, я могу видеть сколько поколений прошло.",
|
||||
"<strong>Подсказка:</strong> Вот объяснение игры \"Жизнь\" от её создателя Джона Конвея: <a href='https://www.youtube.com/watch?v=E8kUJL04ELA' target='_blank'>https://www.youtube.com/watch?v=E8kUJL04ELA</a>",
|
||||
"<strong>Подсказка:</strong> Вот обзор правил игры \"Жизнь\" для вашего сведения: <a href='https://ru.wikipedia.org/wiki/Жизнь_(игра)' target='_blank'>https://ru.wikipedia.org/wiki/Жизнь_(игра)</a>",
|
||||
"Если что-то не получается, не забывайте пользоваться методом <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/FreeCodeCamp-Get-Help' target='_blank'>Читай-Ищи-Спрашивай</a>.",
|
||||
"Когда закончите, нажмите кнопку \"I've completed this challenge\" и укажите ссылку на вашу работу на CodePen.",
|
||||
"Вы можете получить отзыв о вашем проекте от коллег, поделившись ссылкой на него в нашем <a href='//gitter.im/freecodecamp/codereview' target='_blank'>чате для рассмотрения кода</a>. Также вы можете поделиться ею через Twitter и на странице Free Code Camp вашего города на Facebook."
|
||||
],
|
||||
"titleEs": "Crea un Juego de la vida",
|
||||
"descriptionEs": [
|
||||
"<strong>Objetivo:</strong> Construye una aplicación en <a href='https://codepen.io' target='_blank'>CodePen.io</a> que funcione de forma similar al siguiente ejemplo: <a href='https://codepen.io/FreeCodeCamp/full/reGdqx/' target='_blank'>https://codepen.io/FreeCodeCamp/full/reGdqx/</a>.",
|
||||
"<strong>Regla #1:</strong> No veas el código del proyecto de ejemplo. Encuentra la forma de hacerlo por tu cuenta.",
|
||||
"<strong>Regla #2:</strong> Satisface las siguientes <a href='https://en.wikipedia.org/wiki/User_story' target='_blank'>historias de usuario</a>. Usa cualquier librería o API que sea necesaria. ¡Ponle un toque personal!.",
|
||||
"<strong>Rule #3:</strong> Debes utilizar ambos Sass y React para construir este proyecto.",
|
||||
"<strong>Historia de usuario:</strong> La aplicación debe generar aleatoriamente un tablero y comenzar a jugar cuando entro al juego por primera vez.",
|
||||
"<strong>Historia de usuario:</strong> Puedo iniciar y detener el tablero.",
|
||||
"<strong>Historia de usuario:</strong> Puedo preparar el tablero.",
|
||||
"<strong>Historia de usuario:</strong> Puedo limpiar el tablero.",
|
||||
"<strong>Historia de usuario:</strong> El juego inicia cuando presiono un botón de inicio.",
|
||||
"<strong>Historia de usuario:</strong> Puedo ver cuántas generaciones han pasado cada vez que el tablero cambia.",
|
||||
"<strong>Pista:</strong> Puedes encontrar una explicación del Juego de la vida de Conway de parte del mismísimo John Conway aquí: <a href='https://www.youtube.com/watch?v=E8kUJL04ELA' target='_blank'>https://www.youtube.com/watch?v=E8kUJL04ELA</a>",
|
||||
"<strong>Pista:</strong> Puedes referirte al siguiente enlace para obtener información general acerca del Juego de la vida de Conway incluyendo las reglas del juego: <a href='https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life' target='_blank'>https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life</a>",
|
||||
"Recuerda utilizar <a href='//github.com/FreeCodeCamp/freecodecamp/wiki/FreeCodeCamp-Get-Help' target='_blank'>Read-Search-Ask</a> si te sientes atascado.",
|
||||
"Cuando termines, haz clic en el botón de \"I've completed this challenge\" e incluye el vínculo de tu proyecto en CodePen. ",
|
||||
"Puedes obtener retroalimentación acerca de tu proyecto de parte de tus compañeros campistas compartiéndolo en nuestro <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Cuarto de revisión de código</a>. También puedes compartirlo en Twitter y en el campamento de tu ciudad (en Facebook)."
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "bd7153d8c242eddfaeb5bd13",
|
||||
"title": "Build a Roguelike Dungeon Crawler Game",
|
||||
@ -398,7 +519,8 @@
|
||||
"tests": [],
|
||||
"type": "zipline",
|
||||
"challengeType": 3,
|
||||
"isRequired": false
|
||||
"isRequired": false,
|
||||
"releasedOn": "January 1, 2016"
|
||||
},
|
||||
{
|
||||
"id": "bd7198d8c242eddfaeb5bd13",
|
||||
@ -418,7 +540,7 @@
|
||||
"etBaP3IdlIE"
|
||||
],
|
||||
"tests": [],
|
||||
"isRequired": true,
|
||||
"isRequired": false,
|
||||
"releasedOn": "January 1, 2016",
|
||||
"type": "zipline",
|
||||
"challengeType": 3,
|
||||
@ -461,7 +583,7 @@
|
||||
"kSAqct10gA0"
|
||||
],
|
||||
"tests": [],
|
||||
"isRequired": true,
|
||||
"isRequired": false,
|
||||
"releasedOn": "January 1, 2016",
|
||||
"type": "zipline",
|
||||
"challengeType": 3,
|
||||
@ -483,6 +605,80 @@
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "bd7158d8c443eddfaeb5bd0f",
|
||||
"title": "Manage a Book Trading Club",
|
||||
"description": [
|
||||
"<strong>Objective:</strong> Build a full stack JavaScript app that is functionally similar to this: <a href='http://bookjump.herokuapp.com/' target='_blank'>http://bookjump.herokuapp.com/</a> and deploy it to Heroku.",
|
||||
"Note that for each project, you should create a new GitHub repository and a new Heroku project. If you can't remember how to do this, revisit <a href='/challenges/get-set-for-our-dynamic-web-application-projects'>https://freecodecamp.com/challenges/get-set-for-our-dynamic-web-application-projects</a>.",
|
||||
"Here are the specific user stories you should implement for this project:",
|
||||
"<strong>User Story:</strong> I can view all books posted by every user.",
|
||||
"<strong>User Story:</strong> I can add a new book.",
|
||||
"<strong>User Story:</strong> I can update my settings to store my full name, city, and state.",
|
||||
"<strong>User Story:</strong> I can propose a trade and wait for the other user to accept the trade.",
|
||||
"Once you've finished implementing these user stories, click the \"I've completed this challenge\" button and enter the URLs for both your GitHub repository and your live app running on Heroku.",
|
||||
"You can get feedback on your project by sharing it with your friends on Facebook."
|
||||
],
|
||||
"challengeSeed": [
|
||||
"mzElFmbGqQI"
|
||||
],
|
||||
"tests": [],
|
||||
"type": "basejump",
|
||||
"challengeType": 4,
|
||||
"descriptionEs": [
|
||||
"<strong>Objetivo:</strong> Construye una aplicación de pila completa (full stack) en JavaScript que funcione de forma similar al siguiente proyecto: <a href='http://bookjump.herokuapp.com/' target='_blank'>http://bookjump.herokuapp.com/</a> y despliégalo en Heroku.",
|
||||
"Ten en cuenta que para cada proyecto, debes crear un nuevo repositorio en GitHub y un nuevo proyecto en Heroku. Si no recuerdas cómo hacerlo, visita de nuevo <a href='/challenges/get-set-for-our-dynamic-web-application-projects'>https://freecodecamp.com/challenges/get-set-for-our-dynamic-web-application-projects</a>.",
|
||||
"Estas son las Historias de usuario que debes satisfacer para este Basejump:",
|
||||
"<strong>Historia de usuario:</strong> Puedo ver todos los libros agregados por cada usuario.",
|
||||
"<strong>Historia de usuario:</strong> Puedo agregar un nuevo libro.",
|
||||
"<strong>Historia de usuario:</strong> Puedo actualizar mi configuración para que almacene mi nombre completo, ciudad y Estado.",
|
||||
"<strong>Historia de usuario:</strong> Puedo proponer un intercambio y esperar a que algún otro usuario acepte el trato.",
|
||||
"Una vez hayas terminado de implementar estas historias de usuario, pulsa el botón de \"I've completed this challenge\" e incluye las URLs de tu repositorio GitHub y de tu aplicación corriendo en Heroku.",
|
||||
"Puedes obtener retroalimentación acerca de tu proyecto de parte de tus compañeros campistas compartiéndolo en nuestro <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Cuarto de revisión de código</a>. También puedes compartirlo en Twitter y en el campamento de tu ciudad (en Facebook)."
|
||||
],
|
||||
"isRequired": false,
|
||||
"titleEs": "Administra un club de intercambio de libros"
|
||||
},
|
||||
{
|
||||
"id": "bd7158d8c443eddfaeb5bdee",
|
||||
"title": "Build a Pinterest Clone",
|
||||
"description": [
|
||||
"<strong>Objective:</strong> Build a full stack JavaScript app that is functionally similar to this: <a href='https://midnight-dust.hyperdev.space' target='_blank'>https://midnight-dust.hyperdev.space</a> and deploy it to Heroku.",
|
||||
"Note that for each project, you should create a new GitHub repository and a new Heroku project. If you can't remember how to do this, revisit <a href='/challenges/get-set-for-our-dynamic-web-application-projects'>https://freecodecamp.com/challenges/get-set-for-our-dynamic-web-application-projects</a>.",
|
||||
"Here are the specific user stories you should implement for this project:",
|
||||
"<strong>User Story:</strong> As an unauthenticated user, I can login with Twitter.",
|
||||
"<strong>User Story:</strong> As an authenticated user, I can link to images.",
|
||||
"<strong>User Story:</strong> As an authenticated user, I can delete images that I've linked to.",
|
||||
"<strong>User Story:</strong> As an authenticated user, I can see a Pinterest-style wall of all the images I've linked to.",
|
||||
"<strong>User Story:</strong> As an unauthenticated user, I can browse other users' walls of images.",
|
||||
"<strong>User Story:</strong> As an authenticated user, if I upload an image that is broken, it will be replaced by a placeholder image. (can use jQuery broken image detection)",
|
||||
"<strong>Hint:</strong> <a href='http://masonry.desandro.com/' target='_blank'>Masonry.js</a> is a library that allows for Pinterest-style image grids.",
|
||||
"Once you've finished implementing these user stories, click the \"I've completed this challenge\" button and enter the URLs for both your GitHub repository and your live app running on Heroku.",
|
||||
"You can get feedback on your project by sharing it with your friends on Facebook."
|
||||
],
|
||||
"challengeSeed": [
|
||||
"adrOtJCVP04"
|
||||
],
|
||||
"tests": [],
|
||||
"type": "basejump",
|
||||
"challengeType": 4,
|
||||
"descriptionEs": [
|
||||
"<strong>Objetivo:</strong> Construye una aplicación de pila completa (full stack) en JavaScript que funcione de forma similar al siguiente proyecto: <a href='https://midnight-dust.hyperdev.space/' target='_blank'>https://midnight-dust.hyperdev.space/</a> y despliégalo en Heroku.",
|
||||
"Ten en cuenta que para cada proyecto, debes crear un nuevo repositorio en GitHub y un nuevo proyecto en Heroku. Si no recuerdas cómo hacerlo, visita de nuevo <a href='/challenges/get-set-for-our-dynamic-web-application-projects'>https://freecodecamp.com/challenges/get-set-for-our-dynamic-web-application-projects</a>.",
|
||||
"Estas son las Historias de usuario que debes satisfacer para este Basejump:",
|
||||
"<strong>Historia de usuario:</strong> Como usuario autenticado, puedo acceder a mi cuenta con Twitter.",
|
||||
"<strong>Historia de usuario:</strong> Como usuario autenticado, puedo agregar enlaces a imágenes.",
|
||||
"<strong>Historia de usuario:</strong> Como usuario autenticado, puedo elimiar imágenes que he agregado.",
|
||||
"<strong>Historia de usuario:</strong> Como usuario autenticado, puedo ver un muro al estilo de Pinterest con todas las imágenes para las que he agregado un enlace.",
|
||||
"<strong>Historia de usuario:</strong> Como usuario no autenticado, puedo navegar los muros de imágenes de otros usuarios.",
|
||||
"<strong>Historia de usuario:</strong> Como usuario autenticado, si agrego una imagen corrupta, será reemplazada por una imagen predeterminada. (Puedes utilizar la detección de imágenes corruptas de jQuery)",
|
||||
"<strong>Pista:</strong> <a href='http://masonry.desandro.com/' target='_blank'>Masonry.js</a> es una librería que permite crear cuadrículas de imágenes al estilo de Pinterest.",
|
||||
"Una vez hayas terminado de implementar estas historias de usuario, pulsa el botón de \"I've completed this challenge\" e incluye las URLs de tu repositorio GitHub y de tu aplicación corriendo en Heroku.",
|
||||
"Puedes obtener retroalimentación acerca de tu proyecto de parte de tus compañeros campistas compartiéndolo en nuestro <a href='//gitter.im/freecodecamp/codereview' target='_blank'>Cuarto de revisión de código</a>. También puedes compartirlo en Twitter y en el campamento de tu ciudad (en Facebook)."
|
||||
],
|
||||
"isRequired": false,
|
||||
"titleEs": "Crea un clon de Pinterest"
|
||||
}
|
||||
]
|
||||
}
|
Reference in New Issue
Block a user