From 67af1ba10a8f39a5f14b7290b5bbc46760816f58 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Mon, 21 Jan 2019 21:15:14 +0100 Subject: [PATCH 01/11] Reorder exercises according to Round 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As part of the ongoing curriculum update, this re-orders the core exercises according to perceived difficulty. Most notably, this moves simple-cipher down -- re-orders the list loosly according to this: hello-world, gigasecond, leap, rna-transcription, bob, pangram, space-age, matrix, linked-list, grade-school, robot-name, pascals-triangle, simple-cipher, wordy, secret-handshake, list-ops Since it's a bit weird to introduce Date thát early, it's placed after leap --- for now. Furthermore this moves all the core exercises to the top and all the side exercises unlocked by these below that, in order. The bonus exercises (always unlocked) are at the bottom. --- config.json | 1326 +++++++++++++++++++++++++-------------------------- 1 file changed, 663 insertions(+), 663 deletions(-) diff --git a/config.json b/config.json index 5c513e6298..42ca9fef08 100644 --- a/config.json +++ b/config.json @@ -4,47 +4,6 @@ "blurb": "JavaScript is a scripting language, primarily used for creating dynamic websites and programming web servers. It's a very popular language, and supports a variety of programming paradigms.", "test_pattern": ".*[.]spec[.]js$", "exercises": [ - { - "slug": "zipper", - "uuid": "fd1575f3-3087-4cfa-8a26-168fba6d0606", - "core": false, - "unlocked_by": null, - "difficulty": 8, - "topics": [ - "recursion", - "searching", - "trees" - ] - }, - { - "slug": "point-mutations", - "uuid": "6d43709b-3809-4a6a-ab41-2a5ab841b5fb", - "core": false, - "unlocked_by": null, - "difficulty": 0, - "topics": null, - "deprecated": true - }, - { - "slug": "forth", - "uuid": "e4035939-4375-4720-87ae-e613f925f013", - "core": false, - "unlocked_by": "matrix", - "difficulty": 8, - "topics": [ - "domain_specific_languages", - "parsing", - "stacks" - ] - }, - { - "slug": "darts", - "uuid": "6c64649b-ea81-4118-9e74-a0a55018ffbc", - "core": false, - "unlocked_by": null, - "difficulty": 3, - "topics": null - }, { "slug": "hello-world", "uuid": "9ce0f408-6d7b-4466-a390-75aeaf9492f2", @@ -72,15 +31,13 @@ ] }, { - "slug": "reverse-string", - "uuid": "e84c97eb-dbec-487c-b99f-ae9924e16293", - "core": false, - "unlocked_by": "leap", + "slug": "gigasecond", + "uuid": "fd7b62d4-266b-4e84-a526-bf3d47901216", + "core": true, + "unlocked_by": null, "difficulty": 2, "topics": [ - "for", - "loops", - "strings" + "time" ] }, { @@ -95,19 +52,18 @@ ] }, { - "slug": "simple-cipher", - "uuid": "62d60b42-93bc-4de9-90d1-1ca18a847812", + "slug": "bob", + "uuid": "a5bf36f0-5d3c-41d4-8d54-e37e484e59cd", "core": true, "unlocked_by": null, - "difficulty": 1, + "difficulty": 2, "topics": [ - "algorithms", "control_flow_conditionals", - "control_flow_loops", - "randomness", + "pattern_recognition", + "polymorfism", + "regular_expressions", "strings", - "text_formatting", - "transforming" + "unicode" ] }, { @@ -126,31 +82,6 @@ "strings" ] }, - { - "slug": "bob", - "uuid": "a5bf36f0-5d3c-41d4-8d54-e37e484e59cd", - "core": true, - "unlocked_by": null, - "difficulty": 2, - "topics": [ - "control_flow_conditionals", - "pattern_recognition", - "polymorfism", - "regular_expressions", - "strings", - "unicode" - ] - }, - { - "slug": "gigasecond", - "uuid": "fd7b62d4-266b-4e84-a526-bf3d47901216", - "core": true, - "unlocked_by": null, - "difficulty": 2, - "topics": [ - "time" - ] - }, { "slug": "space-age", "uuid": "d9d757ed-ebe6-4d4a-aa73-f6834221cd54", @@ -162,37 +93,6 @@ "floating_point_numbers" ] }, - { - "slug": "binary", - "uuid": "0ba4d3b9-2519-49ac-bd93-f960aca6c11f", - "core": false, - "unlocked_by": null, - "difficulty": 4, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "exception_handling", - "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true - }, - { - "slug": "prime-factors", - "uuid": "f43cdddf-eea8-4c4a-8359-c69e20ff9661", - "core": true, - "unlocked_by": null, - "difficulty": 4, - "topics": [ - "algorithms", - "control_flow_conditionals", - "control_flow_loops", - "integers", - "math" - ] - }, { "slug": "matrix", "uuid": "dd0b5e67-81f6-437e-8334-2ec0dfeb862a", @@ -225,58 +125,59 @@ ] }, { - "slug": "pascals-triangle", - "uuid": "99493160-4673-402f-acda-62db5378148d", + "slug": "grade-school", + "uuid": "64637322-33bc-401f-8cec-1f9810a41f75", "core": true, "unlocked_by": null, - "difficulty": 5, + "difficulty": 6, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "math", - "strings", - "text_formatting" + "arrays", + "maps", + "sorting" ] }, { - "slug": "secret-handshake", - "uuid": "74bbc9e3-edc5-41e0-84d7-5b2d98dd8370", + "slug": "robot-name", + "uuid": "03f4dfea-e6db-4754-b2c8-ca06c8b81ef1", "core": true, "unlocked_by": null, "difficulty": 6, "topics": [ - "algorithms", - "arrays", - "bitwise_operations", "control_flow_conditionals", - "control_flow_loops", - "games" + "exception_handling", + "randomness", + "regular_expressions", + "sets" ] }, { - "slug": "grade-school", - "uuid": "64637322-33bc-401f-8cec-1f9810a41f75", + "slug": "pascals-triangle", + "uuid": "99493160-4673-402f-acda-62db5378148d", "core": true, "unlocked_by": null, - "difficulty": 6, + "difficulty": 5, "topics": [ - "arrays", - "maps", - "sorting" + "control_flow_conditionals", + "control_flow_loops", + "math", + "strings", + "text_formatting" ] }, { - "slug": "robot-name", - "uuid": "03f4dfea-e6db-4754-b2c8-ca06c8b81ef1", + "slug": "simple-cipher", + "uuid": "62d60b42-93bc-4de9-90d1-1ca18a847812", "core": true, "unlocked_by": null, - "difficulty": 6, + "difficulty": 1, "topics": [ + "algorithms", "control_flow_conditionals", - "exception_handling", + "control_flow_loops", "randomness", - "regular_expressions", - "sets" + "strings", + "text_formatting", + "transforming" ] }, { @@ -295,6 +196,21 @@ "strings" ] }, + { + "slug": "secret-handshake", + "uuid": "74bbc9e3-edc5-41e0-84d7-5b2d98dd8370", + "core": true, + "unlocked_by": null, + "difficulty": 6, + "topics": [ + "algorithms", + "arrays", + "bitwise_operations", + "control_flow_conditionals", + "control_flow_loops", + "games" + ] + }, { "slug": "list-ops", "uuid": "7d9db056-5398-41b6-af3b-9707f5eb0dbc", @@ -323,72 +239,83 @@ ] }, { - "slug": "hamming", - "uuid": "d773c4ef-c09e-40e4-a7fe-01456cb4a12a", + "slug": "reverse-string", + "uuid": "e84c97eb-dbec-487c-b99f-ae9924e16293", "core": false, - "unlocked_by": "rna-transcription", + "unlocked_by": "leap", "difficulty": 2, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "equality", + "for", + "loops", "strings" ] }, { - "slug": "isogram", - "uuid": "3df577af-2854-40ee-b211-9b608dbbad58", + "slug": "triangle", + "uuid": "ed3ca73a-a0f0-46b8-8013-8b6d20758c8f", "core": false, - "unlocked_by": "pangram", - "difficulty": 2, + "unlocked_by": "leap", + "difficulty": 3, "topics": [ - "filtering", - "strings" + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "integers" ] }, { - "slug": "beer-song", - "uuid": "6573f168-d8fc-4ccf-a864-1a61f432fae1", + "slug": "collatz-conjecture", + "uuid": "b8dacb3a-51d0-4da7-a6d2-aa29867e2b8c", "core": false, - "unlocked_by": "bob", - "difficulty": 5, + "unlocked_by": "leap", + "difficulty": 3, "topics": [ "control_flow_conditionals", "control_flow_loops", - "strings" + "exception_handling", + "integers", + "math", + "recursion" ] }, { - "slug": "phone-number", - "uuid": "82775adb-eabe-4d44-91f5-4080b8834a4a", + "slug": "clock", + "uuid": "4e0e2c30-be33-49b6-b196-213888a93a0c", "core": false, - "unlocked_by": "pangram", - "difficulty": 3, + "unlocked_by": "gigasecond", + "difficulty": 5, "topics": [ - "parsing", - "transforming" + "dates", + "globalization", + "time" ] }, { - "slug": "anagram", - "uuid": "309fa4f1-e03a-4ab2-b371-cdf742501cf7", + "slug": "meetup", + "uuid": "98617798-b49d-4d43-9f65-7131ee73d626", "core": false, - "unlocked_by": "pangram", - "difficulty": 1, + "unlocked_by": "gigasecond", + "difficulty": 7, "topics": [ - "filtering", - "strings" - ] + "control_flow_conditionals", + "control_flow_loops", + "dates", + "equality", + "exception_handling", + "time" + ] }, { - "slug": "food-chain", - "uuid": "62672dc7-e827-4c2e-a282-d6df45b60bbd", + "slug": "hamming", + "uuid": "d773c4ef-c09e-40e4-a7fe-01456cb4a12a", "core": false, - "unlocked_by": "bob", - "difficulty": 4, + "unlocked_by": "rna-transcription", + "difficulty": 2, "topics": [ - "algorithms", - "text_formatting" + "control_flow_conditionals", + "control_flow_loops", + "equality", + "strings" ] }, { @@ -405,325 +332,305 @@ ] }, { - "slug": "sublist", - "uuid": "4be85b5e-6b13-11e7-907b-a6006ad3dba0", + "slug": "scrabble-score", + "uuid": "11771d47-1109-4579-a62b-e0b8e9583485", "core": false, - "unlocked_by": "linked-list", - "difficulty": 4, + "unlocked_by": "rna-transcription", + "difficulty": 5, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "maps", + "strings" + ] + }, + { + "slug": "raindrops", + "uuid": "f77ac2d1-cf3a-497d-bf04-b484a5a9cb37", + "core": false, + "unlocked_by": "rna-transcription", + "difficulty": 2, + "topics": [ + "control_flow_conditionals", + "integers", + "strings", + "transforming" + ] + }, + { + "slug": "allergies", + "uuid": "9d33d21c-e695-427f-9f58-dd9498d61318", + "core": false, + "unlocked_by": "rna-transcription", + "difficulty": 6, "topics": [ "arrays", - "lists" + "bitwise_operations", + "control_flow_conditionals", + "control_flow_loops" ] }, { - "slug": "word-search", - "uuid": "0125f5a7-8883-4553-a6c1-45f19544af5e", + "slug": "nucleotide-count", + "uuid": "be6f3ab3-1593-4c2d-8a35-5f39c1d5c91f", "core": false, - "unlocked_by": "linked-list", - "difficulty": 8, + "unlocked_by": "rna-transcription", + "difficulty": 4, "topics": [ "arrays", "control_flow_conditionals", "control_flow_loops", - "equality", - "optional_values", - "parsing", + "strings", "text_formatting" ] }, { - "slug": "grains", - "uuid": "d003975a-9045-4f03-9ad9-c15db584dc13", + "slug": "beer-song", + "uuid": "6573f168-d8fc-4ccf-a864-1a61f432fae1", "core": false, - "unlocked_by": "space-age", + "unlocked_by": "bob", "difficulty": 5, "topics": [ + "control_flow_conditionals", "control_flow_loops", - "integers" + "strings" ] }, { - "slug": "triangle", - "uuid": "ed3ca73a-a0f0-46b8-8013-8b6d20758c8f", + "slug": "food-chain", + "uuid": "62672dc7-e827-4c2e-a282-d6df45b60bbd", "core": false, - "unlocked_by": "leap", - "difficulty": 3, + "unlocked_by": "bob", + "difficulty": 4, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "exception_handling", - "integers" + "algorithms", + "text_formatting" ] }, { - "slug": "collatz-conjecture", - "uuid": "b8dacb3a-51d0-4da7-a6d2-aa29867e2b8c", + "slug": "pig-latin", + "uuid": "16e25a38-7ce3-4ccd-b2f0-1550b837fe9b", "core": false, - "unlocked_by": "leap", - "difficulty": 3, + "unlocked_by": "bob", + "difficulty": 4, "topics": [ "control_flow_conditionals", "control_flow_loops", - "exception_handling", - "integers", - "math", - "recursion" + "games", + "regular_expressions", + "strings", + "transforming" ] }, { - "slug": "clock", - "uuid": "4e0e2c30-be33-49b6-b196-213888a93a0c", + "slug": "proverb", + "uuid": "5626f5b6-207b-458b-92b6-eff2cadb240a", "core": false, - "unlocked_by": "gigasecond", - "difficulty": 5, + "unlocked_by": "bob", + "difficulty": 4, "topics": [ - "dates", - "globalization", - "time" + "arrays", + "control_flow_conditionals", + "control_flow_loops", + "optional_values", + "strings", + "text_formatting" ] }, { - "slug": "perfect-numbers", - "uuid": "c6691fd2-e10d-47df-acbf-3adeac5a2f89", + "slug": "house", + "uuid": "a8b7187d-12eb-4efc-b966-87823654ccda", "core": false, - "unlocked_by": "space-age", - "difficulty": 3, + "unlocked_by": "bob", + "difficulty": 4, "topics": [ "arrays", "control_flow_conditionals", "control_flow_loops", - "integers", - "math" + "recursion", + "strings" ] }, { - "slug": "word-count", - "uuid": "0073ff9a-cd6a-43cf-b8bf-4d5d8117b81b", + "slug": "twelve-days", + "uuid": "64de1776-d5c6-43fe-9abf-7e3aa08ae342", "core": false, - "unlocked_by": "pangram", - "difficulty": 1, + "unlocked_by": "bob", + "difficulty": 4, "topics": [ + "control_flow_conditionals", "control_flow_loops", - "lists", + "pattern_recognition", + "polymorfism", "regular_expressions", - "strings", - "unicode" + "strings" ] }, { - "slug": "run-length-encoding", - "uuid": "6ac4ad5f-a64a-4646-91c5-169d53f289f9", + "slug": "say", + "uuid": "12989bb3-c593-4f68-bea4-e2c5b76bc3c0", "core": false, - "unlocked_by": null, - "difficulty": 2, + "unlocked_by": "bob", + "difficulty": 6, "topics": [ "control_flow_conditionals", + "control_flow_loops", "exception_handling", - "parsing", - "pattern_recognition", - "regular_expressions", + "integers", "strings", "text_formatting" ] }, { - "slug": "acronym", - "uuid": "440d78d1-9dea-466f-9bd4-935eed067409", + "slug": "isbn-verifier", + "uuid": "b902c746-60d1-4645-a5bc-dafadec0ef32", "core": false, - "unlocked_by": "pangram", - "difficulty": 2, + "unlocked_by": "bob", + "difficulty": 4, "topics": [ + "control_flow_conditionals", "control_flow_loops", - "regular_expressions", - "strings", - "transforming" + "pattern_recognition", + "regular_expressions" ] }, { - "slug": "scrabble-score", - "uuid": "11771d47-1109-4579-a62b-e0b8e9583485", + "slug": "isogram", + "uuid": "3df577af-2854-40ee-b211-9b608dbbad58", "core": false, - "unlocked_by": "rna-transcription", - "difficulty": 5, + "unlocked_by": "pangram", + "difficulty": 2, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "maps", + "filtering", "strings" ] }, { - "slug": "roman-numerals", - "uuid": "2fc4f834-a51c-42b8-a4d9-5263229e7648", + "slug": "phone-number", + "uuid": "82775adb-eabe-4d44-91f5-4080b8834a4a", "core": false, - "unlocked_by": null, + "unlocked_by": "pangram", "difficulty": 3, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "pattern_recognition", + "parsing", "transforming" ] }, { - "slug": "circular-buffer", - "uuid": "bf0b1f95-3425-4345-8a12-3a80d49b49c9", + "slug": "anagram", + "uuid": "309fa4f1-e03a-4ab2-b371-cdf742501cf7", "core": false, - "unlocked_by": "linked-list", - "difficulty": 8, + "unlocked_by": "pangram", + "difficulty": 1, "topics": [ - "arrays", - "control_flow_conditionals", - "control_flow_loops", - "data_structures", - "exception_handling", - "lists" + "filtering", + "strings" ] }, { - "slug": "react", - "uuid": "303c6969-9446-41aa-871a-11223a43e810", + "slug": "word-count", + "uuid": "0073ff9a-cd6a-43cf-b8bf-4d5d8117b81b", "core": false, - "unlocked_by": null, - "difficulty": 8, + "unlocked_by": "pangram", + "difficulty": 1, "topics": [ - "algorithms", - "events", - "reactive_programming" + "control_flow_loops", + "lists", + "regular_expressions", + "strings", + "unicode" ] }, { - "slug": "raindrops", - "uuid": "f77ac2d1-cf3a-497d-bf04-b484a5a9cb37", + "slug": "acronym", + "uuid": "440d78d1-9dea-466f-9bd4-935eed067409", "core": false, - "unlocked_by": "rna-transcription", + "unlocked_by": "pangram", "difficulty": 2, "topics": [ - "control_flow_conditionals", - "integers", + "control_flow_loops", + "regular_expressions", "strings", "transforming" ] }, { - "slug": "allergies", - "uuid": "9d33d21c-e695-427f-9f58-dd9498d61318", + "slug": "series", + "uuid": "5178ae53-5364-46c9-bee3-70e6e8a8c2e3", "core": false, - "unlocked_by": "rna-transcription", - "difficulty": 6, + "unlocked_by": "pangram", + "difficulty": 3, "topics": [ - "arrays", - "bitwise_operations", - "control_flow_conditionals", - "control_flow_loops" - ] - }, - { - "slug": "strain", - "uuid": "8407f9d5-7a7e-40c8-aace-a6a8294ae5e9", - "core": false, - "unlocked_by": "list-ops", - "difficulty": 4, - "topics": [ - "algorithms", - "arrays", - "callbacks", - "control_flow_conditionals", "control_flow_loops", - "filtering", - "lists" + "exception_handling", + "strings", + "text_formatting" ] }, { - "slug": "atbash-cipher", - "uuid": "a70e6027-eebe-43a1-84a6-763faa736169", + "slug": "largest-series-product", + "uuid": "1f84305d-ea76-4fe2-9858-3b53576d683d", "core": false, - "unlocked_by": "simple-cipher", + "unlocked_by": "pangram", "difficulty": 7, "topics": [ - "algorithms", - "arrays", "control_flow_conditionals", "control_flow_loops", + "exception_handling", + "integers", + "math", "regular_expressions", - "text_formatting" - ] - }, - { - "slug": "accumulate", - "uuid": "6ebe247c-3d11-48b7-8e6f-39f98359d233", - "core": false, - "unlocked_by": "list-ops", - "difficulty": 5, - "topics": [ - "algorithms", - "callbacks", - "control_flow_loops", - "lists" + "strings" ] }, { - "slug": "crypto-square", - "uuid": "4dc30879-a589-4dd3-b7b6-22261f9d1520", + "slug": "bracket-push", + "uuid": "4d456646-3a9b-4393-9558-6b30e5c1039c", "core": false, - "unlocked_by": "simple-cipher", - "difficulty": 9, + "unlocked_by": "pangram", + "difficulty": 3, "topics": [ - "algorithms", - "arrays", "control_flow_conditionals", "control_flow_loops", - "regular_expressions", - "sorting", - "text_formatting", - "transforming" + "exception_handling", + "parsing", + "strings" ] }, { - "slug": "trinary", - "uuid": "1acf1d2d-a25e-4576-94de-0470abc872d9", + "slug": "high-scores", + "uuid": "19b41c4a-1466-5c19-b547-40284189fd18", "core": false, - "unlocked_by": null, - "difficulty": 4, + "unlocked_by": "pangram", + "difficulty": 2, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true + "arrays" + ] }, { - "slug": "sieve", - "uuid": "127287d1-ba44-4400-884a-6fe5f72e210f", + "slug": "grains", + "uuid": "d003975a-9045-4f03-9ad9-c15db584dc13", "core": false, - "unlocked_by": "prime-factors", + "unlocked_by": "space-age", "difficulty": 5, "topics": [ - "control_flow_conditionals", "control_flow_loops", - "integers", - "math", - "recursion" + "integers" ] }, { - "slug": "octal", - "uuid": "dec66f89-39d0-4857-9679-a035cf4259d7", + "slug": "perfect-numbers", + "uuid": "c6691fd2-e10d-47df-acbf-3adeac5a2f89", "core": false, - "unlocked_by": null, - "difficulty": 4, + "unlocked_by": "space-age", + "difficulty": 3, "topics": [ + "arrays", "control_flow_conditionals", "control_flow_loops", "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true + "math" + ] }, { "slug": "luhn", @@ -738,21 +645,6 @@ "strings" ] }, - { - "slug": "pig-latin", - "uuid": "16e25a38-7ce3-4ccd-b2f0-1550b837fe9b", - "core": false, - "unlocked_by": "bob", - "difficulty": 4, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "games", - "regular_expressions", - "strings", - "transforming" - ] - }, { "slug": "pythagorean-triplet", "uuid": "394755a3-c743-4b85-b9b8-387907f4e32d", @@ -767,19 +659,6 @@ "math" ] }, - { - "slug": "series", - "uuid": "5178ae53-5364-46c9-bee3-70e6e8a8c2e3", - "core": false, - "unlocked_by": "pangram", - "difficulty": 3, - "topics": [ - "control_flow_loops", - "exception_handling", - "strings", - "text_formatting" - ] - }, { "slug": "difference-of-squares", "uuid": "7dfa878c-83a6-48ef-9170-b6633d51d601", @@ -794,176 +673,170 @@ ] }, { - "slug": "proverb", - "uuid": "5626f5b6-207b-458b-92b6-eff2cadb240a", + "slug": "complex-numbers", + "uuid": "ea9a9a3e-ae6a-470d-8bb4-2afead507f24", "core": false, - "unlocked_by": "bob", + "unlocked_by": "space-age", "difficulty": 4, "topics": [ - "arrays", - "control_flow_conditionals", - "control_flow_loops", - "optional_values", - "strings", - "text_formatting" + "math" ] }, { - "slug": "flatten-array", - "uuid": "1a6c4a3b-d5db-4a5a-b123-66cf085defe6", + "slug": "forth", + "uuid": "e4035939-4375-4720-87ae-e613f925f013", "core": false, - "unlocked_by": "list-ops", - "difficulty": 5, + "unlocked_by": "matrix", + "difficulty": 8, "topics": [ - "arrays", - "recursion" + "domain_specific_languages", + "parsing", + "stacks" ] }, { - "slug": "hexadecimal", - "uuid": "8ed2c9fe-a13f-4313-abf9-125f351c85c9", + "slug": "saddle-points", + "uuid": "a01aa48c-65c4-4b1f-b3d9-3ec7da2ef754", "core": false, - "unlocked_by": null, - "difficulty": 4, + "unlocked_by": "matrix", + "difficulty": 6, "topics": [ "control_flow_conditionals", "control_flow_loops", + "equality", + "exception_handling", "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true + "matrices", + "optional_values", + "parsing" + ] }, { - "slug": "largest-series-product", - "uuid": "1f84305d-ea76-4fe2-9858-3b53576d683d", + "slug": "ocr-numbers", + "uuid": "24c197ee-d492-4083-8615-629cb4b836b2", "core": false, - "unlocked_by": "pangram", - "difficulty": 7, + "unlocked_by": "matrix", + "difficulty": 5, "topics": [ "control_flow_conditionals", "control_flow_loops", + "equality", "exception_handling", "integers", - "math", - "regular_expressions", - "strings" + "parsing", + "text_formatting" ] }, { - "slug": "kindergarten-garden", - "uuid": "13444eff-005a-405e-9737-7b64d99c1a61", + "slug": "transpose", + "uuid": "9c140fb7-cc8b-411b-b613-a0e0081a9c3f", "core": false, - "unlocked_by": "wordy", - "difficulty": 7, + "unlocked_by": "matrix", + "difficulty": 1, "topics": [ "arrays", - "control_flow_conditionals", - "control_flow_loops", + "lists", + "loops", + "matrices", "strings", "text_formatting" ] }, { - "slug": "house", - "uuid": "a8b7187d-12eb-4efc-b966-87823654ccda", + "slug": "spiral-matrix", + "uuid": "c1abafcc-0d44-4fb5-afae-bff3ce2e1b39", "core": false, - "unlocked_by": "bob", + "unlocked_by": "matrix", "difficulty": 4, "topics": [ "arrays", "control_flow_conditionals", "control_flow_loops", - "recursion", - "strings" + "data_structures", + "matrices" ] }, { - "slug": "binary-search", - "uuid": "7c569e5d-bb00-44b8-8adc-34253790c19b", + "slug": "rectangles", + "uuid": "f8c6786e-bf93-4f35-b649-03f4e39bb094", "core": false, - "unlocked_by": "linked-list", - "difficulty": 7, + "unlocked_by": "matrix", + "difficulty": 4, "topics": [ - "algorithms", "arrays", "control_flow_conditionals", "control_flow_loops", - "recursion" + "matrices", + "strings" ] }, { - "slug": "binary-search-tree", - "uuid": "6c4b4e25-c115-4789-9058-d28ab6ca0d26", + "slug": "sublist", + "uuid": "4be85b5e-6b13-11e7-907b-a6006ad3dba0", "core": false, "unlocked_by": "linked-list", - "difficulty": 6, + "difficulty": 4, "topics": [ - "algorithms", - "control_flow_conditionals", - "control_flow_loops", - "recursion" + "arrays", + "lists" ] }, { - "slug": "robot-simulator", - "uuid": "5174bd15-eee2-4b53-b3ee-ca3a8c958a31", + "slug": "word-search", + "uuid": "0125f5a7-8883-4553-a6c1-45f19544af5e", "core": false, - "unlocked_by": "wordy", - "difficulty": 5, + "unlocked_by": "linked-list", + "difficulty": 8, "topics": [ + "arrays", "control_flow_conditionals", "control_flow_loops", - "exception_handling", - "games", + "equality", + "optional_values", "parsing", - "strings" + "text_formatting" ] }, { - "slug": "nth-prime", - "uuid": "7ce09989-f202-4c3c-8b7e-72cef18808c3", + "slug": "circular-buffer", + "uuid": "bf0b1f95-3425-4345-8a12-3a80d49b49c9", "core": false, - "unlocked_by": "prime-factors", - "difficulty": 5, + "unlocked_by": "linked-list", + "difficulty": 8, "topics": [ - "algorithms", + "arrays", "control_flow_conditionals", "control_flow_loops", + "data_structures", "exception_handling", - "integers", - "math" + "lists" ] }, { - "slug": "palindrome-products", - "uuid": "f6799d10-0210-4c73-ac08-d5cac1a00ff3", + "slug": "binary-search", + "uuid": "7c569e5d-bb00-44b8-8adc-34253790c19b", "core": false, - "unlocked_by": "prime-factors", + "unlocked_by": "linked-list", "difficulty": 7, "topics": [ "algorithms", + "arrays", "control_flow_conditionals", "control_flow_loops", - "exception_handling", - "integers", - "math" + "recursion" ] }, { - "slug": "say", - "uuid": "12989bb3-c593-4f68-bea4-e2c5b76bc3c0", + "slug": "binary-search-tree", + "uuid": "6c4b4e25-c115-4789-9058-d28ab6ca0d26", "core": false, - "unlocked_by": "bob", + "unlocked_by": "linked-list", "difficulty": 6, "topics": [ + "algorithms", "control_flow_conditionals", "control_flow_loops", - "exception_handling", - "integers", - "strings", - "text_formatting" + "recursion" ] }, { @@ -984,127 +857,84 @@ ] }, { - "slug": "sum-of-multiples", - "uuid": "f7452f71-795b-40b6-847c-67ef4bb9db45", - "core": false, - "unlocked_by": "prime-factors", - "difficulty": 5, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "integers", - "lists", - "math" - ] - }, - { - "slug": "queen-attack", - "uuid": "007a4cd4-7324-4512-8905-ead0c78146f7", + "slug": "simple-linked-list", + "uuid": "a1591026-2f02-45f9-b189-24b2359eb43f", "core": false, - "unlocked_by": null, + "unlocked_by": "linked-list", "difficulty": 8, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "equality", - "exception_handling", - "optional_values", - "parsing", - "text_formatting" + "arrays", + "data_structures", + "lists" ] }, { - "slug": "saddle-points", - "uuid": "a01aa48c-65c4-4b1f-b3d9-3ec7da2ef754", + "slug": "two-bucket", + "uuid": "0bc6b478-40a8-47ab-889b-c403b922f7e5", "core": false, - "unlocked_by": "matrix", + "unlocked_by": "grade-school", "difficulty": 6, "topics": [ + "algorithms", + "arrays", "control_flow_conditionals", "control_flow_loops", - "equality", "exception_handling", - "integers", - "matrices", - "optional_values", + "games", "parsing" ] }, { - "slug": "ocr-numbers", - "uuid": "24c197ee-d492-4083-8615-629cb4b836b2", + "slug": "bowling", + "uuid": "dbf26ef1-62ff-4cb1-8ac7-09b022df3b2f", "core": false, - "unlocked_by": "matrix", - "difficulty": 5, + "unlocked_by": "grade-school", + "difficulty": 8, "topics": [ + "arrays", "control_flow_conditionals", "control_flow_loops", - "equality", "exception_handling", - "integers", + "games", "parsing", "text_formatting" ] }, { - "slug": "meetup", - "uuid": "98617798-b49d-4d43-9f65-7131ee73d626", + "slug": "alphametics", + "uuid": "a602bd33-69fc-4b67-a3d3-95198853095e", "core": false, - "unlocked_by": "gigasecond", + "unlocked_by": "grade-school", "difficulty": 7, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "dates", - "equality", - "exception_handling", - "time" - ] - }, - { - "slug": "bracket-push", - "uuid": "4d456646-3a9b-4393-9558-6b30e5c1039c", - "core": false, - "unlocked_by": "pangram", - "difficulty": 3, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "exception_handling", - "parsing", - "strings" + "algorithms", + "games" ] }, { - "slug": "two-bucket", - "uuid": "0bc6b478-40a8-47ab-889b-c403b922f7e5", + "slug": "connect", + "uuid": "2fa2c262-77ae-409b-bfd8-1d643faae772", "core": false, "unlocked_by": "grade-school", - "difficulty": 6, + "difficulty": 7, "topics": [ - "algorithms", "arrays", "control_flow_conditionals", "control_flow_loops", - "exception_handling", "games", + "maps", "parsing" ] }, { - "slug": "bowling", - "uuid": "dbf26ef1-62ff-4cb1-8ac7-09b022df3b2f", + "slug": "variable-length-quantity", + "uuid": "6be39d1f-f68d-4a52-bd72-85a38ffd509e", "core": false, "unlocked_by": "grade-school", - "difficulty": 8, + "difficulty": 5, "topics": [ - "arrays", - "control_flow_conditionals", - "control_flow_loops", - "exception_handling", - "games", - "parsing", - "text_formatting" + "bitwise_operations", + "transforming" ] }, { @@ -1124,68 +954,47 @@ ] }, { - "slug": "all-your-base", - "uuid": "d2d3cd13-b06c-4c24-9964-fb1554f70dd4", + "slug": "rational-numbers", + "uuid": "d8da6cdd-3804-40b0-9821-0dd5765876ff", "core": false, - "unlocked_by": null, + "unlocked_by": "pascals-triangle", "difficulty": 5, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "exception_handling", - "integers", - "math", - "parsing" - ] - }, - { - "slug": "minesweeper", - "uuid": "8bafe6c4-9154-4037-9070-7f57f91d495a", - "core": false, - "unlocked_by": null, - "difficulty": 7, "topics": [ "algorithms", - "arrays", - "games" + "floating_point_numbers", + "math" ] }, { - "slug": "alphametics", - "uuid": "a602bd33-69fc-4b67-a3d3-95198853095e", + "slug": "atbash-cipher", + "uuid": "a70e6027-eebe-43a1-84a6-763faa736169", "core": false, - "unlocked_by": "grade-school", + "unlocked_by": "simple-cipher", "difficulty": 7, "topics": [ "algorithms", - "games" - ] - }, - { - "slug": "simple-linked-list", - "uuid": "a1591026-2f02-45f9-b189-24b2359eb43f", - "core": false, - "unlocked_by": "linked-list", - "difficulty": 8, - "topics": [ "arrays", - "data_structures", - "lists" + "control_flow_conditionals", + "control_flow_loops", + "regular_expressions", + "text_formatting" ] }, { - "slug": "connect", - "uuid": "2fa2c262-77ae-409b-bfd8-1d643faae772", + "slug": "crypto-square", + "uuid": "4dc30879-a589-4dd3-b7b6-22261f9d1520", "core": false, - "unlocked_by": "grade-school", - "difficulty": 7, + "unlocked_by": "simple-cipher", + "difficulty": 9, "topics": [ + "algorithms", "arrays", "control_flow_conditionals", "control_flow_loops", - "games", - "maps", - "parsing" + "regular_expressions", + "sorting", + "text_formatting", + "transforming" ] }, { @@ -1204,180 +1013,371 @@ ] }, { - "slug": "change", - "uuid": "cfa5741c-9fe9-4cb5-a322-d77ba8145f4b", + "slug": "rotational-cipher", + "uuid": "34625b04-844e-41e3-b02b-3443b6b0b7cb", "core": false, - "unlocked_by": "prime-factors", - "difficulty": 8, + "unlocked_by": "simple-cipher", + "difficulty": 2, "topics": [ - "algorithms", - "performance", - "searching" + "control_flow_conditionals", + "strings", + "text_formatting", + "transforming" ] }, { - "slug": "twelve-days", - "uuid": "64de1776-d5c6-43fe-9abf-7e3aa08ae342", + "slug": "kindergarten-garden", + "uuid": "13444eff-005a-405e-9737-7b64d99c1a61", "core": false, - "unlocked_by": "bob", - "difficulty": 4, + "unlocked_by": "wordy", + "difficulty": 7, "topics": [ + "arrays", "control_flow_conditionals", "control_flow_loops", - "pattern_recognition", - "polymorfism", - "regular_expressions", - "strings" + "strings", + "text_formatting" ] }, { - "slug": "complex-numbers", - "uuid": "ea9a9a3e-ae6a-470d-8bb4-2afead507f24", + "slug": "robot-simulator", + "uuid": "5174bd15-eee2-4b53-b3ee-ca3a8c958a31", "core": false, - "unlocked_by": "space-age", - "difficulty": 4, + "unlocked_by": "wordy", + "difficulty": 5, "topics": [ - "math" + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "games", + "parsing", + "strings" ] }, { - "slug": "isbn-verifier", - "uuid": "b902c746-60d1-4645-a5bc-dafadec0ef32", + "slug": "strain", + "uuid": "8407f9d5-7a7e-40c8-aace-a6a8294ae5e9", "core": false, - "unlocked_by": "bob", + "unlocked_by": "list-ops", "difficulty": 4, "topics": [ + "algorithms", + "arrays", + "callbacks", "control_flow_conditionals", "control_flow_loops", - "pattern_recognition", - "regular_expressions" + "filtering", + "lists" ] }, { - "slug": "transpose", - "uuid": "9c140fb7-cc8b-411b-b613-a0e0081a9c3f", + "slug": "accumulate", + "uuid": "6ebe247c-3d11-48b7-8e6f-39f98359d233", "core": false, - "unlocked_by": "matrix", - "difficulty": 1, + "unlocked_by": "list-ops", + "difficulty": 5, + "topics": [ + "algorithms", + "callbacks", + "control_flow_loops", + "lists" + ] + }, + { + "slug": "flatten-array", + "uuid": "1a6c4a3b-d5db-4a5a-b123-66cf085defe6", + "core": false, + "unlocked_by": "list-ops", + "difficulty": 5, "topics": [ "arrays", - "lists", - "loops", - "matrices", + "recursion" + ] + }, + { + "slug": "zipper", + "uuid": "fd1575f3-3087-4cfa-8a26-168fba6d0606", + "core": false, + "unlocked_by": null, + "difficulty": 8, + "topics": [ + "recursion", + "searching", + "trees" + ] + }, + { + "slug": "point-mutations", + "uuid": "6d43709b-3809-4a6a-ab41-2a5ab841b5fb", + "core": false, + "unlocked_by": null, + "difficulty": 0, + "topics": null, + "deprecated": true + }, + { + "slug": "darts", + "uuid": "6c64649b-ea81-4118-9e74-a0a55018ffbc", + "core": false, + "unlocked_by": null, + "difficulty": 3, + "topics": null + }, + { + "slug": "binary", + "uuid": "0ba4d3b9-2519-49ac-bd93-f960aca6c11f", + "core": false, + "unlocked_by": null, + "difficulty": 4, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "integers", + "mathematics", + "regular_expressions", + "strings" + ], + "deprecated": true + }, + { + "slug": "prime-factors", + "uuid": "f43cdddf-eea8-4c4a-8359-c69e20ff9661", + "core": true, + "unlocked_by": null, + "difficulty": 4, + "topics": [ + "algorithms", + "control_flow_conditionals", + "control_flow_loops", + "integers", + "math" + ] + }, + { + "slug": "run-length-encoding", + "uuid": "6ac4ad5f-a64a-4646-91c5-169d53f289f9", + "core": false, + "unlocked_by": null, + "difficulty": 2, + "topics": [ + "control_flow_conditionals", + "exception_handling", + "parsing", + "pattern_recognition", + "regular_expressions", "strings", "text_formatting" ] }, { - "slug": "protein-translation", - "uuid": "775ae0ec-8db7-4568-a188-963931cf5ee1", + "slug": "roman-numerals", + "uuid": "2fc4f834-a51c-42b8-a4d9-5263229e7648", "core": false, "unlocked_by": null, - "difficulty": 1, + "difficulty": 3, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "pattern_recognition", + "transforming" + ] + }, + { + "slug": "react", + "uuid": "303c6969-9446-41aa-871a-11223a43e810", + "core": false, + "unlocked_by": null, + "difficulty": 8, "topics": [ "algorithms", + "events", + "reactive_programming" + ] + }, + { + "slug": "trinary", + "uuid": "1acf1d2d-a25e-4576-94de-0470abc872d9", + "core": false, + "unlocked_by": null, + "difficulty": 4, + "topics": [ "control_flow_conditionals", "control_flow_loops", + "integers", + "mathematics", + "regular_expressions", "strings" + ], + "deprecated": true + }, + { + "slug": "sieve", + "uuid": "127287d1-ba44-4400-884a-6fe5f72e210f", + "core": false, + "unlocked_by": "prime-factors", + "difficulty": 5, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "integers", + "math", + "recursion" ] }, { - "slug": "spiral-matrix", - "uuid": "c1abafcc-0d44-4fb5-afae-bff3ce2e1b39", + "slug": "octal", + "uuid": "dec66f89-39d0-4857-9679-a035cf4259d7", "core": false, - "unlocked_by": "matrix", + "unlocked_by": null, "difficulty": 4, "topics": [ - "arrays", "control_flow_conditionals", "control_flow_loops", - "data_structures", - "matrices" - ] + "integers", + "mathematics", + "regular_expressions", + "strings" + ], + "deprecated": true }, { - "slug": "rectangles", - "uuid": "f8c6786e-bf93-4f35-b649-03f4e39bb094", + "slug": "hexadecimal", + "uuid": "8ed2c9fe-a13f-4313-abf9-125f351c85c9", "core": false, - "unlocked_by": "matrix", + "unlocked_by": null, "difficulty": 4, "topics": [ - "arrays", "control_flow_conditionals", "control_flow_loops", - "matrices", + "integers", + "mathematics", + "regular_expressions", "strings" + ], + "deprecated": true + }, + { + "slug": "nth-prime", + "uuid": "7ce09989-f202-4c3c-8b7e-72cef18808c3", + "core": false, + "unlocked_by": "prime-factors", + "difficulty": 5, + "topics": [ + "algorithms", + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "integers", + "math" ] }, { - "slug": "rotational-cipher", - "uuid": "34625b04-844e-41e3-b02b-3443b6b0b7cb", + "slug": "palindrome-products", + "uuid": "f6799d10-0210-4c73-ac08-d5cac1a00ff3", "core": false, - "unlocked_by": "simple-cipher", - "difficulty": 2, + "unlocked_by": "prime-factors", + "difficulty": 7, "topics": [ + "algorithms", "control_flow_conditionals", - "strings", - "text_formatting", - "transforming" + "control_flow_loops", + "exception_handling", + "integers", + "math" ] }, { - "slug": "nucleotide-count", - "uuid": "be6f3ab3-1593-4c2d-8a35-5f39c1d5c91f", + "slug": "sum-of-multiples", + "uuid": "f7452f71-795b-40b6-847c-67ef4bb9db45", "core": false, - "unlocked_by": "rna-transcription", - "difficulty": 4, + "unlocked_by": "prime-factors", + "difficulty": 5, "topics": [ - "arrays", "control_flow_conditionals", "control_flow_loops", - "strings", + "integers", + "lists", + "math" + ] + }, + { + "slug": "queen-attack", + "uuid": "007a4cd4-7324-4512-8905-ead0c78146f7", + "core": false, + "unlocked_by": null, + "difficulty": 8, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "equality", + "exception_handling", + "optional_values", + "parsing", "text_formatting" ] }, { - "slug": "armstrong-numbers", - "uuid": "b28c34f4-f7af-47db-95c6-f920e020bbba", + "slug": "all-your-base", + "uuid": "d2d3cd13-b06c-4c24-9964-fb1554f70dd4", "core": false, "unlocked_by": null, - "difficulty": 2, + "difficulty": 5, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "integers", + "math", + "parsing" + ] + }, + { + "slug": "minesweeper", + "uuid": "8bafe6c4-9154-4037-9070-7f57f91d495a", + "core": false, + "unlocked_by": null, + "difficulty": 7, "topics": [ "algorithms", - "math" + "arrays", + "games" ] }, { - "slug": "rational-numbers", - "uuid": "d8da6cdd-3804-40b0-9821-0dd5765876ff", + "slug": "change", + "uuid": "cfa5741c-9fe9-4cb5-a322-d77ba8145f4b", "core": false, - "unlocked_by": "pascals-triangle", - "difficulty": 5, + "unlocked_by": "prime-factors", + "difficulty": 8, "topics": [ "algorithms", - "floating_point_numbers", - "math" + "performance", + "searching" ] }, { - "slug": "variable-length-quantity", - "uuid": "6be39d1f-f68d-4a52-bd72-85a38ffd509e", + "slug": "protein-translation", + "uuid": "775ae0ec-8db7-4568-a188-963931cf5ee1", "core": false, - "unlocked_by": "grade-school", - "difficulty": 5, + "unlocked_by": null, + "difficulty": 1, "topics": [ - "bitwise_operations", - "transforming" + "algorithms", + "control_flow_conditionals", + "control_flow_loops", + "strings" ] }, { - "slug": "high-scores", - "uuid": "19b41c4a-1466-5c19-b547-40284189fd18", + "slug": "armstrong-numbers", + "uuid": "b28c34f4-f7af-47db-95c6-f920e020bbba", "core": false, - "unlocked_by": "pangram", + "unlocked_by": null, "difficulty": 2, "topics": [ - "arrays" + "algorithms", + "math" ] } ] From a89762fb02fb9aa1fd3257172896088eafe43be0 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Mon, 21 Jan 2019 21:18:01 +0100 Subject: [PATCH 02/11] Demote prime-factors from core to side exercise Prime factors is a mathy exercise and as part of round one, mathy exercises should be demoted to side exercise. --- config.json | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/config.json b/config.json index 42ca9fef08..82eb8e8bba 100644 --- a/config.json +++ b/config.json @@ -682,6 +682,20 @@ "math" ] }, + { + "slug": "prime-factors", + "uuid": "f43cdddf-eea8-4c4a-8359-c69e20ff9661", + "core": false, + "unlocked_by": "space-age", + "difficulty": 4, + "topics": [ + "algorithms", + "control_flow_conditionals", + "control_flow_loops", + "integers", + "math" + ] + }, { "slug": "forth", "uuid": "e4035939-4375-4720-87ae-e613f925f013", @@ -1140,20 +1154,6 @@ ], "deprecated": true }, - { - "slug": "prime-factors", - "uuid": "f43cdddf-eea8-4c4a-8359-c69e20ff9661", - "core": true, - "unlocked_by": null, - "difficulty": 4, - "topics": [ - "algorithms", - "control_flow_conditionals", - "control_flow_loops", - "integers", - "math" - ] - }, { "slug": "run-length-encoding", "uuid": "6ac4ad5f-a64a-4646-91c5-169d53f289f9", From b3058e1e39eb803491a0105a584c320ede507c75 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Mon, 21 Jan 2019 21:20:35 +0100 Subject: [PATCH 03/11] Update simple-cipher difficulty This is an extensive exercise with four parts. Even though it's not a particularly difficult one to understand, it's actually difficult for beginners (< 4) to implement. Making this number higher makes sure it's no longer listed as easy. --- config.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config.json b/config.json index 82eb8e8bba..b2b35841cf 100644 --- a/config.json +++ b/config.json @@ -169,7 +169,7 @@ "uuid": "62d60b42-93bc-4de9-90d1-1ca18a847812", "core": true, "unlocked_by": null, - "difficulty": 1, + "difficulty": 6, "topics": [ "algorithms", "control_flow_conditionals", From c608c75c674b79c8a021fa44bafe25bf722c705b Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Mon, 21 Jan 2019 21:49:22 +0100 Subject: [PATCH 04/11] Add helper binaries for printing the tree of exercises MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This generates the output (as of this commit): Core (matches config.json) of this track: - hello-world (1) - leap (1) - gigasecond (2) - rna-transcription (1) - bob (2) - pangram (2) - space-age (3) - matrix (4) - linked-list (5) - grade-school (6) - robot-name (6) - pascals-triangle (5) - simple-cipher (6) - wordy (7) - secret-handshake (6) - list-ops (8) core ---- ├─ hello-world │ ├─ two-fer (1) │ ├─ leap │ ├─ reverse-string (2) │ ├─ triangle (3) │ ├─ collatz-conjecture (3) │ ├─ gigasecond │ ├─ clock (5) │ ├─ meetup (7) │ ├─ rna-transcription │ ├─ hamming (2) │ ├─ etl (2) │ ├─ scrabble-score (5) │ ├─ raindrops (2) │ ├─ allergies (6) │ ├─ nucleotide-count (4) │ ├─ bob │ ├─ beer-song (5) │ ├─ food-chain (4) │ ├─ pig-latin (4) │ ├─ proverb (4) │ ├─ house (4) │ ├─ twelve-days (4) │ ├─ say (6) │ ├─ isbn-verifier (4) │ ├─ pangram │ ├─ isogram (2) │ ├─ phone-number (3) │ ├─ anagram (1) │ ├─ word-count (1) │ ├─ acronym (2) │ ├─ series (3) │ ├─ largest-series-product (7) │ ├─ bracket-push (3) │ ├─ high-scores (2) │ ├─ space-age │ ├─ grains (5) │ ├─ perfect-numbers (3) │ ├─ luhn (4) │ ├─ pythagorean-triplet (5) │ ├─ difference-of-squares (3) │ ├─ complex-numbers (4) │ ├─ prime-factors (4) │ ├─ matrix │ ├─ forth (8) │ ├─ saddle-points (6) │ ├─ ocr-numbers (5) │ ├─ transpose (1) │ ├─ spiral-matrix (4) │ ├─ rectangles (4) │ ├─ linked-list │ ├─ sublist (4) │ ├─ word-search (8) │ ├─ circular-buffer (8) │ ├─ binary-search (7) │ ├─ binary-search-tree (6) │ ├─ custom-set (6) │ ├─ simple-linked-list (8) │ ├─ grade-school │ ├─ two-bucket (6) │ ├─ bowling (8) │ ├─ alphametics (7) │ ├─ connect (7) │ ├─ variable-length-quantity (5) │ ├─ pascals-triangle │ ├─ diamond (5) │ ├─ rational-numbers (5) │ ├─ simple-cipher │ ├─ atbash-cipher (7) │ ├─ crypto-square (9) │ ├─ diffie-hellman (3) │ ├─ rotational-cipher (2) │ ├─ wordy │ ├─ kindergarten-garden (7) │ ├─ robot-simulator (5) │ ├─ list-ops │ ├─ strain (4) │ ├─ accumulate (5) │ ├─ flatten-array (5) │ ├─ prime-factors │ ├─ sieve (5) │ ├─ nth-prime (5) │ ├─ palindrome-products (7) │ ├─ sum-of-multiples (5) │ ├─ change (8) │ bonus ---- - zipper (8) - point-mutations (0) - darts (3) - binary (4) - run-length-encoding (2) - roman-numerals (3) - react (8) - trinary (4) - octal (4) - hexadecimal (4) - queen-attack (8) - all-your-base (5) - minesweeper (7) - protein-translation (1) - armstrong-numbers (2) --- bin/generate-config-tree | 34 ++++++++++++++++++++++++++++++++++ bin/print-config-tree | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 bin/generate-config-tree create mode 100644 bin/print-config-tree diff --git a/bin/generate-config-tree b/bin/generate-config-tree new file mode 100644 index 0000000000..28512e2462 --- /dev/null +++ b/bin/generate-config-tree @@ -0,0 +1,34 @@ +#!/usr/bin/env node + +const { exercises } = require('../config.json') +const TAG_CORE = '__core' +const TAG_BONUS = '__bonus' + +// node inter-opt exports +exports.TAG_CORE = TAG_CORE +exports.TAG_BONUS = TAG_BONUS + +exports.tree = exercises.reduce((result, exercise) => { + const tag = exercise.slug + const item = { + slug: tag, + difficulty: exercise.difficulty + } + + if (exercise.core) { + const current = result[TAG_CORE] || [] + + if (result[tag]) { + console.warn(`${tag} is not ordered correctly in config.json`) + } + + return { + ...result, + __core: current.concat([item]) + } + } + + const parent = exercise.unlocked_by || TAG_BONUS + const current = result[parent] || [] + return { ...result, [parent]: current.concat([item]) } +}, {}) diff --git a/bin/print-config-tree b/bin/print-config-tree new file mode 100644 index 0000000000..6d537e2a42 --- /dev/null +++ b/bin/print-config-tree @@ -0,0 +1,33 @@ +#!/usr/bin/env node + +const actions = require('./generate-config-tree') + +const { tree, TAG_BONUS, TAG_CORE } = actions +const { [TAG_BONUS]: __bonus, [TAG_CORE]: __core, ...track } = tree + +function printLn(line) { + process.stdout.write(`${line}\n`) +} + +function printList(items) { + items.forEach(item => { + printLn(`- ${item.slug} (${item.difficulty})`) + }) +} + +printLn('Core (matches config.json) of this track:') +printList(__core) +printLn('\n') +printLn('core') +printLn('----') +Object.keys(track).forEach(slug => { + printLn(`├─ ${slug}`) + track[slug].forEach(side => { + printLn(`│ ├─ ${side.slug} (${side.difficulty})`) + }) + printLn('│') +}) + +printLn('bonus') +printLn('----') +printList(__bonus) From dfd12e5b43a9135798b32f51084a3293732125f6 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Mon, 21 Jan 2019 21:54:44 +0100 Subject: [PATCH 05/11] Fix the script to include core exercises that don't unlock anything --- bin/generate-config-tree | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/generate-config-tree b/bin/generate-config-tree index 28512e2462..9a08db2e3a 100644 --- a/bin/generate-config-tree +++ b/bin/generate-config-tree @@ -12,7 +12,7 @@ exports.tree = exercises.reduce((result, exercise) => { const tag = exercise.slug const item = { slug: tag, - difficulty: exercise.difficulty + difficulty: exercise.difficulty, } if (exercise.core) { @@ -24,7 +24,8 @@ exports.tree = exercises.reduce((result, exercise) => { return { ...result, - __core: current.concat([item]) + __core: current.concat([item]), + [tag]: result[tag] || [] } } From d07fc9f75be129a3ec263a2764bc799bafa0e008 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Mon, 21 Jan 2019 21:54:59 +0100 Subject: [PATCH 06/11] nit: junction for the last item in the list --- bin/print-config-tree | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bin/print-config-tree b/bin/print-config-tree index 6d537e2a42..337c2c09fd 100644 --- a/bin/print-config-tree +++ b/bin/print-config-tree @@ -22,8 +22,9 @@ printLn('core') printLn('----') Object.keys(track).forEach(slug => { printLn(`├─ ${slug}`) - track[slug].forEach(side => { - printLn(`│ ├─ ${side.slug} (${side.difficulty})`) + track[slug].forEach((side, index, self) => { + junction = index === self.length - 1 ? '└─' : '├─' + printLn(`│ ${junction} ${side.slug} (${side.difficulty})`) }) printLn('│') }) From 732a91799f0a20aa261e1073f5e5044f378940f7 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Mon, 21 Jan 2019 22:33:52 +0100 Subject: [PATCH 07/11] Re-assign prime-factors unlocks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Assigning them one up, and give two exercises to "secret-handshake" which had none: Core (matches config.json) of this track: - hello-world (1) - leap (1) - gigasecond (2) - rna-transcription (1) - bob (2) - pangram (2) - space-age (3) - matrix (4) - linked-list (5) - grade-school (6) - robot-name (6) - pascals-triangle (5) - simple-cipher (6) - wordy (7) - secret-handshake (6) - list-ops (8) core ---- ├─ hello-world │ └─ two-fer (1) │ ├─ leap │ ├─ reverse-string (2) │ ├─ triangle (3) │ └─ collatz-conjecture (3) │ ├─ gigasecond │ ├─ clock (5) │ └─ meetup (7) │ ├─ rna-transcription │ ├─ hamming (2) │ ├─ etl (2) │ ├─ scrabble-score (5) │ ├─ raindrops (2) │ ├─ allergies (6) │ └─ nucleotide-count (4) │ ├─ bob │ ├─ beer-song (5) │ ├─ food-chain (4) │ ├─ pig-latin (4) │ ├─ proverb (4) │ ├─ house (4) │ ├─ twelve-days (4) │ ├─ say (6) │ └─ isbn-verifier (4) │ ├─ pangram │ ├─ isogram (2) │ ├─ phone-number (3) │ ├─ anagram (1) │ ├─ word-count (1) │ ├─ acronym (2) │ ├─ series (3) │ ├─ largest-series-product (7) │ ├─ bracket-push (3) │ └─ high-scores (2) │ ├─ space-age │ ├─ grains (5) │ ├─ perfect-numbers (3) │ ├─ luhn (4) │ ├─ pythagorean-triplet (5) │ ├─ difference-of-squares (3) │ ├─ complex-numbers (4) │ ├─ prime-factors (4) │ ├─ sieve (5) │ ├─ nth-prime (5) │ └─ palindrome-products (7) │ ├─ matrix │ ├─ forth (8) │ ├─ saddle-points (6) │ ├─ ocr-numbers (5) │ ├─ transpose (1) │ ├─ spiral-matrix (4) │ └─ rectangles (4) │ ├─ linked-list │ ├─ sublist (4) │ ├─ word-search (8) │ ├─ circular-buffer (8) │ ├─ binary-search (7) │ ├─ binary-search-tree (6) │ ├─ custom-set (6) │ └─ simple-linked-list (8) │ ├─ grade-school │ ├─ two-bucket (6) │ ├─ bowling (8) │ ├─ alphametics (7) │ ├─ connect (7) │ └─ variable-length-quantity (5) │ ├─ robot-name │ ├─ pascals-triangle │ ├─ diamond (5) │ └─ rational-numbers (5) │ ├─ simple-cipher │ ├─ atbash-cipher (7) │ ├─ crypto-square (9) │ ├─ diffie-hellman (3) │ └─ rotational-cipher (2) │ ├─ wordy │ ├─ kindergarten-garden (7) │ └─ robot-simulator (5) │ ├─ secret-handshake │ ├─ sum-of-multiples (5) │ └─ change (8) │ ├─ list-ops │ ├─ strain (4) │ ├─ accumulate (5) │ └─ flatten-array (5) │ bonus ---- - zipper (8) - point-mutations (0) - darts (3) - binary (4) - run-length-encoding (2) - roman-numerals (3) - react (8) - trinary (4) - octal (4) - hexadecimal (4) - queen-attack (8) - all-your-base (5) - minesweeper (7) - protein-translation (1) - armstrong-numbers (2) --- config.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/config.json b/config.json index b2b35841cf..b59f31059f 100644 --- a/config.json +++ b/config.json @@ -1215,7 +1215,7 @@ "slug": "sieve", "uuid": "127287d1-ba44-4400-884a-6fe5f72e210f", "core": false, - "unlocked_by": "prime-factors", + "unlocked_by": "space-age", "difficulty": 5, "topics": [ "control_flow_conditionals", @@ -1261,7 +1261,7 @@ "slug": "nth-prime", "uuid": "7ce09989-f202-4c3c-8b7e-72cef18808c3", "core": false, - "unlocked_by": "prime-factors", + "unlocked_by": "space-age", "difficulty": 5, "topics": [ "algorithms", @@ -1276,7 +1276,7 @@ "slug": "palindrome-products", "uuid": "f6799d10-0210-4c73-ac08-d5cac1a00ff3", "core": false, - "unlocked_by": "prime-factors", + "unlocked_by": "space-age", "difficulty": 7, "topics": [ "algorithms", @@ -1291,7 +1291,7 @@ "slug": "sum-of-multiples", "uuid": "f7452f71-795b-40b6-847c-67ef4bb9db45", "core": false, - "unlocked_by": "prime-factors", + "unlocked_by": "secret-handshake", "difficulty": 5, "topics": [ "control_flow_conditionals", @@ -1348,7 +1348,7 @@ "slug": "change", "uuid": "cfa5741c-9fe9-4cb5-a322-d77ba8145f4b", "core": false, - "unlocked_by": "prime-factors", + "unlocked_by": "secret-handshake", "difficulty": 8, "topics": [ "algorithms", From 7b076e2227bfc694eae15eea2effaab64d17ad46 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Thu, 24 Jan 2019 16:05:12 +0100 Subject: [PATCH 08/11] Reorder based on mentor-notes, examples and conversation - Moving bob down - Moving list-ops up - Moving space-age up (because of new exercise implementation) --- .gitattributes | 1 + config.json | 88 +++++++++++++++++++++++++------------------------- 2 files changed, 45 insertions(+), 44 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000000..cbdcbbc258 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.js text eol=lf diff --git a/config.json b/config.json index b59f31059f..0780885db1 100644 --- a/config.json +++ b/config.json @@ -52,18 +52,14 @@ ] }, { - "slug": "bob", - "uuid": "a5bf36f0-5d3c-41d4-8d54-e37e484e59cd", + "slug": "space-age", + "uuid": "d9d757ed-ebe6-4d4a-aa73-f6834221cd54", "core": true, "unlocked_by": null, "difficulty": 2, "topics": [ - "control_flow_conditionals", - "pattern_recognition", - "polymorfism", - "regular_expressions", - "strings", - "unicode" + "classes", + "floating_point_numbers" ] }, { @@ -83,28 +79,46 @@ ] }, { - "slug": "space-age", - "uuid": "d9d757ed-ebe6-4d4a-aa73-f6834221cd54", + "slug": "matrix", + "uuid": "dd0b5e67-81f6-437e-8334-2ec0dfeb862a", "core": true, "unlocked_by": null, "difficulty": 3, "topics": [ - "classes", - "floating_point_numbers" + "arrays", + "control_flow_conditionals", + "control_flow_loops", + "data_structures", + "matrices", + "text_formatting" ] }, { - "slug": "matrix", - "uuid": "dd0b5e67-81f6-437e-8334-2ec0dfeb862a", + "slug": "bob", + "uuid": "a5bf36f0-5d3c-41d4-8d54-e37e484e59cd", + "core": true, + "unlocked_by": null, + "difficulty": 4, + "topics": [ + "control_flow_conditionals", + "pattern_recognition", + "polymorfism", + "regular_expressions", + "strings", + "unicode" + ] + }, + { + "slug": "pascals-triangle", + "uuid": "99493160-4673-402f-acda-62db5378148d", "core": true, "unlocked_by": null, "difficulty": 4, "topics": [ - "arrays", "control_flow_conditionals", "control_flow_loops", - "data_structures", - "matrices", + "math", + "strings", "text_formatting" ] }, @@ -137,31 +151,30 @@ ] }, { - "slug": "robot-name", - "uuid": "03f4dfea-e6db-4754-b2c8-ca06c8b81ef1", + "slug": "list-ops", + "uuid": "7d9db056-5398-41b6-af3b-9707f5eb0dbc", "core": true, "unlocked_by": null, "difficulty": 6, "topics": [ - "control_flow_conditionals", - "exception_handling", - "randomness", - "regular_expressions", - "sets" + "control_flow_loops", + "data_structures", + "lists", + "recursion" ] }, { - "slug": "pascals-triangle", - "uuid": "99493160-4673-402f-acda-62db5378148d", + "slug": "robot-name", + "uuid": "03f4dfea-e6db-4754-b2c8-ca06c8b81ef1", "core": true, "unlocked_by": null, - "difficulty": 5, + "difficulty": 6, "topics": [ "control_flow_conditionals", - "control_flow_loops", - "math", - "strings", - "text_formatting" + "exception_handling", + "randomness", + "regular_expressions", + "sets" ] }, { @@ -211,19 +224,6 @@ "games" ] }, - { - "slug": "list-ops", - "uuid": "7d9db056-5398-41b6-af3b-9707f5eb0dbc", - "core": true, - "unlocked_by": null, - "difficulty": 8, - "topics": [ - "control_flow_loops", - "data_structures", - "lists", - "recursion" - ] - }, { "slug": "two-fer", "uuid": "7f49e997-4435-4f34-a020-bddc92c838ed", From 858bd058e09c160bbe20242bec8353ead216f7c5 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Thu, 24 Jan 2019 16:05:30 +0100 Subject: [PATCH 09/11] Remove .gitattributes --- .gitattributes | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index cbdcbbc258..0000000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -*.js text eol=lf From 632dd297132e58c699535d6480c6d44c182f9827 Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Thu, 24 Jan 2019 16:05:37 +0100 Subject: [PATCH 10/11] Tweak difficulties --- config.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config.json b/config.json index 0780885db1..f48a7fc1a8 100644 --- a/config.json +++ b/config.json @@ -35,7 +35,7 @@ "uuid": "fd7b62d4-266b-4e84-a526-bf3d47901216", "core": true, "unlocked_by": null, - "difficulty": 2, + "difficulty": 1, "topics": [ "time" ] @@ -45,7 +45,7 @@ "uuid": "342974d6-9083-4754-a6c5-ed1e19e40ec5", "core": true, "unlocked_by": null, - "difficulty": 1, + "difficulty": 2, "topics": [ "strings", "transforming" @@ -143,7 +143,7 @@ "uuid": "64637322-33bc-401f-8cec-1f9810a41f75", "core": true, "unlocked_by": null, - "difficulty": 6, + "difficulty": 5, "topics": [ "arrays", "maps", From 98dacaf001030a73a71563653bdf7254aea26b0f Mon Sep 17 00:00:00 2001 From: Derk-Jan Karrenbeld Date: Thu, 24 Jan 2019 16:29:35 +0100 Subject: [PATCH 11/11] Update config.json orderering to match track --- config.json | 715 ++++++++++++++++++++++++++-------------------------- 1 file changed, 359 insertions(+), 356 deletions(-) diff --git a/config.json b/config.json index f48a7fc1a8..8da5f324f9 100644 --- a/config.json +++ b/config.json @@ -384,114 +384,123 @@ "text_formatting" ] }, + { - "slug": "beer-song", - "uuid": "6573f168-d8fc-4ccf-a864-1a61f432fae1", + "slug": "grains", + "uuid": "d003975a-9045-4f03-9ad9-c15db584dc13", "core": false, - "unlocked_by": "bob", + "unlocked_by": "space-age", "difficulty": 5, "topics": [ - "control_flow_conditionals", "control_flow_loops", - "strings" + "integers" ] }, { - "slug": "food-chain", - "uuid": "62672dc7-e827-4c2e-a282-d6df45b60bbd", + "slug": "word-count", + "uuid": "0073ff9a-cd6a-43cf-b8bf-4d5d8117b81b", "core": false, - "unlocked_by": "bob", - "difficulty": 4, + "unlocked_by": "space-age", + "difficulty": 1, "topics": [ - "algorithms", - "text_formatting" + "control_flow_loops", + "lists", + "regular_expressions", + "strings", + "unicode" ] }, { - "slug": "pig-latin", - "uuid": "16e25a38-7ce3-4ccd-b2f0-1550b837fe9b", + "slug": "perfect-numbers", + "uuid": "c6691fd2-e10d-47df-acbf-3adeac5a2f89", "core": false, - "unlocked_by": "bob", - "difficulty": 4, + "unlocked_by": "space-age", + "difficulty": 3, "topics": [ + "arrays", "control_flow_conditionals", "control_flow_loops", - "games", - "regular_expressions", - "strings", - "transforming" + "integers", + "math" ] }, { - "slug": "proverb", - "uuid": "5626f5b6-207b-458b-92b6-eff2cadb240a", + "slug": "luhn", + "uuid": "28872cc9-f1ef-487f-9a79-6bf7983148bf", "core": false, - "unlocked_by": "bob", + "unlocked_by": "space-age", "difficulty": 4, "topics": [ - "arrays", "control_flow_conditionals", "control_flow_loops", - "optional_values", - "strings", - "text_formatting" + "integers", + "strings" ] }, { - "slug": "house", - "uuid": "a8b7187d-12eb-4efc-b966-87823654ccda", + "slug": "pythagorean-triplet", + "uuid": "394755a3-c743-4b85-b9b8-387907f4e32d", "core": false, - "unlocked_by": "bob", - "difficulty": 4, + "unlocked_by": "space-age", + "difficulty": 5, "topics": [ - "arrays", + "algorithms", "control_flow_conditionals", "control_flow_loops", - "recursion", - "strings" + "integers", + "math" ] }, { - "slug": "twelve-days", - "uuid": "64de1776-d5c6-43fe-9abf-7e3aa08ae342", + "slug": "difference-of-squares", + "uuid": "7dfa878c-83a6-48ef-9170-b6633d51d601", "core": false, - "unlocked_by": "bob", - "difficulty": 4, + "unlocked_by": "space-age", + "difficulty": 3, "topics": [ - "control_flow_conditionals", + "algorithms", "control_flow_loops", - "pattern_recognition", - "polymorfism", - "regular_expressions", - "strings" + "integers", + "math" ] }, { - "slug": "say", - "uuid": "12989bb3-c593-4f68-bea4-e2c5b76bc3c0", + "slug": "complex-numbers", + "uuid": "ea9a9a3e-ae6a-470d-8bb4-2afead507f24", "core": false, - "unlocked_by": "bob", - "difficulty": 6, + "unlocked_by": "space-age", + "difficulty": 4, + "topics": [ + "math" + ] + }, + { + "slug": "prime-factors", + "uuid": "f43cdddf-eea8-4c4a-8359-c69e20ff9661", + "core": false, + "unlocked_by": "space-age", + "difficulty": 4, "topics": [ + "algorithms", "control_flow_conditionals", "control_flow_loops", - "exception_handling", "integers", - "strings", - "text_formatting" + "math" ] }, { - "slug": "isbn-verifier", - "uuid": "b902c746-60d1-4645-a5bc-dafadec0ef32", + "slug": "palindrome-products", + "uuid": "f6799d10-0210-4c73-ac08-d5cac1a00ff3", "core": false, - "unlocked_by": "bob", - "difficulty": 4, + "unlocked_by": "space-age", + "difficulty": 7, "topics": [ + "algorithms", "control_flow_conditionals", "control_flow_loops", - "pattern_recognition", - "regular_expressions" + "exception_handling", + "integers", + "math" ] }, { @@ -527,20 +536,6 @@ "strings" ] }, - { - "slug": "word-count", - "uuid": "0073ff9a-cd6a-43cf-b8bf-4d5d8117b81b", - "core": false, - "unlocked_by": "pangram", - "difficulty": 1, - "topics": [ - "control_flow_loops", - "lists", - "regular_expressions", - "strings", - "unicode" - ] - }, { "slug": "acronym", "uuid": "440d78d1-9dea-466f-9bd4-935eed067409", @@ -607,95 +602,6 @@ "arrays" ] }, - { - "slug": "grains", - "uuid": "d003975a-9045-4f03-9ad9-c15db584dc13", - "core": false, - "unlocked_by": "space-age", - "difficulty": 5, - "topics": [ - "control_flow_loops", - "integers" - ] - }, - { - "slug": "perfect-numbers", - "uuid": "c6691fd2-e10d-47df-acbf-3adeac5a2f89", - "core": false, - "unlocked_by": "space-age", - "difficulty": 3, - "topics": [ - "arrays", - "control_flow_conditionals", - "control_flow_loops", - "integers", - "math" - ] - }, - { - "slug": "luhn", - "uuid": "28872cc9-f1ef-487f-9a79-6bf7983148bf", - "core": false, - "unlocked_by": "space-age", - "difficulty": 4, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "integers", - "strings" - ] - }, - { - "slug": "pythagorean-triplet", - "uuid": "394755a3-c743-4b85-b9b8-387907f4e32d", - "core": false, - "unlocked_by": "space-age", - "difficulty": 5, - "topics": [ - "algorithms", - "control_flow_conditionals", - "control_flow_loops", - "integers", - "math" - ] - }, - { - "slug": "difference-of-squares", - "uuid": "7dfa878c-83a6-48ef-9170-b6633d51d601", - "core": false, - "unlocked_by": "space-age", - "difficulty": 3, - "topics": [ - "algorithms", - "control_flow_loops", - "integers", - "math" - ] - }, - { - "slug": "complex-numbers", - "uuid": "ea9a9a3e-ae6a-470d-8bb4-2afead507f24", - "core": false, - "unlocked_by": "space-age", - "difficulty": 4, - "topics": [ - "math" - ] - }, - { - "slug": "prime-factors", - "uuid": "f43cdddf-eea8-4c4a-8359-c69e20ff9661", - "core": false, - "unlocked_by": "space-age", - "difficulty": 4, - "topics": [ - "algorithms", - "control_flow_conditionals", - "control_flow_loops", - "integers", - "math" - ] - }, { "slug": "forth", "uuid": "e4035939-4375-4720-87ae-e613f925f013", @@ -784,40 +690,179 @@ "strings" ] }, + { - "slug": "sublist", - "uuid": "4be85b5e-6b13-11e7-907b-a6006ad3dba0", + "slug": "beer-song", + "uuid": "6573f168-d8fc-4ccf-a864-1a61f432fae1", "core": false, - "unlocked_by": "linked-list", - "difficulty": 4, + "unlocked_by": "bob", + "difficulty": 5, "topics": [ - "arrays", - "lists" + "control_flow_conditionals", + "control_flow_loops", + "strings" ] }, { - "slug": "word-search", - "uuid": "0125f5a7-8883-4553-a6c1-45f19544af5e", + "slug": "food-chain", + "uuid": "62672dc7-e827-4c2e-a282-d6df45b60bbd", "core": false, - "unlocked_by": "linked-list", - "difficulty": 8, + "unlocked_by": "bob", + "difficulty": 4, "topics": [ - "arrays", - "control_flow_conditionals", - "control_flow_loops", - "equality", - "optional_values", - "parsing", + "algorithms", "text_formatting" ] }, { - "slug": "circular-buffer", - "uuid": "bf0b1f95-3425-4345-8a12-3a80d49b49c9", + "slug": "pig-latin", + "uuid": "16e25a38-7ce3-4ccd-b2f0-1550b837fe9b", "core": false, - "unlocked_by": "linked-list", - "difficulty": 8, - "topics": [ + "unlocked_by": "bob", + "difficulty": 4, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "games", + "regular_expressions", + "strings", + "transforming" + ] + }, + { + "slug": "proverb", + "uuid": "5626f5b6-207b-458b-92b6-eff2cadb240a", + "core": false, + "unlocked_by": "bob", + "difficulty": 4, + "topics": [ + "arrays", + "control_flow_conditionals", + "control_flow_loops", + "optional_values", + "strings", + "text_formatting" + ] + }, + { + "slug": "house", + "uuid": "a8b7187d-12eb-4efc-b966-87823654ccda", + "core": false, + "unlocked_by": "bob", + "difficulty": 4, + "topics": [ + "arrays", + "control_flow_conditionals", + "control_flow_loops", + "recursion", + "strings" + ] + }, + { + "slug": "twelve-days", + "uuid": "64de1776-d5c6-43fe-9abf-7e3aa08ae342", + "core": false, + "unlocked_by": "bob", + "difficulty": 4, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "pattern_recognition", + "polymorfism", + "regular_expressions", + "strings" + ] + }, + { + "slug": "say", + "uuid": "12989bb3-c593-4f68-bea4-e2c5b76bc3c0", + "core": false, + "unlocked_by": "bob", + "difficulty": 6, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "integers", + "strings", + "text_formatting" + ] + }, + { + "slug": "isbn-verifier", + "uuid": "b902c746-60d1-4645-a5bc-dafadec0ef32", + "core": false, + "unlocked_by": "bob", + "difficulty": 4, + "topics": [ + "control_flow_conditionals", + "control_flow_loops", + "pattern_recognition", + "regular_expressions" + ] + }, + { + "slug": "diamond", + "uuid": "6a1eee0e-f8d4-446d-9c52-f31c3700af1b", + "core": false, + "unlocked_by": "pascals-triangle", + "difficulty": 5, + "topics": [ + "arrays", + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "games", + "parsing", + "text_formatting" + ] + }, + { + "slug": "rational-numbers", + "uuid": "d8da6cdd-3804-40b0-9821-0dd5765876ff", + "core": false, + "unlocked_by": "pascals-triangle", + "difficulty": 5, + "topics": [ + "algorithms", + "floating_point_numbers", + "math" + ] + }, + { + "slug": "sublist", + "uuid": "4be85b5e-6b13-11e7-907b-a6006ad3dba0", + "core": false, + "unlocked_by": "linked-list", + "difficulty": 4, + "topics": [ + "arrays", + "lists" + ] + }, + { + "slug": "word-search", + "uuid": "0125f5a7-8883-4553-a6c1-45f19544af5e", + "core": false, + "unlocked_by": "linked-list", + "difficulty": 8, + "topics": [ + "arrays", + "control_flow_conditionals", + "control_flow_loops", + "equality", + "optional_values", + "parsing", + "text_formatting" + ] + }, + { + "slug": "circular-buffer", + "uuid": "bf0b1f95-3425-4345-8a12-3a80d49b49c9", + "core": false, + "unlocked_by": "linked-list", + "difficulty": 8, + "topics": [ "arrays", "control_flow_conditionals", "control_flow_loops", @@ -952,30 +997,71 @@ ] }, { - "slug": "diamond", - "uuid": "6a1eee0e-f8d4-446d-9c52-f31c3700af1b", + "slug": "strain", + "uuid": "8407f9d5-7a7e-40c8-aace-a6a8294ae5e9", "core": false, - "unlocked_by": "pascals-triangle", + "unlocked_by": "list-ops", + "difficulty": 4, + "topics": [ + "algorithms", + "arrays", + "callbacks", + "control_flow_conditionals", + "control_flow_loops", + "filtering", + "lists" + ] + }, + { + "slug": "accumulate", + "uuid": "6ebe247c-3d11-48b7-8e6f-39f98359d233", + "core": false, + "unlocked_by": "list-ops", + "difficulty": 5, + "topics": [ + "algorithms", + "callbacks", + "control_flow_loops", + "lists" + ] + }, + { + "slug": "flatten-array", + "uuid": "1a6c4a3b-d5db-4a5a-b123-66cf085defe6", + "core": false, + "unlocked_by": "list-ops", "difficulty": 5, "topics": [ "arrays", + "recursion" + ] + }, + { + "slug": "sieve", + "uuid": "127287d1-ba44-4400-884a-6fe5f72e210f", + "core": false, + "unlocked_by": "robot-name", + "difficulty": 5, + "topics": [ "control_flow_conditionals", "control_flow_loops", - "exception_handling", - "games", - "parsing", - "text_formatting" + "integers", + "math", + "recursion" ] }, { - "slug": "rational-numbers", - "uuid": "d8da6cdd-3804-40b0-9821-0dd5765876ff", + "slug": "nth-prime", + "uuid": "7ce09989-f202-4c3c-8b7e-72cef18808c3", "core": false, - "unlocked_by": "pascals-triangle", + "unlocked_by": "robot-name", "difficulty": 5, "topics": [ "algorithms", - "floating_point_numbers", + "control_flow_conditionals", + "control_flow_loops", + "exception_handling", + "integers", "math" ] }, @@ -1069,43 +1155,29 @@ ] }, { - "slug": "strain", - "uuid": "8407f9d5-7a7e-40c8-aace-a6a8294ae5e9", + "slug": "sum-of-multiples", + "uuid": "f7452f71-795b-40b6-847c-67ef4bb9db45", "core": false, - "unlocked_by": "list-ops", - "difficulty": 4, + "unlocked_by": "secret-handshake", + "difficulty": 5, "topics": [ - "algorithms", - "arrays", - "callbacks", "control_flow_conditionals", "control_flow_loops", - "filtering", - "lists" + "integers", + "lists", + "math" ] }, { - "slug": "accumulate", - "uuid": "6ebe247c-3d11-48b7-8e6f-39f98359d233", + "slug": "change", + "uuid": "cfa5741c-9fe9-4cb5-a322-d77ba8145f4b", "core": false, - "unlocked_by": "list-ops", - "difficulty": 5, + "unlocked_by": "secret-handshake", + "difficulty": 8, "topics": [ "algorithms", - "callbacks", - "control_flow_loops", - "lists" - ] - }, - { - "slug": "flatten-array", - "uuid": "1a6c4a3b-d5db-4a5a-b123-66cf085defe6", - "core": false, - "unlocked_by": "list-ops", - "difficulty": 5, - "topics": [ - "arrays", - "recursion" + "performance", + "searching" ] }, { @@ -1120,15 +1192,6 @@ "trees" ] }, - { - "slug": "point-mutations", - "uuid": "6d43709b-3809-4a6a-ab41-2a5ab841b5fb", - "core": false, - "unlocked_by": null, - "difficulty": 0, - "topics": null, - "deprecated": true - }, { "slug": "darts", "uuid": "6c64649b-ea81-4118-9e74-a0a55018ffbc", @@ -1137,23 +1200,6 @@ "difficulty": 3, "topics": null }, - { - "slug": "binary", - "uuid": "0ba4d3b9-2519-49ac-bd93-f960aca6c11f", - "core": false, - "unlocked_by": null, - "difficulty": 4, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "exception_handling", - "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true - }, { "slug": "run-length-encoding", "uuid": "6ac4ad5f-a64a-4646-91c5-169d53f289f9", @@ -1196,189 +1242,146 @@ ] }, { - "slug": "trinary", - "uuid": "1acf1d2d-a25e-4576-94de-0470abc872d9", + "slug": "queen-attack", + "uuid": "007a4cd4-7324-4512-8905-ead0c78146f7", "core": false, "unlocked_by": null, - "difficulty": 4, + "difficulty": 8, "topics": [ "control_flow_conditionals", "control_flow_loops", - "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true + "equality", + "exception_handling", + "optional_values", + "parsing", + "text_formatting" + ] }, { - "slug": "sieve", - "uuid": "127287d1-ba44-4400-884a-6fe5f72e210f", + "slug": "all-your-base", + "uuid": "d2d3cd13-b06c-4c24-9964-fb1554f70dd4", "core": false, - "unlocked_by": "space-age", + "unlocked_by": null, "difficulty": 5, "topics": [ "control_flow_conditionals", "control_flow_loops", + "exception_handling", "integers", "math", - "recursion" + "parsing" ] }, { - "slug": "octal", - "uuid": "dec66f89-39d0-4857-9679-a035cf4259d7", + "slug": "minesweeper", + "uuid": "8bafe6c4-9154-4037-9070-7f57f91d495a", "core": false, "unlocked_by": null, - "difficulty": 4, + "difficulty": 7, "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true + "algorithms", + "arrays", + "games" + ] }, { - "slug": "hexadecimal", - "uuid": "8ed2c9fe-a13f-4313-abf9-125f351c85c9", + "slug": "protein-translation", + "uuid": "775ae0ec-8db7-4568-a188-963931cf5ee1", "core": false, "unlocked_by": null, - "difficulty": 4, - "topics": [ - "control_flow_conditionals", - "control_flow_loops", - "integers", - "mathematics", - "regular_expressions", - "strings" - ], - "deprecated": true - }, - { - "slug": "nth-prime", - "uuid": "7ce09989-f202-4c3c-8b7e-72cef18808c3", - "core": false, - "unlocked_by": "space-age", - "difficulty": 5, + "difficulty": 1, "topics": [ "algorithms", "control_flow_conditionals", "control_flow_loops", - "exception_handling", - "integers", - "math" + "strings" ] }, { - "slug": "palindrome-products", - "uuid": "f6799d10-0210-4c73-ac08-d5cac1a00ff3", + "slug": "armstrong-numbers", + "uuid": "b28c34f4-f7af-47db-95c6-f920e020bbba", "core": false, - "unlocked_by": "space-age", - "difficulty": 7, + "unlocked_by": null, + "difficulty": 2, "topics": [ "algorithms", - "control_flow_conditionals", - "control_flow_loops", - "exception_handling", - "integers", "math" ] }, + { - "slug": "sum-of-multiples", - "uuid": "f7452f71-795b-40b6-847c-67ef4bb9db45", + "slug": "trinary", + "uuid": "1acf1d2d-a25e-4576-94de-0470abc872d9", "core": false, - "unlocked_by": "secret-handshake", - "difficulty": 5, + "unlocked_by": null, + "difficulty": 4, "topics": [ "control_flow_conditionals", "control_flow_loops", "integers", - "lists", - "math" - ] + "mathematics", + "regular_expressions", + "strings" + ], + "deprecated": true }, { - "slug": "queen-attack", - "uuid": "007a4cd4-7324-4512-8905-ead0c78146f7", + "slug": "octal", + "uuid": "dec66f89-39d0-4857-9679-a035cf4259d7", "core": false, "unlocked_by": null, - "difficulty": 8, + "difficulty": 4, "topics": [ "control_flow_conditionals", "control_flow_loops", - "equality", - "exception_handling", - "optional_values", - "parsing", - "text_formatting" - ] + "integers", + "mathematics", + "regular_expressions", + "strings" + ], + "deprecated": true }, { - "slug": "all-your-base", - "uuid": "d2d3cd13-b06c-4c24-9964-fb1554f70dd4", + "slug": "hexadecimal", + "uuid": "8ed2c9fe-a13f-4313-abf9-125f351c85c9", "core": false, "unlocked_by": null, - "difficulty": 5, + "difficulty": 4, "topics": [ "control_flow_conditionals", "control_flow_loops", - "exception_handling", "integers", - "math", - "parsing" - ] + "mathematics", + "regular_expressions", + "strings" + ], + "deprecated": true }, { - "slug": "minesweeper", - "uuid": "8bafe6c4-9154-4037-9070-7f57f91d495a", + "slug": "point-mutations", + "uuid": "6d43709b-3809-4a6a-ab41-2a5ab841b5fb", "core": false, "unlocked_by": null, - "difficulty": 7, - "topics": [ - "algorithms", - "arrays", - "games" - ] - }, - { - "slug": "change", - "uuid": "cfa5741c-9fe9-4cb5-a322-d77ba8145f4b", - "core": false, - "unlocked_by": "secret-handshake", - "difficulty": 8, - "topics": [ - "algorithms", - "performance", - "searching" - ] + "difficulty": 0, + "topics": null, + "deprecated": true }, { - "slug": "protein-translation", - "uuid": "775ae0ec-8db7-4568-a188-963931cf5ee1", + "slug": "binary", + "uuid": "0ba4d3b9-2519-49ac-bd93-f960aca6c11f", "core": false, "unlocked_by": null, - "difficulty": 1, + "difficulty": 4, "topics": [ - "algorithms", "control_flow_conditionals", "control_flow_loops", + "exception_handling", + "integers", + "mathematics", + "regular_expressions", "strings" - ] - }, - { - "slug": "armstrong-numbers", - "uuid": "b28c34f4-f7af-47db-95c6-f920e020bbba", - "core": false, - "unlocked_by": null, - "difficulty": 2, - "topics": [ - "algorithms", - "math" - ] + ], + "deprecated": true } ] }