{"action":"created","comment":{"url":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/comments/206400721","pull_request_review_id":141806161,"id":206400721,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwNjQwMDcyMQ==","diff_hunk":"@@ -10506,6 +10506,1096 @@\n         }\n       }\n     },\n+    {\n+      \"title\": \"N'th\",\n+      \"description\": [\n+        \"Write a function/method/subroutine/... that when given an integer greater than or equal to zero returns a string of the number followed by an apostrophe then the <a href=\\\"https://en.wikipedia.org/wiki/Ordinal number (linguistics)\\\">ordinal suffix</a>.\",\n+        \"Example returns would include <code>1'st 2'nd 3'rd 11'th 111'th 1001'st 1012'th</code>\"\n+      ],\n+      \"solutions\": [\n+        \"function fnOrdinalForm (n) {\\n  var lstSuffix = 'th st nd rd th th th th th th'.split(' ')\\n  return n.toString() + \\\"'\\\" + (\\n    11 <= n % 100 && 13 >= n % 100 ?\\n    \\\"th\\\" : lstSuffix[n % 10])\\n}\\n\"\n+      ],\n+      \"tests\": [\n+        {\n+          \"text\": \"'<code>fnOrdinalForm</code> should be a function.'\",\n+          \"testString\":\n+            \"assert(typeof fnOrdinalForm=='function','<code>fnOrdinalForm</code> should be a function.');\"\n+        },\n+        {\n+          \"text\": \"'<code>fnOrdinalForm(10)</code> should return a string.'\",\n+          \"testString\":\n+            \"assert(typeof fnOrdinalForm(10) == 'string','<code>fnOrdinalForm(10)</code> should return a string.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>fnOrdinalForm(10)</code> should return <code>\\\"10\\\\'th\\\"</code>.'\",\n+          \"testString\":\n+            \"assert.equal(fnOrdinalForm(10),\\\"10'th\\\",'<code>fnOrdinalForm(10)</code> should return <code>\\\"10\\\\'th\\\"</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>fnOrdinalForm(874)</code> should return <code>\\\"874\\\\'th\\\"</code>.'\",\n+          \"testString\":\n+            \"assert.equal(fnOrdinalForm(874),\\\"874'th\\\",'<code>fnOrdinalForm(874)</code> should return <code>\\\"874\\\\'th\\\"</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>fnOrdinalForm(579)</code> should return <code>\\\"579\\\\'th\\\"</code>.'\",\n+          \"testString\":\n+            \"assert.equal(fnOrdinalForm(579),\\\"579'th\\\",'<code>fnOrdinalForm(579)</code> should return <code>\\\"579\\\\'th\\\"</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>fnOrdinalForm(1001)</code> should return <code>\\\"1001\\\\'st\\\"</code>.'\",\n+          \"testString\":\n+            \"assert.equal(fnOrdinalForm(1001),\\\"1001'st\\\",'<code>fnOrdinalForm(1001)</code> should return <code>\\\"1001\\\\'st\\\"</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>fnOrdinalForm(1002)</code> should return <code>\\\"1002\\\\'nd\\\"</code>.'\",\n+          \"testString\":\n+            \"assert.equal(fnOrdinalForm(1002),\\\"1002'nd\\\",'<code>fnOrdinalForm(1002)</code> should return <code>\\\"1002\\\\'nd\\\"</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>fnOrdinalForm(36003)</code> should return <code>\\\"36003\\\\'rd\\\"</code>.'\",\n+          \"testString\":\n+            \"assert.equal(fnOrdinalForm(36003),\\\"36003'rd\\\",'<code>fnOrdinalForm(36003)</code> should return <code>\\\"36003\\\\'rd\\\"</code>.');\"\n+        }\n+      ],\n+      \"id\": \"5a23c84252665b21eecc7f3c\",\n+      \"challengeType\": 5,\n+      \"releasedOn\": \"July 28, 2018\",\n+      \"files\": {\n+        \"indexjs\": {\n+          \"key\": \"indexjs\",\n+          \"ext\": \"js\",\n+          \"name\": \"index\",\n+          \"contents\": [\"function fnOrdinalForm (n) {\", \"  // Good luck!\", \"}\"],\n+          \"head\": [],\n+          \"tail\": []\n+        }\n+      }\n+    },\n+    {\n+      \"title\": \"N-queens problem\",\n+      \"description\": [\n+        \"Write a function to solve the <a href=\\\"http://rosettacode.org/wiki/WP:Eight_queens_puzzle\\\">eight queens puzzle</a>. It should take the number of rows and columns as parameters. It should return all the possible solutions for the given board size in the form of a 2D array. Each element of this array should be of length equal to the number of rows. The i<sup>th</sup> element should be the position of the queen in the i<sup>th</sup> row.\"\n+      ],\n+      \"solutions\": [\n+        \"function queenPuzzle (rows, columns) {\\n\\n  function addQueen(newRow, columns, prevSolution) {\\n    var newSolutions = [];\\n    var prev = queenPuzzle(newRow, columns);\\n    for (var i = 0; i < prev.length; i++) {\\n      var solution = prev[i];\\n      for (var newColumn = 0; newColumn < columns; newColumn++) {\\n        if (!hasConflict(newRow, newColumn, solution))\\n          newSolutions.push(solution.concat([newColumn]))\\n      }\\n    }\\n    return newSolutions;\\n  }\\n\\n  function hasConflict(newRow, newColumn, solution) {\\n    for (var i = 0; i < newRow; i++) {\\n      if (solution[i] == newColumn ||\\n        solution[i] + i == newColumn + newRow ||\\n        solution[i] - i == newColumn - newRow) {\\n        return true;\\n      }\\n    }\\n    return false;\\n  }\\n  if (rows <= 0) {\\n    return [\\n      []\\n    ];\\n  } else {\\n    return addQueen(rows - 1, columns);\\n  }\\n}\\n\"\n+      ],\n+      \"tests\": [\n+        {\n+          \"text\": \"'<code>queenPuzzle</code> should be a function.'\",\n+          \"testString\":\n+            \"assert(typeof queenPuzzle=='function','<code>queenPuzzle</code> should be a function.');\"\n+        },\n+        {\n+          \"text\": \"'<code>queenPuzzle(4,4)</code> should return a array.'\",\n+          \"testString\":\n+            \"assert(Array.isArray(queenPuzzle(4,4)),'<code>queenPuzzle(4,4)</code> should return a array.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>queenPuzzle(4,4)</code> should return <code>'+JSON.stringify(results[0])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(queenPuzzle(4,4),results[0],'<code>queenPuzzle(4,4)</code> should return <code>'+JSON.stringify(results[0])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>queenPuzzle(3,4)</code> should return <code>'+JSON.stringify(results[1])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(queenPuzzle(3,4),results[1],'<code>queenPuzzle(3,4)</code> should return <code>'+JSON.stringify(results[1])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>queenPuzzle(2,4)</code> should return <code>'+JSON.stringify(results[2])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(queenPuzzle(2,4),results[2],'<code>queenPuzzle(2,4)</code> should return <code>'+JSON.stringify(results[2])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>queenPuzzle(6,6)</code> should return <code>'+JSON.stringify(results[3])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(queenPuzzle(6,6),results[3],'<code>queenPuzzle(6,6)</code> should return <code>'+JSON.stringify(results[3])+'</code>.');\"\n+        }\n+      ],\n+      \"id\": \"5a23c84252665b21eecc7f3b\",\n+      \"challengeType\": 5,\n+      \"releasedOn\": \"July 28, 2018\",\n+      \"files\": {\n+        \"indexjs\": {\n+          \"key\": \"indexjs\",\n+          \"ext\": \"js\",\n+          \"name\": \"index\",\n+          \"contents\": [\n+            \"function queenPuzzle (rows, columns) {\",\n+            \"  // Good luck!\",\n+            \"}\"\n+          ],\n+          \"head\": [],\n+          \"tail\": [\n+            \"var results=[\",\n+            \"[[1,3,0,2],[2,0,3,1]],\",\n+            \"[[0,3,1],[1,3,0],[2,0,3],[3,0,2]],\",\n+            \"[[0,2],[0,3],[1,3],[2,0],[3,0],[3,1]],\",\n+            \"[[1,3,5,0,2,4],[2,5,1,4,0,3],[3,0,4,1,5,2],[4,2,0,5,3,1]]]\"\n+          ]\n+        }\n+      }\n+    },\n+    {\n+      \"title\": \"Narcissistic decimal number\",\n+      \"description\": [\n+        \"A <a href=\\\"http://mathworld.wolfram.com/NarcissisticNumber.html\\\">Narcissistic decimal number</a> is a non-negative integer, $ n $, that is equal to the sum of the $ m^{th} $ powers of each of the digits in the decimal representation of $n$, where $m$ is the number of digits in the decimal representation of $n$.\",\n+        \"Narcissistic (decimal) numbers are sometimes called <b>Armstrong</b> numbers, named after Michael F. Armstrong.\",\n+        \"if $ n $ is <b>153</b>\",\n+        \"then $ m $, (the number of decimal digits) is <b>3</b>\",\n+        \"we have  1<sup>3</sup> + 5<sup>3</sup> + 3<sup>3</sup> = 1 + 125 + 27 = <b>153</b>\",\n+        \"and so <b>153</b> is a narcissistic decimal number</span>\",\n+        \"Write a function that returns true if the given number is Narcissistic, otherwise false.\"\n+      ],\n+      \"solutions\": [\n+        \"function isNarc (x) {\\n  var str = x.toString(),\\n    i,\\n    sum = 0,\\n    l = str.length;\\n  if (x < 0) {\\n    return false;\\n  } else {\\n    for (i = 0; i < l; i++) {\\n      sum += Math.pow(str.charAt(i), l);\\n    }\\n  }\\n  return sum == x;\\n}\\n\"\n+      ],\n+      \"tests\": [\n+        {\n+          \"text\": \"'<code>isNarc</code> should be a function.'\",\n+          \"testString\":\n+            \"assert(typeof isNarc=='function','<code>isNarc</code> should be a function.');\"\n+        },\n+        {\n+          \"text\": \"'<code>isNarc(153)</code> should return a boolean.'\",\n+          \"testString\":\n+            \"assert(typeof isNarc(153) == 'boolean','<code>isNarc(153)</code> should return a boolean.');\"\n+        },\n+        {\n+          \"text\": \"'<code>isNarc(153)</code> should return <code>true</code>.'\",\n+          \"testString\":\n+            \"assert.equal(isNarc(153),true,'<code>isNarc(153)</code> should return <code>true</code>.');\"\n+        },\n+        {\n+          \"text\": \"'<code>isNarc(4)</code> should return <code>true</code>.'\",\n+          \"testString\":\n+            \"assert.equal(isNarc(4),true,'<code>isNarc(4)</code> should return <code>true</code>.');\"\n+        },\n+        {\n+          \"text\": \"'<code>isNarc(94)</code> should return <code>false</code>.'\",\n+          \"testString\":\n+            \"assert.equal(isNarc(94),false,'<code>isNarc(94)</code> should return <code>false</code>.');\"\n+        },\n+        {\n+          \"text\": \"'<code>isNarc(370)</code> should return <code>true</code>.'\",\n+          \"testString\":\n+            \"assert.equal(isNarc(370),true,'<code>isNarc(370)</code> should return <code>true</code>.');\"\n+        },\n+        {\n+          \"text\": \"'<code>isNarc(24)</code> should return <code>false</code>.'\",\n+          \"testString\":\n+            \"assert.equal(isNarc(24),false,'<code>isNarc(24)</code> should return <code>false</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>isNarc(172)</code> should return <code>false</code>.'\",\n+          \"testString\":\n+            \"assert.equal(isNarc(172),false,'<code>isNarc(172)</code> should return <code>false</code>.');\"\n+        }\n+      ],\n+      \"id\": \"5a23c84252665b21eecc7f30\",\n+      \"challengeType\": 5,\n+      \"releasedOn\": \"July 28, 2018\",\n+      \"files\": {\n+        \"indexjs\": {\n+          \"key\": \"indexjs\",\n+          \"ext\": \"js\",\n+          \"name\": \"index\",\n+          \"contents\": [\"function isNarc (x) {\", \"  // Good luck!\", \"}\"],\n+          \"head\": [],\n+          \"tail\": []\n+        }\n+      }\n+    },\n+    {\n+      \"title\": \"Natural sorting\",\n+      \"description\": [\n+        \"Natural sorting is the sorting of text that does more than rely on the order of individual characters codes to make the finding of individual strings easier for a <i>human</i> reader.\",\n+        \"There is no \\\"one true way\\\" to do this, but for the purpose of this task 'natural' orderings might include:\",\n+        \"<ul><li> Ignore leading, trailing and multiple adjacent spaces</li> <li> Make all whitespace characters equivalent.</li> <li> Sorting without regard to case.</li> <li> Sorting numeric portions of strings in numeric order. That is split the string into fields on numeric boundaries, then sort on each field, with the rightmost fields being the most significant, and numeric fields of integers treated as numbers.</li> <li> Sort ligatures as separate letters.</li></ul>\",\n+        \"Write a function that takes an array of strings as parameter and returns the sorted array.\"\n+      ],\n+      \"solutions\": [\n+        \"function nsort (input) {\\n  var e = function(s) {\\n    return (' ' + s + ' ').replace(/[\\\\s]+/g, ' ').toLowerCase().replace(/[\\\\d]+/, function(d) {\\n      d = '' + 1e20 + d;\\n      return d.substring(d.length - 20);\\n    });\\n  };\\n  return input.sort(function(a, b) {\\n    return e(a).localeCompare(e(b));\\n  });\\n};\\n\\n\"\n+      ],\n+      \"tests\": [\n+        {\n+          \"text\": \"'<code>nsort</code> should be a function.'\",\n+          \"testString\":\n+            \"assert(typeof nsort=='function','<code>nsort</code> should be a function.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>nsort('+JSON.stringify(tests[0])+')</code> should return a array.'\",\n+          \"testString\":\n+            \"assert(Array.isArray(nsort(tests[0])),'<code>nsort('+JSON.stringify(tests[0])+')</code> should return a array.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>nsort('+JSON.stringify(tests[0])+')</code> should return <code>'+JSON.stringify(results[0])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(nsort(tests[0]),results[0],'<code>nsort('+JSON.stringify(tests[0])+')</code> should return <code>'+JSON.stringify(results[0])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>nsort('+JSON.stringify(tests[1])+')</code> should return <code>'+JSON.stringify(results[1])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(nsort(tests[1]),results[1],'<code>nsort('+JSON.stringify(tests[1])+')</code> should return <code>'+JSON.stringify(results[1])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>nsort('+JSON.stringify(tests[2])+')</code> should return <code>'+JSON.stringify(results[2])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(nsort(tests[2]),results[2],'<code>nsort('+JSON.stringify(tests[2])+')</code> should return <code>'+JSON.stringify(results[2])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>nsort('+JSON.stringify(tests[3])+')</code> should return <code>'+JSON.stringify(results[3])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(nsort(tests[3]),results[3],'<code>nsort('+JSON.stringify(tests[3])+')</code> should return <code>'+JSON.stringify(results[3])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>nsort('+JSON.stringify(tests[4])+')</code> should return <code>'+JSON.stringify(results[4])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(nsort(tests[4]),results[4],'<code>nsort('+JSON.stringify(tests[4])+')</code> should return <code>'+JSON.stringify(results[4])+'</code>.');\"\n+        }\n+      ],\n+      \"id\": \"5a23c84252665b21eecc7f32\",\n+      \"challengeType\": 5,\n+      \"releasedOn\": \"July 28, 2018\",\n+      \"files\": {\n+        \"indexjs\": {\n+          \"key\": \"indexjs\",\n+          \"ext\": \"js\",\n+          \"name\": \"index\",\n+          \"contents\": [\"function nsort (input) {\", \"  // Good luck!\", \"}\"],\n+          \"head\": [],\n+          \"tail\": [\n+            \"var tests=[\",\n+            \"[\\\"file10.txt\\\",\\\"\\\\nfile9.txt\\\",\\\"File11.TXT\\\",\\\"file12.txt\\\"],\",\n+            \"[\\\"ignore leading spaces: 2-2\\\",\\\" ignore leading spaces: 2-1\\\",\\\" ignore leading spaces: 2+0\\\",\\\" ignore leading spaces: 2+1\\\"],\",\n+            \"[\\\"Equiv. spaces: 3-3\\\",\\\"Equiv.\\\\rspaces: 3-2\\\",\\\"Equiv.\\\\x0cspaces: 3-1\\\",\\\"Equiv.\\\\x0bspaces: 3+0\\\",\\\"Equiv.\\\\nspaces: 3+1\\\",\\\"Equiv.\\\\tspaces: 3+2\\\"],\",\n+            \"[\\\"cASE INDEPENENT: 3-2\\\",\\\"caSE INDEPENENT: 3-1\\\",\\\"casE INDEPENENT: 3+0\\\",\\\"case INDEPENENT: 3+1\\\"],\",\n+            \"[\\\"The Wind in the Willows\\\",\\\"The 40th step more\\\",\\\"The 39 steps\\\",\\\"Wanda\\\"]]\",\n+            \"var results=[\",\n+            \"[\\\"\\\\nfile9.txt\\\",\\\"file10.txt\\\",\\\"File11.TXT\\\",\\\"file12.txt\\\"],\",\n+            \"[\\\" ignore leading spaces: 2-1\\\",\\\"ignore leading spaces: 2-2\\\",\\\" ignore leading spaces: 2+0\\\",\\\" ignore leading spaces: 2+1\\\"],\",\n+            \"[\\\"Equiv.\\\\fspaces: 3-1\\\",\\\"Equiv.\\\\rspaces: 3-2\\\",\\\"Equiv. spaces: 3-3\\\",\\\"Equiv.\\\\u000bspaces: 3+0\\\",\\\"Equiv.\\\\nspaces: 3+1\\\",\\\"Equiv.\\\\tspaces: 3+2\\\"],\",\n+            \"[\\\"caSE INDEPENENT: 3-1\\\",\\\"cASE INDEPENENT: 3-2\\\",\\\"casE INDEPENENT: 3+0\\\",\\\"case INDEPENENT: 3+1\\\"],\",\n+            \"[\\\"The 39 steps\\\",\\\"The 40th step more\\\",\\\"The Wind in the Willows\\\",\\\"Wanda\\\"]]\"\n+          ]\n+        }\n+      }\n+    },\n+    {\n+      \"title\": \"Non-continuous subsequences\",\n+      \"description\": [\n+        \"Consider some sequence of elements. (It differs from a mere set of elements by having an ordering among members.)\",\n+        \"A <i>subsequence</i> contains some subset of the elements of this sequence, in the same order.\",\n+        \"A <i>continuous</i> subsequence is one in which no elements are missing between the first and last elements of the subsequence.\",\n+        \"Note: Subsequences are defined <i>structurally</i>, not by their contents.\",\n+        \"So a sequence <i>a,b,c,d</i> will always have the same subsequences and continuous subsequences, no matter which values are substituted; it may even be the same value.\",\n+        \"<b>Task</b>: Find all non-continuous subsequences for a given sequence.\",\n+        \"Example: For the sequence  <i>1,2,3,4</i>,  there are five non-continuous subsequences, namely:\",\n+        \"<i>1,3</i>\",\n+        \"<i>1,4</i>\",\n+        \"<i>2,4</i>\",\n+        \"<i>1,3,4</i>\",\n+        \"<i>1,2,4</i>\",\n+        \"Wite a function that returns the non-continuous subsequences of the given sequence.\"\n+      ],\n+      \"solutions\": [\n+        \"function non_continuous_subsequences (ary) {\\n  function is_array_continuous(ary) {\\n    if (ary.length < 2)\\n      return true;\\n    for (var j = 1; j < ary.length; j++) {\\n      if (ary[j] - ary[j - 1] != 1) {\\n        return false;\\n      }\\n    }\\n    return true;\\n  }\\n  function powerset(ary) {\\n    var ps = [\\n      []\\n    ];\\n    for (var i = 0; i < ary.length; i++) {\\n      for (var j = 0, len = ps.length; j < len; j++) {\\n        ps.push(ps[j].concat(ary[i]));\\n      }\\n    }\\n    return ps;\\n  }\\n\\n  ary = powerset(ary)\\n  var non_continuous = new Array();\\n  for (var i = 0; i < ary.length; i++) {\\n    if (!is_array_continuous(ary[i])) {\\n      non_continuous.push(ary[i]);\\n    }\\n  }\\n  return non_continuous;\\n}\\n\\n\"\n+      ],\n+      \"tests\": [\n+        {\n+          \"text\":\n+            \"'<code>non_continuous_subsequences</code> should be a function.'\",\n+          \"testString\":\n+            \"assert(typeof non_continuous_subsequences=='function','<code>non_continuous_subsequences</code> should be a function.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>non_continuous_subsequences('+JSON.stringify(tests[0])+')</code> should return a array.'\",\n+          \"testString\":\n+            \"assert(Array.isArray(non_continuous_subsequences(tests[0])),'<code>non_continuous_subsequences('+JSON.stringify(tests[0])+')</code> should return a array.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>non_continuous_subsequences('+JSON.stringify(tests[0])+')</code> should return <code>'+JSON.stringify(results[0])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(non_continuous_subsequences(tests[0]),results[0],'<code>non_continuous_subsequences('+JSON.stringify(tests[0])+')</code> should return <code>'+JSON.stringify(results[0])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>non_continuous_subsequences('+JSON.stringify(tests[1])+')</code> should return <code>'+JSON.stringify(results[1])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(non_continuous_subsequences(tests[1]),results[1],'<code>non_continuous_subsequences('+JSON.stringify(tests[1])+')</code> should return <code>'+JSON.stringify(results[1])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>non_continuous_subsequences('+JSON.stringify(tests[2])+')</code> should return <code>'+JSON.stringify(results[2])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(non_continuous_subsequences(tests[2]),results[2],'<code>non_continuous_subsequences('+JSON.stringify(tests[2])+')</code> should return <code>'+JSON.stringify(results[2])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>non_continuous_subsequences('+JSON.stringify(tests[3])+')</code> should return <code>'+JSON.stringify(results[3])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(non_continuous_subsequences(tests[3]),results[3],'<code>non_continuous_subsequences('+JSON.stringify(tests[3])+')</code> should return <code>'+JSON.stringify(results[3])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>non_continuous_subsequences('+JSON.stringify(tests[4])+')</code> should return <code>'+JSON.stringify(results[4])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(non_continuous_subsequences(tests[4]),results[4],'<code>non_continuous_subsequences('+JSON.stringify(tests[4])+')</code> should return <code>'+JSON.stringify(results[4])+'</code>.');\"\n+        }\n+      ],\n+      \"id\": \"5a23c84252665b21eecc7f35\",\n+      \"challengeType\": 5,\n+      \"releasedOn\": \"July 28, 2018\",\n+      \"files\": {\n+        \"indexjs\": {\n+          \"key\": \"indexjs\",\n+          \"ext\": \"js\",\n+          \"name\": \"index\",\n+          \"contents\": [\n+            \"function non_continuous_subsequences (ary) {\",\n+            \"  // Good luck!\",\n+            \"}\"\n+          ],\n+          \"head\": [],\n+          \"tail\": [\n+            \"var tests=[\",\n+            \"[1,2,3],\",\n+            \"[1,2,3,4],\",\n+            \"[1,5,9],\",\n+            \"[1,2,3,4,5],\",\n+            \"[5,18,14]]\",\n+            \"var results=[\",\n+            \"[[1,3]],\",\n+            \"[[1,3],[1,4],[2,4],[1,2,4],[1,3,4]],\",\n+            \"[[1,5],[1,9],[5,9],[1,5,9]],\",\n+            \"[[1,3],[1,4],[2,4],[1,2,4],[1,3,4],[1,5],[2,5],[1,2,5],[3,5],[1,3,5],[2,3,5],[1,2,3,5],[1,4,5],[2,4,5],[1,2,4,5],[1,3,4,5]],\",\n+            \"[[5,18],[5,14],[18,14],[5,18,14]]]\"\n+          ]\n+        }\n+      }\n+    },\n+    {\n+      \"title\": \"Nonoblock\",\n+      \"description\": [\n+        \"Nonoblock is a chip off the old <a href=\\\"http://rosettacode.org/wiki/Nonogram solver\\\">Nonogram</a> puzzle.\",\n+        \"Given a row of five cells and a block of two cells followed by a block of 1 cell - in that order, the example could be shown as:\",\n+        \"[0,0,0,0,0] # 5 cells and [2, 1] blocks\",\n+        \"And would expand to the following 3 possible rows of block positions:\",\n+        \"[1,1,0,1,0]\",\n+        \"[1,1,0,0,1]\",\n+        \"[0,1,1,0,1]\",\n+        \"Note how the sets of blocks are always separated by a 0.\",\n+        \"Write a function that takes a string and a number as parameters. The string contains digits and gives the size of the blocks. For example: \\\"21\\\" = [2,1] blocks. The second parameter is the length/number of cells. The function should return an array with all possible solutions. Each element should be a bit array (array consisting of 0s and 1s) that represents a solution.\"\n+      ],\n+      \"solutions\": [\n+        \"function Nonoblock (data, len) {\\n  function block() {\\n    let sumChars = 0;\\n\\n    for (let i = 0; i < data.length; i++) {\\n      sumChars += parseInt(data[i])\\n    }\\n\\n    let a = data.split(\\\"\\\");\\n\\n    let prep = a.filter(x => \\\"\\\" != x)\\n      .map(x => repeat(parseInt(x), \\\"1\\\"))\\n\\n    var res=[]\\n    for (var r of genSequence(prep, len - sumChars + 1))\\n      res.push(r.substring(1))\\n\\n    return res\\n  }\\n\\n  function genSequence(ones, numZeros) {\\n    if (ones.length == 0)\\n      return [repeat(numZeros, \\\"0\\\")]\\n\\n    let result = [];\\n    for (let x = 1; x < numZeros - ones.length + 2; x++) {\\n      let skipOne = ones.slice(1, ones.length)\\n      let t = genSequence(skipOne, numZeros - x)\\n\\n      for (let i = 0; i < t.length; i++) {\\n        result.push(repeat(x, \\\"0\\\") + ones[0] + t[i]);\\n      }\\n    }\\n\\n    return result;\\n  }\\n\\n  function repeat(n, s) {\\n    let sb = \\\"\\\";\\n    for (let i = 0; i < n; i++)\\n      sb += s\\n    return sb;\\n  }\\n  return block()\\n}\\n\"\n+      ],\n+      \"tests\": [\n+        {\n+          \"text\": \"'<code>Nonoblock</code> should be a function.'\",\n+          \"testString\":\n+            \"assert(typeof Nonoblock=='function','<code>Nonoblock</code> should be a function.');\"\n+        },\n+        {\n+          \"text\": \"'<code>Nonoblock(\\\"21\\\",5)</code> should return a array.'\",\n+          \"testString\":\n+            \"assert(Array.isArray(Nonoblock(\\\"21\\\",5)),'<code>Nonoblock(\\\"21\\\",5)</code> should return a array.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>Nonoblock(\\\"21\\\",5)</code> should return <code>'+JSON.stringify(results[0])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(Nonoblock(\\\"21\\\",5),results[0],'<code>Nonoblock(\\\"21\\\",5)</code> should return <code>'+JSON.stringify(results[0])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>Nonoblock(\\\"\\\",5)</code> should return <code>'+JSON.stringify(results[1])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(Nonoblock(\\\"\\\",5),results[1],'<code>Nonoblock(\\\"\\\",5)</code> should return <code>'+JSON.stringify(results[1])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>Nonoblock(\\\"8\\\",10)</code> should return <code>'+JSON.stringify(results[2])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(Nonoblock(\\\"8\\\",10),results[2],'<code>Nonoblock(\\\"8\\\",10)</code> should return <code>'+JSON.stringify(results[2])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>Nonoblock(\\\"2323\\\",15)</code> should return <code>'+JSON.stringify(results[3])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(Nonoblock(\\\"2323\\\",15),results[3],'<code>Nonoblock(\\\"2323\\\",15)</code> should return <code>'+JSON.stringify(results[3])+'</code>.');\"\n+        },\n+        {\n+          \"text\":\n+            \"'<code>Nonoblock(\\\"23\\\",5)</code> should return <code>'+JSON.stringify(results[4])+'</code>.'\",\n+          \"testString\":\n+            \"assert.deepEqual(Nonoblock(\\\"23\\\",5),results[4],'<code>Nonoblock(\\\"23\\\",5)</code> should return <code>'+JSON.stringify(results[4])+'</code>.');\"\n+        }\n+      ],\n+      \"id\": \"5a23c84252665b21eecc7f39\",\n+      \"challengeType\": 5,\n+      \"releasedOn\": \"July 28, 2018\",\n+      \"files\": {\n+        \"indexjs\": {\n+          \"key\": \"indexjs\",\n+          \"ext\": \"js\",\n+          \"name\": \"index\",\n+          \"contents\": [\n+            \"function Nonoblock (data, len) {\",\n+            \"  // Good luck!\",\n+            \"}\"\n+          ],\n+          \"head\": [],\n+          \"tail\": [\n+            \"var results=[\",\n+            \"[\\\"11010\\\",\\\"11001\\\",\\\"01101\\\"],\",\n+            \"[\\\"00000\\\"],\",\n+            \"[\\\"1111111100\\\",\\\"0111111110\\\",\\\"0011111111\\\"],\",\n+            \"[\\\"110111011011100\\\",\\\"110111011001110\\\",\\\"110111011000111\\\",\\\"110111001101110\\\",\\\"110111001100111\\\",\\\"110111000110111\\\",\\\"110011101101110\\\",\\\"110011101100111\\\",\\\"110011100110111\\\",\\\"110001110110111\\\",\\\"011011101101110\\\",\\\"011011101100111\\\",\\\"011011100110111\\\",\\\"011001110110111\\\",\\\"001101110110111\\\"],\",\n+            \"[]]\"\n+          ]\n+        }\n+      }\n+    },\n+    {\n+      \"title\": \"Nonogram solver\",\n+      \"description\": [\n+        \"A <a href=\\\"https://en.wikipedia.org/wiki/Nonogram\\\">nonogram</a> is a puzzle that provides numeric clues used to fill in a grid of cells, establishing for each cell whether it is filled or not.\",\n+        \"The puzzle solution is typically a picture of some kind.\",\n+        \"Each row and column of a rectangular grid is annotated with the lengths of its distinct runs of occupied cells.\",\n+        \"Using only these lengths you should find a valid configuration of empty and occupied cells.\",\n+        \"Problem:\",\n+        \". . . . . . . .  3\",\n+        \". . . . . . . .  2 1\",\n+        \". . . . . . . .  3 2\",\n+        \". . . . . . . .  2 2\",\n+        \". . . . . . . .  6\",\n+        \". . . . . . . .  1 5\",\n+        \". . . . . . . .  6\",\n+        \". . . . . . . .  1\",\n+        \". . . . . . . .  2\",\n+        \"1 3 1 7 5 3 4 3\",\n+        \"2 1 5 1\",\n+        \"Solution:\",\n+        \". # # # . . . .  3\",\n+        \"# # . # . . . .  2 1\",\n+        \". # # # . . # #  3 2\",\n+        \". . # # . . # #  2 2\",\n+        \". . # # # # # #  6\",\n+        \"# . # # # # # .  1 5\",\n+        \"# # # # # # . .  6\",\n+        \". . . . # . . .  1\",\n+        \". . . # # . . .  2\",\n+        \"1 3 1 7 5 3 4 3\",\n+        \"2 1 5 1\",\n+        \"The problem above could be represented by two lists of lists:\",\n+        \"x = [[3], [2,1], [3,2], [2,2], [6], [1,5], [6], [1], [2]]\",\n+        \"y = [[1,2], [3,1], [1,5], [7,1], [5], [3], [4], [3]]\",\n+        \"A more compact representation of the same problem uses strings,\",\n+        \"where the letters represent the numbers, A=1, B=2, etc:\",\n+        \"x = \\\"C BA CB BB F AE F A B\\\"\",\n+        \"y = \\\"AB CA AE GA E C D C\\\"\",\n+        \"Write a function that takes an array of strings as parameter and returns a 2D bit-matrix as a solution for the given nonogram (represented by the array of strings). The element of the bit-matrix should be 1 for occupied cell and 0 for unoccupied cell.\"","path":"challenges/08-coding-interview-prep/rosetta-code.json","position":511,"original_position":511,"commit_id":"bdb3677de8e6effd94c5d5738d90c82bd36c3318","original_commit_id":"bdb3677de8e6effd94c5d5738d90c82bd36c3318","user":{"login":"scissorsneedfoodtoo","id":2051070,"node_id":"MDQ6VXNlcjIwNTEwNzA=","avatar_url":"https://avatars3.githubusercontent.com/u/2051070?v=4","gravatar_id":"","url":"https://api.github.com/users/scissorsneedfoodtoo","html_url":"https://github.com/scissorsneedfoodtoo","followers_url":"https://api.github.com/users/scissorsneedfoodtoo/followers","following_url":"https://api.github.com/users/scissorsneedfoodtoo/following{/other_user}","gists_url":"https://api.github.com/users/scissorsneedfoodtoo/gists{/gist_id}","starred_url":"https://api.github.com/users/scissorsneedfoodtoo/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/scissorsneedfoodtoo/subscriptions","organizations_url":"https://api.github.com/users/scissorsneedfoodtoo/orgs","repos_url":"https://api.github.com/users/scissorsneedfoodtoo/repos","events_url":"https://api.github.com/users/scissorsneedfoodtoo/events{/privacy}","received_events_url":"https://api.github.com/users/scissorsneedfoodtoo/received_events","type":"User","site_admin":false},"body":"\"Write a function that takes an array of strings as parameter and returns a 2D bit-matrix as a solution for the given nonogram (represented by the array of strings). Each element of the bit-matrix should be either a 1 for an occupied cell, or a 0 for an unoccupied cell.\"","created_at":"2018-07-31T05:47:43Z","updated_at":"2018-07-31T05:52:07Z","html_url":"https://github.com/freeCodeCamp/curriculum/pull/188#discussion_r206400721","pull_request_url":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/comments/206400721"},"html":{"href":"https://github.com/freeCodeCamp/curriculum/pull/188#discussion_r206400721"},"pull_request":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188"}}},"pull_request":{"url":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188","id":204596770,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA0NTk2Nzcw","html_url":"https://github.com/freeCodeCamp/curriculum/pull/188","diff_url":"https://github.com/freeCodeCamp/curriculum/pull/188.diff","patch_url":"https://github.com/freeCodeCamp/curriculum/pull/188.patch","issue_url":"https://api.github.com/repos/freeCodeCamp/curriculum/issues/188","number":188,"state":"open","locked":false,"title":"feat(interview-prep): Porting Rosetta problems","user":{"login":"NitronR","id":7567035,"node_id":"MDQ6VXNlcjc1NjcwMzU=","avatar_url":"https://avatars1.githubusercontent.com/u/7567035?v=4","gravatar_id":"","url":"https://api.github.com/users/NitronR","html_url":"https://github.com/NitronR","followers_url":"https://api.github.com/users/NitronR/followers","following_url":"https://api.github.com/users/NitronR/following{/other_user}","gists_url":"https://api.github.com/users/NitronR/gists{/gist_id}","starred_url":"https://api.github.com/users/NitronR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NitronR/subscriptions","organizations_url":"https://api.github.com/users/NitronR/orgs","repos_url":"https://api.github.com/users/NitronR/repos","events_url":"https://api.github.com/users/NitronR/events{/privacy}","received_events_url":"https://api.github.com/users/NitronR/received_events","type":"User","site_admin":false},"body":"#### Description\r\n<!-- Describe your changes in detail below this line-->\r\n\r\n\r\n\r\n\r\n\r\n<!--\r\nBefore creating a PR, please make sure to verify the following by marking the checkboxes below as complete\r\n\r\n- [x] Like this!\r\n\r\nor optionally you can click the checkboxes after you have opened the pull request.\r\n-->\r\n#### Pre-Submission Checklist\r\n\r\n- [ ] Your pull request targets the `dev` branch.\r\n- [ ] Branch starts with either `fix/`, `feature/`, or `translate/` (e.g. `fix/challenge-tests`)\r\n- [ ] All new and existing tests pass the command `npm test`.\r\n- [ ] Use `npm run commit` to generate a conventional commit message.\r\n    Learn more here: <https://conventionalcommits.org/#why-use-conventional-commits>\r\n- [ ] The changes were done locally on your machine and NOT GitHub web interface.\r\n    If they were done on the web interface you have ensured that you are creating conventional commit messages.\r\n\r\n#### Checklist:\r\n\r\n- [ ] Tested changes locally.\r\n- [ ] Addressed currently open issue (replace XXXXX with an issue no in next line)\r\n\r\nCloses #XXXXX\r\n\r\n","created_at":"2018-07-28T15:01:47Z","updated_at":"2018-07-31T05:52:07Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e3646d7e000139a62d9aea92163e190e6a2cc517","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":977124742,"node_id":"MDU6TGFiZWw5NzcxMjQ3NDI=","url":"https://api.github.com/repos/freeCodeCamp/curriculum/labels/status:%20ready%20for%20QA","name":"status: ready for QA","color":"006b75","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188/commits","review_comments_url":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188/comments","review_comment_url":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/comments{/number}","comments_url":"https://api.github.com/repos/freeCodeCamp/curriculum/issues/188/comments","statuses_url":"https://api.github.com/repos/freeCodeCamp/curriculum/statuses/bdb3677de8e6effd94c5d5738d90c82bd36c3318","head":{"label":"NitronR:feat/interview-prep","ref":"feat/interview-prep","sha":"bdb3677de8e6effd94c5d5738d90c82bd36c3318","user":{"login":"NitronR","id":7567035,"node_id":"MDQ6VXNlcjc1NjcwMzU=","avatar_url":"https://avatars1.githubusercontent.com/u/7567035?v=4","gravatar_id":"","url":"https://api.github.com/users/NitronR","html_url":"https://github.com/NitronR","followers_url":"https://api.github.com/users/NitronR/followers","following_url":"https://api.github.com/users/NitronR/following{/other_user}","gists_url":"https://api.github.com/users/NitronR/gists{/gist_id}","starred_url":"https://api.github.com/users/NitronR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NitronR/subscriptions","organizations_url":"https://api.github.com/users/NitronR/orgs","repos_url":"https://api.github.com/users/NitronR/repos","events_url":"https://api.github.com/users/NitronR/events{/privacy}","received_events_url":"https://api.github.com/users/NitronR/received_events","type":"User","site_admin":false},"repo":{"id":138195964,"node_id":"MDEwOlJlcG9zaXRvcnkxMzgxOTU5NjQ=","name":"curriculum","full_name":"NitronR/curriculum","owner":{"login":"NitronR","id":7567035,"node_id":"MDQ6VXNlcjc1NjcwMzU=","avatar_url":"https://avatars1.githubusercontent.com/u/7567035?v=4","gravatar_id":"","url":"https://api.github.com/users/NitronR","html_url":"https://github.com/NitronR","followers_url":"https://api.github.com/users/NitronR/followers","following_url":"https://api.github.com/users/NitronR/following{/other_user}","gists_url":"https://api.github.com/users/NitronR/gists{/gist_id}","starred_url":"https://api.github.com/users/NitronR/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/NitronR/subscriptions","organizations_url":"https://api.github.com/users/NitronR/orgs","repos_url":"https://api.github.com/users/NitronR/repos","events_url":"https://api.github.com/users/NitronR/events{/privacy}","received_events_url":"https://api.github.com/users/NitronR/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/NitronR/curriculum","description":"The freeCodeCamp curriculum and lesson editor","fork":true,"url":"https://api.github.com/repos/NitronR/curriculum","forks_url":"https://api.github.com/repos/NitronR/curriculum/forks","keys_url":"https://api.github.com/repos/NitronR/curriculum/keys{/key_id}","collaborators_url":"https://api.github.com/repos/NitronR/curriculum/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/NitronR/curriculum/teams","hooks_url":"https://api.github.com/repos/NitronR/curriculum/hooks","issue_events_url":"https://api.github.com/repos/NitronR/curriculum/issues/events{/number}","events_url":"https://api.github.com/repos/NitronR/curriculum/events","assignees_url":"https://api.github.com/repos/NitronR/curriculum/assignees{/user}","branches_url":"https://api.github.com/repos/NitronR/curriculum/branches{/branch}","tags_url":"https://api.github.com/repos/NitronR/curriculum/tags","blobs_url":"https://api.github.com/repos/NitronR/curriculum/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/NitronR/curriculum/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/NitronR/curriculum/git/refs{/sha}","trees_url":"https://api.github.com/repos/NitronR/curriculum/git/trees{/sha}","statuses_url":"https://api.github.com/repos/NitronR/curriculum/statuses/{sha}","languages_url":"https://api.github.com/repos/NitronR/curriculum/languages","stargazers_url":"https://api.github.com/repos/NitronR/curriculum/stargazers","contributors_url":"https://api.github.com/repos/NitronR/curriculum/contributors","subscribers_url":"https://api.github.com/repos/NitronR/curriculum/subscribers","subscription_url":"https://api.github.com/repos/NitronR/curriculum/subscription","commits_url":"https://api.github.com/repos/NitronR/curriculum/commits{/sha}","git_commits_url":"https://api.github.com/repos/NitronR/curriculum/git/commits{/sha}","comments_url":"https://api.github.com/repos/NitronR/curriculum/comments{/number}","issue_comment_url":"https://api.github.com/repos/NitronR/curriculum/issues/comments{/number}","contents_url":"https://api.github.com/repos/NitronR/curriculum/contents/{+path}","compare_url":"https://api.github.com/repos/NitronR/curriculum/compare/{base}...{head}","merges_url":"https://api.github.com/repos/NitronR/curriculum/merges","archive_url":"https://api.github.com/repos/NitronR/curriculum/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/NitronR/curriculum/downloads","issues_url":"https://api.github.com/repos/NitronR/curriculum/issues{/number}","pulls_url":"https://api.github.com/repos/NitronR/curriculum/pulls{/number}","milestones_url":"https://api.github.com/repos/NitronR/curriculum/milestones{/number}","notifications_url":"https://api.github.com/repos/NitronR/curriculum/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/NitronR/curriculum/labels{/name}","releases_url":"https://api.github.com/repos/NitronR/curriculum/releases{/id}","deployments_url":"https://api.github.com/repos/NitronR/curriculum/deployments","created_at":"2018-06-21T16:31:02Z","updated_at":"2018-06-26T08:52:34Z","pushed_at":"2018-07-28T15:01:16Z","git_url":"git://github.com/NitronR/curriculum.git","ssh_url":"git@github.com:NitronR/curriculum.git","clone_url":"https://github.com/NitronR/curriculum.git","svn_url":"https://github.com/NitronR/curriculum","homepage":"","size":13534,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"cc-by-sa-4.0","name":"Creative Commons Attribution Share Alike 4.0","spdx_id":"CC-BY-SA-4.0","url":"https://api.github.com/licenses/cc-by-sa-4.0","node_id":"MDc6TGljZW5zZTI2"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"dev"}},"base":{"label":"freeCodeCamp:feat/interview-prep","ref":"feat/interview-prep","sha":"2dd60d19e3619a3299d62aaf497007ca9d62ab30","user":{"login":"freeCodeCamp","id":9892522,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk4OTI1MjI=","avatar_url":"https://avatars0.githubusercontent.com/u/9892522?v=4","gravatar_id":"","url":"https://api.github.com/users/freeCodeCamp","html_url":"https://github.com/freeCodeCamp","followers_url":"https://api.github.com/users/freeCodeCamp/followers","following_url":"https://api.github.com/users/freeCodeCamp/following{/other_user}","gists_url":"https://api.github.com/users/freeCodeCamp/gists{/gist_id}","starred_url":"https://api.github.com/users/freeCodeCamp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freeCodeCamp/subscriptions","organizations_url":"https://api.github.com/users/freeCodeCamp/orgs","repos_url":"https://api.github.com/users/freeCodeCamp/repos","events_url":"https://api.github.com/users/freeCodeCamp/events{/privacy}","received_events_url":"https://api.github.com/users/freeCodeCamp/received_events","type":"Organization","site_admin":false},"repo":{"id":136494182,"node_id":"MDEwOlJlcG9zaXRvcnkxMzY0OTQxODI=","name":"curriculum","full_name":"freeCodeCamp/curriculum","owner":{"login":"freeCodeCamp","id":9892522,"node_id":"MDEyOk9yZ2FuaXphdGlvbjk4OTI1MjI=","avatar_url":"https://avatars0.githubusercontent.com/u/9892522?v=4","gravatar_id":"","url":"https://api.github.com/users/freeCodeCamp","html_url":"https://github.com/freeCodeCamp","followers_url":"https://api.github.com/users/freeCodeCamp/followers","following_url":"https://api.github.com/users/freeCodeCamp/following{/other_user}","gists_url":"https://api.github.com/users/freeCodeCamp/gists{/gist_id}","starred_url":"https://api.github.com/users/freeCodeCamp/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/freeCodeCamp/subscriptions","organizations_url":"https://api.github.com/users/freeCodeCamp/orgs","repos_url":"https://api.github.com/users/freeCodeCamp/repos","events_url":"https://api.github.com/users/freeCodeCamp/events{/privacy}","received_events_url":"https://api.github.com/users/freeCodeCamp/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/freeCodeCamp/curriculum","description":"The freeCodeCamp curriculum and lesson editor","fork":false,"url":"https://api.github.com/repos/freeCodeCamp/curriculum","forks_url":"https://api.github.com/repos/freeCodeCamp/curriculum/forks","keys_url":"https://api.github.com/repos/freeCodeCamp/curriculum/keys{/key_id}","collaborators_url":"https://api.github.com/repos/freeCodeCamp/curriculum/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/freeCodeCamp/curriculum/teams","hooks_url":"https://api.github.com/repos/freeCodeCamp/curriculum/hooks","issue_events_url":"https://api.github.com/repos/freeCodeCamp/curriculum/issues/events{/number}","events_url":"https://api.github.com/repos/freeCodeCamp/curriculum/events","assignees_url":"https://api.github.com/repos/freeCodeCamp/curriculum/assignees{/user}","branches_url":"https://api.github.com/repos/freeCodeCamp/curriculum/branches{/branch}","tags_url":"https://api.github.com/repos/freeCodeCamp/curriculum/tags","blobs_url":"https://api.github.com/repos/freeCodeCamp/curriculum/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/freeCodeCamp/curriculum/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/freeCodeCamp/curriculum/git/refs{/sha}","trees_url":"https://api.github.com/repos/freeCodeCamp/curriculum/git/trees{/sha}","statuses_url":"https://api.github.com/repos/freeCodeCamp/curriculum/statuses/{sha}","languages_url":"https://api.github.com/repos/freeCodeCamp/curriculum/languages","stargazers_url":"https://api.github.com/repos/freeCodeCamp/curriculum/stargazers","contributors_url":"https://api.github.com/repos/freeCodeCamp/curriculum/contributors","subscribers_url":"https://api.github.com/repos/freeCodeCamp/curriculum/subscribers","subscription_url":"https://api.github.com/repos/freeCodeCamp/curriculum/subscription","commits_url":"https://api.github.com/repos/freeCodeCamp/curriculum/commits{/sha}","git_commits_url":"https://api.github.com/repos/freeCodeCamp/curriculum/git/commits{/sha}","comments_url":"https://api.github.com/repos/freeCodeCamp/curriculum/comments{/number}","issue_comment_url":"https://api.github.com/repos/freeCodeCamp/curriculum/issues/comments{/number}","contents_url":"https://api.github.com/repos/freeCodeCamp/curriculum/contents/{+path}","compare_url":"https://api.github.com/repos/freeCodeCamp/curriculum/compare/{base}...{head}","merges_url":"https://api.github.com/repos/freeCodeCamp/curriculum/merges","archive_url":"https://api.github.com/repos/freeCodeCamp/curriculum/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/freeCodeCamp/curriculum/downloads","issues_url":"https://api.github.com/repos/freeCodeCamp/curriculum/issues{/number}","pulls_url":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls{/number}","milestones_url":"https://api.github.com/repos/freeCodeCamp/curriculum/milestones{/number}","notifications_url":"https://api.github.com/repos/freeCodeCamp/curriculum/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/freeCodeCamp/curriculum/labels{/name}","releases_url":"https://api.github.com/repos/freeCodeCamp/curriculum/releases{/id}","deployments_url":"https://api.github.com/repos/freeCodeCamp/curriculum/deployments","created_at":"2018-06-07T15:07:43Z","updated_at":"2018-07-31T03:50:13Z","pushed_at":"2018-07-31T01:16:56Z","git_url":"git://github.com/freeCodeCamp/curriculum.git","ssh_url":"git@github.com:freeCodeCamp/curriculum.git","clone_url":"https://github.com/freeCodeCamp/curriculum.git","svn_url":"https://github.com/freeCodeCamp/curriculum","homepage":"","size":13713,"stargazers_count":51,"watchers_count":51,"language":"JavaScript","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":95,"mirror_url":null,"archived":false,"open_issues_count":24,"license":{"key":"cc-by-sa-4.0","name":"Creative Commons Attribution Share Alike 4.0","spdx_id":"CC-BY-SA-4.0","url":"https://api.github.com/licenses/cc-by-sa-4.0","node_id":"MDc6TGljZW5zZTI2"},"forks":95,"open_issues":24,"watchers":51,"default_branch":"dev"}},"_links":{"self":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188"},"html":{"href":"https://github.com/freeCodeCamp/curriculum/pull/188"},"issue":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/issues/188"},"comments":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/issues/188/comments"},"review_comments":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188/comments"},"review_comment":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/pulls/188/commits"},"statuses":{"href":"https://api.github.com/repos/freeCodeCamp/curriculum/statuses/bdb3677de8e6effd94c5d5738d90c82bd36c3318"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"scissorsneedfoodtoo"}}