trackler 2.2.1.10 → 2.2.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitmodules +3 -0
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/CONTRIBUTING.md +1 -1
- data/problem-specifications/TOPICS.txt +1 -0
- data/problem-specifications/exercises/accumulate/description.md +0 -3
- data/problem-specifications/exercises/hamming/canonical-data.json +3 -3
- data/problem-specifications/exercises/house/canonical-data.json +322 -0
- data/problem-specifications/exercises/palindrome-products/description.md +2 -2
- data/problem-specifications/exercises/simple-cipher/description.md +1 -1
- data/tracks/bash/config.json +0 -11
- data/tracks/cpp/docs/ABOUT.md +12 -37
- data/tracks/csharp/config.json +37 -0
- data/tracks/csharp/config/maintainers.json +10 -0
- data/tracks/csharp/docs/ABOUT.md +1 -1
- data/tracks/csharp/docs/RESOURCES.md +2 -2
- data/tracks/csharp/exercises/Exercises.All.sln +50 -8
- data/tracks/csharp/exercises/Exercises.Default.sln +50 -8
- data/tracks/csharp/exercises/collatz-conjecture/CollatzConjecture.cs +9 -0
- data/tracks/csharp/exercises/collatz-conjecture/CollatzConjecture.csproj +18 -0
- data/tracks/csharp/exercises/collatz-conjecture/CollatzConjectureTest.cs +43 -0
- data/tracks/csharp/exercises/collatz-conjecture/Example.cs +30 -0
- data/tracks/csharp/exercises/collatz-conjecture/README.md +38 -0
- data/tracks/csharp/exercises/diamond/Diamond.cs +1 -1
- data/tracks/csharp/exercises/diamond/Diamond.csproj +3 -1
- data/tracks/csharp/exercises/diamond/DiamondTest.cs +39 -21
- data/tracks/csharp/exercises/diamond/Example.cs +2 -2
- data/tracks/csharp/exercises/diamond/HINTS.md +3 -1
- data/tracks/csharp/exercises/spiral-matrix/Example.cs +40 -0
- data/tracks/csharp/exercises/spiral-matrix/README.md +36 -0
- data/tracks/csharp/exercises/spiral-matrix/SpiralMatrix.cs +9 -0
- data/tracks/csharp/exercises/spiral-matrix/SpiralMatrix.csproj +18 -0
- data/tracks/csharp/exercises/spiral-matrix/SpiralMatrixTest.cs +78 -0
- data/tracks/csharp/exercises/two-fer/Example.cs +16 -0
- data/tracks/csharp/exercises/two-fer/README.md +25 -0
- data/tracks/csharp/exercises/two-fer/TwoFer.cs +9 -0
- data/tracks/csharp/exercises/two-fer/TwoFer.csproj +18 -0
- data/tracks/csharp/exercises/two-fer/TwoFerTest.cs +24 -0
- data/tracks/dart/README.md +1 -1
- data/tracks/dart/docs/EXERCISE_README_INSERT.md +9 -0
- data/tracks/dart/docs/INSTALLATION.md +13 -0
- data/tracks/dart/docs/LEARNING.md +6 -0
- data/tracks/dart/docs/RESOURCES.md +7 -0
- data/tracks/dart/docs/TESTS.md +133 -0
- data/tracks/delphi/docs/ABOUT.md +18 -5
- data/tracks/delphi/docs/Getting_Started_Guide.md +930 -0
- data/tracks/delphi/exercises/hamming/uHammingExample.pas +1 -1
- data/tracks/delphi/exercises/hamming/uHammingTests.pas +15 -15
- data/tracks/ecmascript/.travis.yml +2 -1
- data/tracks/ecmascript/Makefile +19 -8
- data/tracks/ecmascript/config.json +16 -0
- data/tracks/ecmascript/exercises/accumulate/package.json +5 -5
- data/tracks/ecmascript/exercises/acronym/package.json +5 -5
- data/tracks/ecmascript/exercises/all-your-base/package.json +5 -5
- data/tracks/ecmascript/exercises/allergies/package.json +5 -5
- data/tracks/ecmascript/exercises/alphametics/package.json +5 -5
- data/tracks/ecmascript/exercises/anagram/package.json +5 -5
- data/tracks/ecmascript/exercises/atbash-cipher/package.json +5 -5
- data/tracks/ecmascript/exercises/beer-song/package.json +5 -5
- data/tracks/ecmascript/exercises/binary-search-tree/package.json +5 -5
- data/tracks/ecmascript/exercises/binary-search/package.json +5 -5
- data/tracks/ecmascript/exercises/binary/package.json +5 -5
- data/tracks/ecmascript/exercises/bob/package.json +5 -5
- data/tracks/ecmascript/exercises/bracket-push/package.json +5 -5
- data/tracks/ecmascript/exercises/circular-buffer/package.json +5 -5
- data/tracks/ecmascript/exercises/clock/package.json +5 -5
- data/tracks/ecmascript/exercises/connect/package.json +5 -5
- data/tracks/ecmascript/exercises/crypto-square/package.json +5 -5
- data/tracks/ecmascript/exercises/custom-set/package.json +5 -5
- data/tracks/ecmascript/exercises/diamond/package.json +5 -5
- data/tracks/ecmascript/exercises/difference-of-squares/package.json +5 -5
- data/tracks/ecmascript/exercises/diffie-hellman/package.json +5 -5
- data/tracks/ecmascript/exercises/etl/package.json +5 -5
- data/tracks/ecmascript/exercises/flatten-array/package.json +5 -5
- data/tracks/ecmascript/exercises/food-chain/package.json +5 -5
- data/tracks/ecmascript/exercises/gigasecond/package.json +5 -5
- data/tracks/ecmascript/exercises/grade-school/package.json +5 -5
- data/tracks/ecmascript/exercises/grains/package.json +5 -5
- data/tracks/ecmascript/exercises/hamming/package.json +5 -5
- data/tracks/ecmascript/exercises/hello-world/package.json +5 -5
- data/tracks/ecmascript/exercises/hexadecimal/package.json +5 -5
- data/tracks/ecmascript/exercises/isogram/package.json +5 -5
- data/tracks/ecmascript/exercises/kindergarten-garden/package.json +5 -5
- data/tracks/ecmascript/exercises/largest-series-product/package.json +5 -5
- data/tracks/ecmascript/exercises/leap/package.json +5 -5
- data/tracks/ecmascript/exercises/linked-list/package.json +5 -5
- data/tracks/ecmascript/exercises/list-ops/package.json +5 -5
- data/tracks/ecmascript/exercises/luhn/package.json +5 -5
- data/tracks/ecmascript/exercises/matrix/package.json +5 -5
- data/tracks/ecmascript/exercises/meetup/package.json +5 -5
- data/tracks/ecmascript/exercises/minesweeper/package.json +5 -5
- data/tracks/ecmascript/exercises/nth-prime/package.json +5 -5
- data/tracks/ecmascript/exercises/ocr-numbers/package.json +5 -5
- data/tracks/ecmascript/exercises/octal/package.json +5 -5
- data/tracks/ecmascript/exercises/palindrome-products/package.json +5 -5
- data/tracks/ecmascript/exercises/pangram/package.json +5 -5
- data/tracks/ecmascript/exercises/pascals-triangle/package.json +5 -5
- data/tracks/ecmascript/exercises/perfect-numbers/package.json +5 -5
- data/tracks/ecmascript/exercises/phone-number/package.json +5 -5
- data/tracks/ecmascript/exercises/pig-latin/package.json +5 -5
- data/tracks/ecmascript/exercises/prime-factors/package.json +5 -5
- data/tracks/ecmascript/exercises/pythagorean-triplet/package.json +5 -5
- data/tracks/ecmascript/exercises/queen-attack/package.json +5 -5
- data/tracks/ecmascript/exercises/raindrops/package.json +5 -5
- data/tracks/ecmascript/exercises/rna-transcription/package.json +5 -5
- data/tracks/ecmascript/exercises/robot-name/package.json +5 -5
- data/tracks/ecmascript/exercises/robot-simulator/package.json +5 -5
- data/tracks/ecmascript/exercises/roman-numerals/package.json +5 -5
- data/tracks/ecmascript/exercises/run-length-encoding/README.md +59 -0
- data/tracks/ecmascript/exercises/run-length-encoding/example.js +13 -0
- data/tracks/ecmascript/exercises/run-length-encoding/package.json +69 -0
- data/tracks/ecmascript/exercises/run-length-encoding/run-length-encoding.spec.js +59 -0
- data/tracks/ecmascript/exercises/saddle-points/package.json +5 -5
- data/tracks/ecmascript/exercises/say/package.json +5 -5
- data/tracks/ecmascript/exercises/scrabble-score/package.json +5 -5
- data/tracks/ecmascript/exercises/secret-handshake/package.json +5 -5
- data/tracks/ecmascript/exercises/series/package.json +5 -5
- data/tracks/ecmascript/exercises/sieve/package.json +5 -5
- data/tracks/ecmascript/exercises/simple-cipher/package.json +5 -5
- data/tracks/ecmascript/exercises/space-age/package.json +5 -5
- data/tracks/ecmascript/exercises/strain/package.json +5 -5
- data/tracks/ecmascript/exercises/sublist/package.json +5 -5
- data/tracks/ecmascript/exercises/sum-of-multiples/package.json +5 -5
- data/tracks/ecmascript/exercises/triangle/package.json +5 -5
- data/tracks/ecmascript/exercises/trinary/package.json +5 -5
- data/tracks/ecmascript/exercises/twelve-days/package.json +6 -5
- data/tracks/ecmascript/exercises/two-bucket/package.json +5 -5
- data/tracks/ecmascript/exercises/word-count/package.json +5 -5
- data/tracks/ecmascript/exercises/wordy/package.json +5 -5
- data/tracks/ecmascript/package.json +5 -5
- data/tracks/ecmascript/yarn.lock +403 -152
- data/tracks/elixir/docs/ABOUT.md +7 -20
- data/tracks/erlang/docs/ABOUT.md +4 -6
- data/tracks/fsharp/config.json +2 -1
- data/tracks/fsharp/docs/ABOUT.md +6 -2
- data/tracks/gnu-apl/.gitignore +4 -0
- data/tracks/gnu-apl/.travis.yml +5 -0
- data/tracks/gnu-apl/LICENSE +21 -0
- data/tracks/gnu-apl/README.md +67 -0
- data/tracks/gnu-apl/bin/fetch-configlet +32 -0
- data/tracks/gnu-apl/config.json +15 -0
- data/tracks/{scala/exercises/binary-search/src/main/scala/BinarySearch.scala → gnu-apl/config/exercise-readme-insert.md} +0 -0
- data/tracks/gnu-apl/config/exercise-readme.go.tmpl +16 -0
- data/tracks/gnu-apl/config/maintainers.json +6 -0
- data/tracks/gnu-apl/docs/ABOUT.md +0 -0
- data/tracks/gnu-apl/docs/INSTALLATION.md +0 -0
- data/tracks/gnu-apl/docs/LEARNING.md +0 -0
- data/tracks/gnu-apl/docs/RESOURCES.md +0 -0
- data/tracks/gnu-apl/docs/TESTS.md +0 -0
- data/tracks/gnu-apl/img/.keep +0 -0
- data/tracks/go/docs/ABOUT.md +4 -2
- data/tracks/go/exercises/pangram/example.go +1 -1
- data/tracks/go/exercises/pangram/pangram.go +1 -1
- data/tracks/go/exercises/pangram/pangram_test.go +1 -3
- data/tracks/groovy/README.md +2 -0
- data/tracks/groovy/config.json +25 -20
- data/tracks/groovy/docs/ABOUT.md +10 -3
- data/tracks/groovy/exercises/difference-of-squares/DifferenceOfSquares.groovy +19 -0
- data/tracks/groovy/exercises/difference-of-squares/{SquaresSpec.groovy → DifferenceOfSquaresSpec.groovy} +3 -3
- data/tracks/groovy/exercises/difference-of-squares/Example.groovy +1 -1
- data/tracks/groovy/exercises/hamming/Hamming.groovy +7 -0
- data/tracks/groovy/exercises/leap/Example.groovy +2 -2
- data/tracks/groovy/exercises/leap/Leap.groovy +11 -0
- data/tracks/groovy/exercises/leap/LeapSpec.groovy +4 -4
- data/tracks/groovy/exercises/nth-prime/Example.groovy +1 -1
- data/tracks/groovy/exercises/nth-prime/NthPrime.groovy +7 -0
- data/tracks/groovy/exercises/nth-prime/{PrimeSpec.groovy → NthPrimeSpec.groovy} +6 -6
- data/tracks/groovy/exercises/phone-number/PhoneNumber.groovy +17 -0
- data/tracks/groovy/exercises/raindrops/Raindrops.groovy +7 -0
- data/tracks/groovy/exercises/rna-transcription/Example.groovy +1 -1
- data/tracks/groovy/exercises/rna-transcription/RnaTranscription.groovy +7 -0
- data/tracks/groovy/exercises/rna-transcription/{ComplementSpec.groovy → RnaTranscriptionSpec.groovy} +2 -2
- data/tracks/groovy/exercises/robot-name/Example.groovy +2 -2
- data/tracks/groovy/exercises/robot-name/RobotName.groovy +9 -0
- data/tracks/groovy/exercises/robot-name/{RobotSpec.groovy → RobotNameSpec.groovy} +6 -6
- data/tracks/groovy/exercises/roman-numerals/Example.groovy +2 -2
- data/tracks/groovy/exercises/roman-numerals/RomanNumerals.groovy +7 -0
- data/tracks/groovy/exercises/roman-numerals/{RomanSpec.groovy → RomanNumeralsSpec.groovy} +2 -2
- data/tracks/groovy/exercises/word-count/Example.groovy +2 -2
- data/tracks/groovy/exercises/word-count/{Phrase.groovy → WordCount.groovy} +2 -2
- data/tracks/groovy/exercises/word-count/WordCountSpec.groovy +47 -0
- data/tracks/java/config.json +84 -74
- data/tracks/java/docs/ABOUT.md +11 -5
- data/tracks/java/exercises/house/README.md +124 -0
- data/tracks/java/exercises/house/build.gradle +18 -0
- data/tracks/java/exercises/house/src/example/java/House.java +55 -0
- data/tracks/java/exercises/house/src/main/java/.keep +0 -0
- data/tracks/java/exercises/house/src/test/java/HouseTest.java +341 -0
- data/tracks/java/exercises/minesweeper/src/example/java/MinesweeperBoard.java +3 -3
- data/tracks/java/exercises/series/src/test/java/SeriesTest.java +6 -5
- data/tracks/java/exercises/settings.gradle +1 -0
- data/tracks/java/exercises/two-fer/src/test/java/TwoferTest.java +9 -0
- data/tracks/javascript/exercises/circular-buffer/circular-buffer.spec.js +8 -0
- data/tracks/javascript/exercises/simple-cipher/README.md +1 -1
- data/tracks/kotlin/docs/ABOUT.md +7 -10
- data/tracks/lisp/.travis.yml +26 -11
- data/tracks/purescript/docs/ABOUT.md +16 -0
- data/tracks/r/config.json +1 -1
- data/tracks/r/config/maintainers.json +9 -9
- data/tracks/r/docs/ABOUT.md +9 -11
- data/tracks/r/docs/snippet.txt +10 -0
- data/tracks/ruby/docs/ABOUT.md +5 -5
- data/tracks/ruby/exercises/collatz-conjecture/.meta/generator/collatz_conjecture_case.rb +1 -2
- data/tracks/ruby/exercises/space-age/.meta/generator/space_age_case.rb +1 -2
- data/tracks/ruby/exercises/sum-of-multiples/.meta/generator/sum_of_multiples_case.rb +1 -1
- data/tracks/ruby/lib/generator/exercise_case.rb +15 -0
- data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +42 -28
- data/tracks/scala/exercises/binary-search/example.scala +1 -1
- data/tracks/scala/exercises/binary-search/src/main/scala/.keep +0 -0
- data/tracks/scala/exercises/binary-search/src/test/scala/BinarySearchTest.scala +13 -22
- data/tracks/scala/exercises/bowling/src/main/scala/.keep +0 -0
- data/tracks/scala/exercises/bowling/src/test/scala/BowlingSuite.scala +30 -17
- data/tracks/scala/exercises/change/src/test/scala/ChangeTest.scala +14 -4
- data/tracks/scala/exercises/custom-set/src/test/scala/CustomSetTest.scala +6 -4
- data/tracks/scala/exercises/food-chain/example.scala +4 -2
- data/tracks/scala/exercises/food-chain/src/test/scala/FoodChainTest.scala +170 -59
- data/tracks/scala/exercises/luhn/example.scala +9 -21
- data/tracks/scala/exercises/luhn/src/test/scala/LuhnTest.scala +46 -10
- data/tracks/scala/testgen/src/main/scala/AlphametricsTestGenerator.scala +42 -0
- data/tracks/scala/testgen/src/main/scala/BinarySearchTestGenerator.scala +32 -42
- data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +22 -7
- data/tracks/scala/testgen/src/main/scala/ChangeTestGenerator.scala +37 -0
- data/tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala +25 -20
- data/tracks/scala/testgen/src/main/scala/FoodChainTestGenerator.scala +13 -2
- data/tracks/scala/testgen/src/main/scala/LuhnTestGenerator.scala +15 -0
- data/tracks/scala/testgen/src/main/scala/TestBuilder.scala +10 -0
- data/tracks/sml/.travis.yml +9 -2
- data/tracks/sml/Makefile +42 -0
- data/tracks/sml/docs/EXERCISE_README_INSERT.md +21 -5
- data/tracks/sml/docs/RESOURCES.md +1 -1
- data/tracks/sml/docs/TESTS.md +2 -2
- metadata +67 -17
- data/tracks/bash/exercises/word-count/README.md +0 -24
- data/tracks/bash/exercises/word-count/example.awk +0 -12
- data/tracks/bash/exercises/word-count/example.sh +0 -21
- data/tracks/dart/.github/PULL_REQUEST_TEMPLATE.md +0 -23
- data/tracks/ecmascript/.babelrc +0 -3
- data/tracks/groovy/exercises/roman-numerals/Roman.groovy +0 -33
- data/tracks/groovy/exercises/word-count/PhraseSpec.groovy +0 -47
- data/tracks/scala/exercises/bowling/src/main/scala/Bowling.scala +0 -11
data/tracks/groovy/docs/ABOUT.md
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
[Groovy](http://www.groovy-lang.org/) is the Apache Foundation's powerful, optionally typed, dynamic language, which also features static-typing and static compilation capabilities.
|
2
2
|
|
3
|
-
Groovy is aimed at improving developer productivity thanks to a concise, easy to learn syntax.
|
3
|
+
Groovy is aimed at improving developer productivity thanks to a concise, easy to learn syntax.
|
4
|
+
It facilitates scripting, Domain-Specific Language authoring, runtime and compile-time meta-programming, and functional programming.
|
4
5
|
|
5
6
|
It allows access to the entire ecosystem of Java libraries, and integrates seamlessly with Java applications.
|
6
7
|
|
7
|
-
It can be used as a simple scripting language or added to complicated Java frameworks.
|
8
|
+
It can be used as a simple scripting language or added to complicated Java frameworks.
|
9
|
+
It powers technologies like:
|
10
|
+
* Gradle,
|
11
|
+
* Spock,
|
12
|
+
* Ratpack,
|
13
|
+
* Grails,
|
14
|
+
* and scripting in Jenkins.
|
8
15
|
|
9
|
-
Also, it is fun.
|
16
|
+
Also, it is fun.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class DifferenceOfSquares {
|
2
|
+
|
3
|
+
def DifferenceOfSquares(num) {
|
4
|
+
throw new UnsupportedOperationException('Constructor implementation is missing')
|
5
|
+
}
|
6
|
+
|
7
|
+
def squareOfSums() {
|
8
|
+
throw new UnsupportedOperationException('Method implementation is missing')
|
9
|
+
}
|
10
|
+
|
11
|
+
def sumOfSquares() {
|
12
|
+
throw new UnsupportedOperationException('Method implementation is missing')
|
13
|
+
}
|
14
|
+
|
15
|
+
def difference() {
|
16
|
+
throw new UnsupportedOperationException('Method implementation is missing')
|
17
|
+
}
|
18
|
+
|
19
|
+
}
|
@@ -6,7 +6,7 @@ class SquaresSpec extends Specification {
|
|
6
6
|
@Unroll("can square the sum of the numbers up to #integer")
|
7
7
|
def "can square the sum up to the given integer"() {
|
8
8
|
expect:
|
9
|
-
new
|
9
|
+
new DifferenceOfSquares(integer).squareOfSums() == result
|
10
10
|
where:
|
11
11
|
integer | result
|
12
12
|
5 | 225
|
@@ -18,7 +18,7 @@ class SquaresSpec extends Specification {
|
|
18
18
|
@Unroll("can sum the squares up to #integer")
|
19
19
|
def 'can sum the squares up to the given integer'() {
|
20
20
|
expect:
|
21
|
-
new
|
21
|
+
new DifferenceOfSquares(integer).sumOfSquares() == result
|
22
22
|
where:
|
23
23
|
integer | result
|
24
24
|
5 | 55
|
@@ -30,7 +30,7 @@ class SquaresSpec extends Specification {
|
|
30
30
|
@Unroll("can subtract sum of squares from square of sums of #integer")
|
31
31
|
def 'can subtract sum of squares from square of sums'() {
|
32
32
|
expect:
|
33
|
-
new
|
33
|
+
new DifferenceOfSquares(integer).difference() == result
|
34
34
|
where:
|
35
35
|
integer | result
|
36
36
|
0 | 0
|
@@ -4,22 +4,22 @@ import spock.lang.*
|
|
4
4
|
class LeapSpec extends Specification {
|
5
5
|
|
6
6
|
def 'a year not divisible by 4 is not a leap year'() {
|
7
|
-
expect: new
|
7
|
+
expect: new Leap(2015).isLeapYear() == false
|
8
8
|
}
|
9
9
|
|
10
10
|
@Ignore
|
11
11
|
def 'a year divisible by 4, but not 100, is a leap year'() {
|
12
|
-
expect: new
|
12
|
+
expect: new Leap(2016).isLeapYear() == true
|
13
13
|
}
|
14
14
|
|
15
15
|
@Ignore
|
16
16
|
def 'a year divisible by 100, but not 400, is not a leap year'() {
|
17
|
-
expect: new
|
17
|
+
expect: new Leap(2100).isLeapYear() == false
|
18
18
|
}
|
19
19
|
|
20
20
|
@Ignore
|
21
21
|
def 'a year divisible by 400 is a leap year'() {
|
22
|
-
expect: new
|
22
|
+
expect: new Leap(2000).isLeapYear() == true
|
23
23
|
}
|
24
24
|
|
25
25
|
}
|
@@ -1,26 +1,26 @@
|
|
1
1
|
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
|
2
2
|
import spock.lang.*
|
3
3
|
|
4
|
-
class
|
4
|
+
class NthPrimeSpec extends Specification {
|
5
5
|
|
6
6
|
def 'can calculate the first prime'() {
|
7
|
-
expect:
|
7
|
+
expect: NthPrime.nth(1) == 2
|
8
8
|
}
|
9
9
|
|
10
10
|
def 'can calculate the second prime'() {
|
11
|
-
expect:
|
11
|
+
expect: NthPrime.nth(2) == 3
|
12
12
|
}
|
13
13
|
|
14
14
|
def 'can calculate the sixth prime'() {
|
15
|
-
expect:
|
15
|
+
expect: NthPrime.nth(6) == 13
|
16
16
|
}
|
17
17
|
|
18
18
|
def 'can calculate a big prime'() {
|
19
|
-
expect:
|
19
|
+
expect: NthPrime.nth(10001) == 104743
|
20
20
|
}
|
21
21
|
|
22
22
|
def 'throws exception when asked for the zeroth prime'() {
|
23
|
-
when:
|
23
|
+
when: NthPrime.nth(0)
|
24
24
|
then: thrown(ArithmeticException)
|
25
25
|
}
|
26
26
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
class PhoneNumber {
|
2
|
+
|
3
|
+
String areaCode, exchange, subscriber
|
4
|
+
|
5
|
+
public PhoneNumber(String input) {
|
6
|
+
throw new UnsupportedOperationException('Constructor implementation is missing')
|
7
|
+
}
|
8
|
+
|
9
|
+
String getNumber() {
|
10
|
+
throw new UnsupportedOperationException('Method implementation is missing')
|
11
|
+
}
|
12
|
+
|
13
|
+
String toString() {
|
14
|
+
throw new UnsupportedOperationException('Method implementation is missing')
|
15
|
+
}
|
16
|
+
|
17
|
+
}
|
data/tracks/groovy/exercises/rna-transcription/{ComplementSpec.groovy → RnaTranscriptionSpec.groovy}
RENAMED
@@ -1,10 +1,10 @@
|
|
1
1
|
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
|
2
2
|
import spock.lang.*
|
3
3
|
|
4
|
-
class
|
4
|
+
class RnaTranscriptionSpec extends Specification {
|
5
5
|
|
6
6
|
@Shared
|
7
|
-
def complement = new
|
7
|
+
def complement = new RnaTranscription()
|
8
8
|
|
9
9
|
def 'the rna complement of cytosine is guanine'() {
|
10
10
|
expect: complement.ofDNA('C') == 'G'
|
@@ -1,16 +1,16 @@
|
|
1
1
|
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
|
2
2
|
import spock.lang.*
|
3
3
|
|
4
|
-
class
|
4
|
+
class RobotNameSpec extends Specification {
|
5
5
|
|
6
6
|
def 'generates a name'() {
|
7
|
-
expect: new
|
7
|
+
expect: new RobotName().name =~ /^[a-zA-Z]{2}\d{3}$/
|
8
8
|
}
|
9
9
|
|
10
10
|
@Ignore
|
11
11
|
def 'generates the same name when called again'() {
|
12
12
|
given:
|
13
|
-
def robot = new
|
13
|
+
def robot = new RobotName()
|
14
14
|
expect:
|
15
15
|
robot.name == robot.name
|
16
16
|
}
|
@@ -18,8 +18,8 @@ class RobotSpec extends Specification {
|
|
18
18
|
@Ignore
|
19
19
|
def 'different robots generate different names'() {
|
20
20
|
given:
|
21
|
-
def robot = new
|
22
|
-
def other_robot = new
|
21
|
+
def robot = new RobotName()
|
22
|
+
def other_robot = new RobotName()
|
23
23
|
expect:
|
24
24
|
robot.name != other_robot.name
|
25
25
|
}
|
@@ -27,7 +27,7 @@ class RobotSpec extends Specification {
|
|
27
27
|
@Ignore
|
28
28
|
def 'can be reset to generate another name'() {
|
29
29
|
given:
|
30
|
-
def robot = new
|
30
|
+
def robot = new RobotName()
|
31
31
|
def name_before_reset = robot.name
|
32
32
|
robot.reset()
|
33
33
|
def name_after_reset = robot.name
|
@@ -1,10 +1,10 @@
|
|
1
1
|
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
|
2
2
|
import spock.lang.*
|
3
3
|
|
4
|
-
class
|
4
|
+
class RomanNumeralsSpec extends Specification {
|
5
5
|
|
6
6
|
// register metaclass on Integers
|
7
|
-
def setup() { new
|
7
|
+
def setup() { new RomanNumerals() }
|
8
8
|
|
9
9
|
@Unroll
|
10
10
|
def "can convert arabic #arabic to roman #roman"() {
|
@@ -0,0 +1,47 @@
|
|
1
|
+
@Grab('org.spockframework:spock-core:1.0-groovy-2.4')
|
2
|
+
import spock.lang.*
|
3
|
+
|
4
|
+
class WordCountSpec extends Specification {
|
5
|
+
|
6
|
+
def 'count one word' () {
|
7
|
+
expect: ["word":1] == new WordCount("word").wordCount()
|
8
|
+
}
|
9
|
+
|
10
|
+
def 'count one of each' () {
|
11
|
+
expect: ["one":1,"of":1,"each":1] == new WordCount("one of each").wordCount()
|
12
|
+
}
|
13
|
+
|
14
|
+
def 'count multiple occurrences' () {
|
15
|
+
def wordCount = new WordCount("one fish two fish red fish blue fish")
|
16
|
+
expect: ["one":1,"fish":4,"two":1,"red":1,"blue":1] == wordCount.wordCount()
|
17
|
+
}
|
18
|
+
|
19
|
+
def 'count everything only once' () {
|
20
|
+
def wordCount = new WordCount("all the kings horses and all the kings men")
|
21
|
+
// call wordCount 2x to verify
|
22
|
+
wordCount.wordCount()
|
23
|
+
expect: ["all":2,"the":2,"kings":2,"horses":1,"and":1,"men":1] == wordCount.wordCount()
|
24
|
+
}
|
25
|
+
|
26
|
+
def 'ignore punctuation' () {
|
27
|
+
def wordCount = new WordCount('car : carpet as java : javascript!!&@$%^&')
|
28
|
+
expect: ["car":1,"carpet":1,"as":1,"java":1,"javascript":1] == wordCount.wordCount()
|
29
|
+
}
|
30
|
+
|
31
|
+
def 'handle no spaces' () {
|
32
|
+
expect: ["one":1,"two":1,"three":1] == new WordCount("one,two,three").wordCount()
|
33
|
+
}
|
34
|
+
|
35
|
+
def 'include numbers' () {
|
36
|
+
expect: ["testing":2,"1":1,"2":1] == new WordCount("testing, 1, 2 testing").wordCount()
|
37
|
+
}
|
38
|
+
|
39
|
+
def 'normalize case' () {
|
40
|
+
expect: ["go":3] == new WordCount("go Go GO").wordCount()
|
41
|
+
}
|
42
|
+
|
43
|
+
def 'handle apostrophes' () {
|
44
|
+
def wordCount = new WordCount("First: don't laugh. Then: don't cry.")
|
45
|
+
expect: ["first":1,"don't":2,"laugh":1,"then":1,"cry":1] == wordCount.wordCount()
|
46
|
+
}
|
47
|
+
}
|
data/tracks/java/config.json
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
{
|
6
6
|
"uuid": "f77dc7e3-35a8-4300-a7c8-2c1765e9644d",
|
7
7
|
"slug": "hello-world",
|
8
|
-
"core":
|
8
|
+
"core": true,
|
9
9
|
"unlocked_by": null,
|
10
10
|
"difficulty": 1,
|
11
11
|
"topics": [
|
@@ -15,7 +15,7 @@
|
|
15
15
|
{
|
16
16
|
"uuid": "74515d45-565b-4be2-96c4-77e58efa9257",
|
17
17
|
"slug": "two-fer",
|
18
|
-
"core":
|
18
|
+
"core": true,
|
19
19
|
"unlocked_by": null,
|
20
20
|
"difficulty": 1,
|
21
21
|
"topics": [
|
@@ -45,7 +45,7 @@
|
|
45
45
|
{
|
46
46
|
"uuid": "ce899ca6-9cc7-47ba-b76f-1bbcf2630b76",
|
47
47
|
"slug": "hamming",
|
48
|
-
"core":
|
48
|
+
"core": true,
|
49
49
|
"unlocked_by": null,
|
50
50
|
"difficulty": 3,
|
51
51
|
"topics": [
|
@@ -55,7 +55,7 @@
|
|
55
55
|
{
|
56
56
|
"uuid": "bf1641c8-dc0d-4d38-9cfe-b4c132ea3553",
|
57
57
|
"slug": "gigasecond",
|
58
|
-
"core":
|
58
|
+
"core": true,
|
59
59
|
"unlocked_by": null,
|
60
60
|
"difficulty": 3,
|
61
61
|
"topics": [
|
@@ -85,7 +85,7 @@
|
|
85
85
|
{
|
86
86
|
"uuid": "afae9f2d-8baf-4bd7-8d7c-d486337f7c97",
|
87
87
|
"slug": "scrabble-score",
|
88
|
-
"core":
|
88
|
+
"core": true,
|
89
89
|
"unlocked_by": null,
|
90
90
|
"difficulty": 3,
|
91
91
|
"topics": [
|
@@ -96,7 +96,7 @@
|
|
96
96
|
"uuid": "d916e4f8-fda1-41c0-ab24-79e8fc3f1272",
|
97
97
|
"slug": "raindrops",
|
98
98
|
"core": false,
|
99
|
-
"unlocked_by":
|
99
|
+
"unlocked_by": "two-fer",
|
100
100
|
"difficulty": 3,
|
101
101
|
"topics": [
|
102
102
|
|
@@ -105,7 +105,7 @@
|
|
105
105
|
{
|
106
106
|
"uuid": "b0da59c6-1b55-405c-b163-007ebf09f5e8",
|
107
107
|
"slug": "difference-of-squares",
|
108
|
-
"core":
|
108
|
+
"core": true,
|
109
109
|
"unlocked_by": null,
|
110
110
|
"difficulty": 3,
|
111
111
|
"topics": [
|
@@ -115,7 +115,7 @@
|
|
115
115
|
{
|
116
116
|
"uuid": "71c7c174-7e2c-43c2-bdd6-7515fcb12a91",
|
117
117
|
"slug": "secret-handshake",
|
118
|
-
"core":
|
118
|
+
"core": true,
|
119
119
|
"unlocked_by": null,
|
120
120
|
"difficulty": 3,
|
121
121
|
"topics": [
|
@@ -126,7 +126,7 @@
|
|
126
126
|
"uuid": "d0dcc898-ec38-4822-9e3c-1a1829c9b2d9",
|
127
127
|
"slug": "perfect-numbers",
|
128
128
|
"core": false,
|
129
|
-
"unlocked_by":
|
129
|
+
"unlocked_by": "difference-of-squares",
|
130
130
|
"difficulty": 3,
|
131
131
|
"topics": [
|
132
132
|
|
@@ -136,7 +136,7 @@
|
|
136
136
|
"uuid": "2f244afc-3e7b-4f89-92af-e2b427f4ef35",
|
137
137
|
"slug": "sum-of-multiples",
|
138
138
|
"core": false,
|
139
|
-
"unlocked_by":
|
139
|
+
"unlocked_by": "perfect-numbers",
|
140
140
|
"difficulty": 4,
|
141
141
|
"topics": [
|
142
142
|
|
@@ -146,7 +146,7 @@
|
|
146
146
|
"uuid": "5227a76c-8ecb-4e5f-b023-6af65a057c41",
|
147
147
|
"slug": "luhn",
|
148
148
|
"core": false,
|
149
|
-
"unlocked_by":
|
149
|
+
"unlocked_by": "hamming",
|
150
150
|
"difficulty": 4,
|
151
151
|
"topics": [
|
152
152
|
|
@@ -155,7 +155,7 @@
|
|
155
155
|
{
|
156
156
|
"uuid": "c1d4e0b4-6a0f-4be9-8222-345966621f53",
|
157
157
|
"slug": "matrix",
|
158
|
-
"core":
|
158
|
+
"core": true,
|
159
159
|
"unlocked_by": null,
|
160
160
|
"difficulty": 4,
|
161
161
|
"topics": [
|
@@ -165,7 +165,7 @@
|
|
165
165
|
{
|
166
166
|
"uuid": "ec268d8e-997b-4553-8c67-8bdfa1ecb888",
|
167
167
|
"slug": "triangle",
|
168
|
-
"core":
|
168
|
+
"core": true,
|
169
169
|
"unlocked_by": null,
|
170
170
|
"difficulty": 4,
|
171
171
|
"topics": [
|
@@ -176,7 +176,7 @@
|
|
176
176
|
"uuid": "b7310b6e-435c-4d5f-b2bd-31e586d0f238",
|
177
177
|
"slug": "largest-series-product",
|
178
178
|
"core": false,
|
179
|
-
"unlocked_by":
|
179
|
+
"unlocked_by": "luhn",
|
180
180
|
"difficulty": 4,
|
181
181
|
"topics": [
|
182
182
|
|
@@ -186,7 +186,7 @@
|
|
186
186
|
"uuid": "6791d01f-bae4-4b63-ae76-86529ac49e36",
|
187
187
|
"slug": "sieve",
|
188
188
|
"core": false,
|
189
|
-
"unlocked_by":
|
189
|
+
"unlocked_by": "sum-of-multiples",
|
190
190
|
"difficulty": 4,
|
191
191
|
"topics": [
|
192
192
|
|
@@ -196,7 +196,7 @@
|
|
196
196
|
"uuid": "581afdbb-dfb6-4dc5-9554-a025b5469a3c",
|
197
197
|
"slug": "twelve-days",
|
198
198
|
"core": false,
|
199
|
-
"unlocked_by":
|
199
|
+
"unlocked_by": "raindrops",
|
200
200
|
"difficulty": 4,
|
201
201
|
"topics": [
|
202
202
|
|
@@ -205,7 +205,7 @@
|
|
205
205
|
{
|
206
206
|
"uuid": "9eb41883-55ef-4681-b5ac-5c2259302772",
|
207
207
|
"slug": "rotational-cipher",
|
208
|
-
"core":
|
208
|
+
"core": true,
|
209
209
|
"unlocked_by": null,
|
210
210
|
"difficulty": 4,
|
211
211
|
"topics": [
|
@@ -216,7 +216,7 @@
|
|
216
216
|
"uuid": "0b92ffee-c092-4ab1-ad78-76c8cf80e1b5",
|
217
217
|
"slug": "kindergarten-garden",
|
218
218
|
"core": false,
|
219
|
-
"unlocked_by":
|
219
|
+
"unlocked_by": "matrix",
|
220
220
|
"difficulty": 4,
|
221
221
|
"topics": [
|
222
222
|
|
@@ -226,7 +226,7 @@
|
|
226
226
|
"uuid": "1500d39a-c9d9-4d3a-9e77-fdc1837fc6ad",
|
227
227
|
"slug": "collatz-conjecture",
|
228
228
|
"core": false,
|
229
|
-
"unlocked_by":
|
229
|
+
"unlocked_by": "triangle",
|
230
230
|
"difficulty": 4,
|
231
231
|
"topics": [
|
232
232
|
|
@@ -236,7 +236,7 @@
|
|
236
236
|
"uuid": "2c69db99-648d-4bd7-8012-1fbdeff6ca0a",
|
237
237
|
"slug": "nth-prime",
|
238
238
|
"core": false,
|
239
|
-
"unlocked_by":
|
239
|
+
"unlocked_by": "collatz-conjecture",
|
240
240
|
"difficulty": 4,
|
241
241
|
"topics": [
|
242
242
|
|
@@ -245,7 +245,7 @@
|
|
245
245
|
{
|
246
246
|
"uuid": "8dfc2f0d-1141-46e9-95e2-6f35ccf6f160",
|
247
247
|
"slug": "saddle-points",
|
248
|
-
"core":
|
248
|
+
"core": true,
|
249
249
|
"unlocked_by": null,
|
250
250
|
"difficulty": 4,
|
251
251
|
"topics": [
|
@@ -256,7 +256,7 @@
|
|
256
256
|
"uuid": "ecbd997b-86f4-4e11-9ff0-706ac2899415",
|
257
257
|
"slug": "diamond",
|
258
258
|
"core": false,
|
259
|
-
"unlocked_by":
|
259
|
+
"unlocked_by": "twelve-days",
|
260
260
|
"difficulty": 4,
|
261
261
|
"topics": [
|
262
262
|
|
@@ -266,7 +266,7 @@
|
|
266
266
|
"uuid": "c3e89c7c-3a8a-4ddc-b653-9b0ff9e1d7d8",
|
267
267
|
"slug": "isogram",
|
268
268
|
"core": false,
|
269
|
-
"unlocked_by":
|
269
|
+
"unlocked_by": "pangram",
|
270
270
|
"difficulty": 4,
|
271
271
|
"topics": [
|
272
272
|
|
@@ -275,7 +275,7 @@
|
|
275
275
|
{
|
276
276
|
"uuid": "a732a838-8170-458a-a85e-d6b4c46f97a1",
|
277
277
|
"slug": "flatten-array",
|
278
|
-
"core":
|
278
|
+
"core": true,
|
279
279
|
"unlocked_by": null,
|
280
280
|
"difficulty": 5,
|
281
281
|
"topics": [
|
@@ -286,7 +286,7 @@
|
|
286
286
|
"uuid": "38bc80ae-d842-4c04-a797-48edf322504d",
|
287
287
|
"slug": "pig-latin",
|
288
288
|
"core": false,
|
289
|
-
"unlocked_by":
|
289
|
+
"unlocked_by": "rna-transcription",
|
290
290
|
"difficulty": 5,
|
291
291
|
"topics": [
|
292
292
|
|
@@ -296,7 +296,7 @@
|
|
296
296
|
"uuid": "5f9139e7-9fbb-496a-a0d7-a946283033de",
|
297
297
|
"slug": "phone-number",
|
298
298
|
"core": false,
|
299
|
-
"unlocked_by":
|
299
|
+
"unlocked_by": "largest-series-product",
|
300
300
|
"difficulty": 5,
|
301
301
|
"topics": [
|
302
302
|
|
@@ -306,7 +306,7 @@
|
|
306
306
|
"uuid": "2d80fdfc-5bd7-4b67-9fbe-8ab820d89051",
|
307
307
|
"slug": "nucleotide-count",
|
308
308
|
"core": false,
|
309
|
-
"unlocked_by":
|
309
|
+
"unlocked_by": "phone-number",
|
310
310
|
"difficulty": 5,
|
311
311
|
"topics": [
|
312
312
|
|
@@ -315,7 +315,7 @@
|
|
315
315
|
{
|
316
316
|
"uuid": "3603b770-87a5-4758-91f3-b4d1f9075bc1",
|
317
317
|
"slug": "word-count",
|
318
|
-
"core":
|
318
|
+
"core": true,
|
319
319
|
"unlocked_by": null,
|
320
320
|
"difficulty": 5,
|
321
321
|
"topics": [
|
@@ -326,7 +326,7 @@
|
|
326
326
|
"uuid": "4499a3f9-73a7-48bf-8753-d5b6abf588c9",
|
327
327
|
"slug": "run-length-encoding",
|
328
328
|
"core": false,
|
329
|
-
"unlocked_by":
|
329
|
+
"unlocked_by": "rotational-cipher",
|
330
330
|
"difficulty": 5,
|
331
331
|
"topics": [
|
332
332
|
|
@@ -335,7 +335,7 @@
|
|
335
335
|
{
|
336
336
|
"uuid": "d7c2eed9-64c7-4c4a-b45d-c787d460337f",
|
337
337
|
"slug": "robot-name",
|
338
|
-
"core":
|
338
|
+
"core": true,
|
339
339
|
"unlocked_by": null,
|
340
340
|
"difficulty": 5,
|
341
341
|
"topics": [
|
@@ -346,7 +346,7 @@
|
|
346
346
|
"uuid": "599c08ec-7338-46ed-99f8-a76f78f724e6",
|
347
347
|
"slug": "prime-factors",
|
348
348
|
"core": false,
|
349
|
-
"unlocked_by":
|
349
|
+
"unlocked_by": "nth-prime",
|
350
350
|
"difficulty": 5,
|
351
351
|
"topics": [
|
352
352
|
|
@@ -356,7 +356,7 @@
|
|
356
356
|
"uuid": "6a617ddb-04e3-451c-bb30-27ccd0be9125",
|
357
357
|
"slug": "allergies",
|
358
358
|
"core": false,
|
359
|
-
"unlocked_by":
|
359
|
+
"unlocked_by": "secret-handshake",
|
360
360
|
"difficulty": 5,
|
361
361
|
"topics": [
|
362
362
|
|
@@ -366,7 +366,7 @@
|
|
366
366
|
"uuid": "34cd328c-cd96-492b-abd4-2b8716cdcd9a",
|
367
367
|
"slug": "bob",
|
368
368
|
"core": false,
|
369
|
-
"unlocked_by":
|
369
|
+
"unlocked_by": "diamond",
|
370
370
|
"difficulty": 5,
|
371
371
|
"topics": [
|
372
372
|
|
@@ -376,7 +376,7 @@
|
|
376
376
|
"uuid": "d2a76905-1c8c-4b03-b4f7-4fbff19329f3",
|
377
377
|
"slug": "pascals-triangle",
|
378
378
|
"core": false,
|
379
|
-
"unlocked_by":
|
379
|
+
"unlocked_by": "kindergarten-garden",
|
380
380
|
"difficulty": 5,
|
381
381
|
"topics": [
|
382
382
|
|
@@ -386,7 +386,7 @@
|
|
386
386
|
"uuid": "85aa50ac-0141-49eb-bc6f-62f3f7a97647",
|
387
387
|
"slug": "bracket-push",
|
388
388
|
"core": false,
|
389
|
-
"unlocked_by":
|
389
|
+
"unlocked_by": "flatten-array",
|
390
390
|
"difficulty": 5,
|
391
391
|
"topics": [
|
392
392
|
|
@@ -396,7 +396,7 @@
|
|
396
396
|
"uuid": "af80d7f4-c7d0-4d0b-9c30-09da120f6bb9",
|
397
397
|
"slug": "series",
|
398
398
|
"core": false,
|
399
|
-
"unlocked_by":
|
399
|
+
"unlocked_by": "nucleotide-count",
|
400
400
|
"difficulty": 5,
|
401
401
|
"topics": [
|
402
402
|
|
@@ -406,7 +406,7 @@
|
|
406
406
|
"uuid": "d36ce010-210f-4e9a-9d6c-cb933e0a59af",
|
407
407
|
"slug": "atbash-cipher",
|
408
408
|
"core": false,
|
409
|
-
"unlocked_by":
|
409
|
+
"unlocked_by": "run-length-encoding",
|
410
410
|
"difficulty": 5,
|
411
411
|
"topics": [
|
412
412
|
|
@@ -416,7 +416,7 @@
|
|
416
416
|
"uuid": "163fcc6b-c054-4232-a88b-0aded846a6eb",
|
417
417
|
"slug": "spiral-matrix",
|
418
418
|
"core": false,
|
419
|
-
"unlocked_by":
|
419
|
+
"unlocked_by": "pascals-triangle",
|
420
420
|
"difficulty": 6,
|
421
421
|
"topics": [
|
422
422
|
|
@@ -426,7 +426,7 @@
|
|
426
426
|
"uuid": "3e728cd4-5e5f-4c69-8a53-bc36d020fcdb",
|
427
427
|
"slug": "roman-numerals",
|
428
428
|
"core": false,
|
429
|
-
"unlocked_by":
|
429
|
+
"unlocked_by": "series",
|
430
430
|
"difficulty": 6,
|
431
431
|
"topics": [
|
432
432
|
|
@@ -436,7 +436,17 @@
|
|
436
436
|
"uuid": "57b76837-4610-466f-9373-d5c2697625f1",
|
437
437
|
"slug": "transpose",
|
438
438
|
"core": false,
|
439
|
-
"unlocked_by":
|
439
|
+
"unlocked_by": "spiral-matrix",
|
440
|
+
"difficulty": 6,
|
441
|
+
"topics": [
|
442
|
+
|
443
|
+
]
|
444
|
+
},
|
445
|
+
{
|
446
|
+
"uuid": "6b51aca3-3451-4a64-ad7b-00b151d7548a",
|
447
|
+
"slug": "house",
|
448
|
+
"core": false,
|
449
|
+
"unlocked_by": "bob",
|
440
450
|
"difficulty": 6,
|
441
451
|
"topics": [
|
442
452
|
|
@@ -446,7 +456,7 @@
|
|
446
456
|
"uuid": "dd3e6fd6-5359-4978-acd7-c39374cead4d",
|
447
457
|
"slug": "food-chain",
|
448
458
|
"core": false,
|
449
|
-
"unlocked_by":
|
459
|
+
"unlocked_by": "house",
|
450
460
|
"difficulty": 6,
|
451
461
|
"topics": [
|
452
462
|
|
@@ -456,7 +466,7 @@
|
|
456
466
|
"uuid": "56943095-de76-40bf-b42b-fa3e70f8df5e",
|
457
467
|
"slug": "beer-song",
|
458
468
|
"core": false,
|
459
|
-
"unlocked_by":
|
469
|
+
"unlocked_by": "food-chain",
|
460
470
|
"difficulty": 6,
|
461
471
|
"topics": [
|
462
472
|
|
@@ -466,7 +476,7 @@
|
|
466
476
|
"uuid": "5404109e-3ed9-4691-8eaf-af8b36024a44",
|
467
477
|
"slug": "queen-attack",
|
468
478
|
"core": false,
|
469
|
-
"unlocked_by":
|
479
|
+
"unlocked_by": "scrabble-score",
|
470
480
|
"difficulty": 6,
|
471
481
|
"topics": [
|
472
482
|
|
@@ -476,7 +486,7 @@
|
|
476
486
|
"uuid": "76d28d97-75d3-47eb-bb77-3d347b76f1b6",
|
477
487
|
"slug": "etl",
|
478
488
|
"core": false,
|
479
|
-
"unlocked_by":
|
489
|
+
"unlocked_by": "word-count",
|
480
490
|
"difficulty": 6,
|
481
491
|
"topics": [
|
482
492
|
|
@@ -485,7 +495,7 @@
|
|
485
495
|
{
|
486
496
|
"uuid": "7ba5084d-3b75-4406-a0d7-87c26387f9c0",
|
487
497
|
"slug": "linked-list",
|
488
|
-
"core":
|
498
|
+
"core": true,
|
489
499
|
"unlocked_by": null,
|
490
500
|
"difficulty": 6,
|
491
501
|
"topics": [
|
@@ -496,7 +506,7 @@
|
|
496
506
|
"uuid": "b4af5da1-601f-4b0f-bfb8-4a381851090c",
|
497
507
|
"slug": "grade-school",
|
498
508
|
"core": false,
|
499
|
-
"unlocked_by":
|
509
|
+
"unlocked_by": "etl",
|
500
510
|
"difficulty": 6,
|
501
511
|
"topics": [
|
502
512
|
|
@@ -506,7 +516,7 @@
|
|
506
516
|
"uuid": "993bde9d-7774-4e7a-a381-9eee75f28ecb",
|
507
517
|
"slug": "robot-simulator",
|
508
518
|
"core": false,
|
509
|
-
"unlocked_by":
|
519
|
+
"unlocked_by": "allergies",
|
510
520
|
"difficulty": 6,
|
511
521
|
"topics": [
|
512
522
|
|
@@ -515,7 +525,7 @@
|
|
515
525
|
{
|
516
526
|
"uuid": "50136dc3-caf7-4fa1-b7bd-0cba1bea9176",
|
517
527
|
"slug": "binary-search",
|
518
|
-
"core":
|
528
|
+
"core": true,
|
519
529
|
"unlocked_by": null,
|
520
530
|
"difficulty": 6,
|
521
531
|
"topics": [
|
@@ -526,7 +536,7 @@
|
|
526
536
|
"uuid": "416a1489-12af-4593-8540-0f55285c96b4",
|
527
537
|
"slug": "minesweeper",
|
528
538
|
"core": false,
|
529
|
-
"unlocked_by":
|
539
|
+
"unlocked_by": "queen-attack",
|
530
540
|
"difficulty": 6,
|
531
541
|
"topics": [
|
532
542
|
|
@@ -536,7 +546,7 @@
|
|
536
546
|
"uuid": "3310a3cd-c0cb-45fa-8c51-600178be904a",
|
537
547
|
"slug": "wordy",
|
538
548
|
"core": false,
|
539
|
-
"unlocked_by":
|
549
|
+
"unlocked_by": "robot-simulator",
|
540
550
|
"difficulty": 6,
|
541
551
|
"topics": [
|
542
552
|
|
@@ -546,7 +556,7 @@
|
|
546
556
|
"uuid": "f7c2e4b5-1995-4dfe-b827-c9aff8ac5332",
|
547
557
|
"slug": "all-your-base",
|
548
558
|
"core": false,
|
549
|
-
"unlocked_by":
|
559
|
+
"unlocked_by": "sieve",
|
550
560
|
"difficulty": 6,
|
551
561
|
"topics": [
|
552
562
|
|
@@ -555,7 +565,7 @@
|
|
555
565
|
{
|
556
566
|
"uuid": "a242efc5-159d-492b-861d-12a1459fb334",
|
557
567
|
"slug": "bank-account",
|
558
|
-
"core":
|
568
|
+
"core": true,
|
559
569
|
"unlocked_by": null,
|
560
570
|
"difficulty": 6,
|
561
571
|
"topics": [
|
@@ -566,7 +576,7 @@
|
|
566
576
|
"uuid": "4b3f7771-c642-4278-a3d9-2fb958f26361",
|
567
577
|
"slug": "bowling",
|
568
578
|
"core": false,
|
569
|
-
"unlocked_by":
|
579
|
+
"unlocked_by": "minesweeper",
|
570
580
|
"difficulty": 6,
|
571
581
|
"topics": [
|
572
582
|
|
@@ -576,7 +586,7 @@
|
|
576
586
|
"uuid": "fb10dc2f-0ba1-44b6-8365-5e48e86d1283",
|
577
587
|
"slug": "anagram",
|
578
588
|
"core": false,
|
579
|
-
"unlocked_by":
|
589
|
+
"unlocked_by": "isogram",
|
580
590
|
"difficulty": 7,
|
581
591
|
"topics": [
|
582
592
|
|
@@ -586,7 +596,7 @@
|
|
586
596
|
"uuid": "d2aedbd7-092a-43d0-8a5e-ae3ebd5b9c7f",
|
587
597
|
"slug": "sublist",
|
588
598
|
"core": false,
|
589
|
-
"unlocked_by":
|
599
|
+
"unlocked_by": "linked-list",
|
590
600
|
"difficulty": 7,
|
591
601
|
"topics": [
|
592
602
|
|
@@ -596,7 +606,7 @@
|
|
596
606
|
"uuid": "b53bde52-cb5f-4d43-86ec-18aa509d62f9",
|
597
607
|
"slug": "word-search",
|
598
608
|
"core": false,
|
599
|
-
"unlocked_by":
|
609
|
+
"unlocked_by": "bowling",
|
600
610
|
"difficulty": 7,
|
601
611
|
"topics": [
|
602
612
|
|
@@ -606,7 +616,7 @@
|
|
606
616
|
"uuid": "e3e5ffe5-cfc1-467e-a28a-da0302130144",
|
607
617
|
"slug": "simple-linked-list",
|
608
618
|
"core": false,
|
609
|
-
"unlocked_by":
|
619
|
+
"unlocked_by": "sublist",
|
610
620
|
"difficulty": 7,
|
611
621
|
"topics": [
|
612
622
|
|
@@ -616,7 +626,7 @@
|
|
616
626
|
"uuid": "0a2d18aa-7b5e-4401-a952-b93d2060694f",
|
617
627
|
"slug": "binary-search-tree",
|
618
628
|
"core": false,
|
619
|
-
"unlocked_by":
|
629
|
+
"unlocked_by": "binary-search",
|
620
630
|
"difficulty": 7,
|
621
631
|
"topics": [
|
622
632
|
|
@@ -626,7 +636,7 @@
|
|
626
636
|
"uuid": "602511d5-7e89-4def-b072-4dd311816810",
|
627
637
|
"slug": "meetup",
|
628
638
|
"core": false,
|
629
|
-
"unlocked_by":
|
639
|
+
"unlocked_by": "gigasecond",
|
630
640
|
"difficulty": 7,
|
631
641
|
"topics": [
|
632
642
|
|
@@ -636,7 +646,7 @@
|
|
636
646
|
"uuid": "162bebdc-9bf2-43c0-8460-a91f5fc16147",
|
637
647
|
"slug": "crypto-square",
|
638
648
|
"core": false,
|
639
|
-
"unlocked_by":
|
649
|
+
"unlocked_by": "atbash-cipher",
|
640
650
|
"difficulty": 7,
|
641
651
|
"topics": [
|
642
652
|
|
@@ -646,7 +656,7 @@
|
|
646
656
|
"uuid": "57eeac00-741c-4843-907a-51f0ac5ea4cb",
|
647
657
|
"slug": "poker",
|
648
658
|
"core": false,
|
649
|
-
"unlocked_by":
|
659
|
+
"unlocked_by": "word-search",
|
650
660
|
"difficulty": 7,
|
651
661
|
"topics": [
|
652
662
|
"Parsing",
|
@@ -658,7 +668,7 @@
|
|
658
668
|
"uuid": "97c8fcd4-85b6-41cb-9de2-b4e1b4951222",
|
659
669
|
"slug": "clock",
|
660
670
|
"core": false,
|
661
|
-
"unlocked_by":
|
671
|
+
"unlocked_by": "all-your-base",
|
662
672
|
"difficulty": 7,
|
663
673
|
"topics": [
|
664
674
|
|
@@ -668,7 +678,7 @@
|
|
668
678
|
"uuid": "5cbc6a67-3a53-4aad-ae68-ff469525437f",
|
669
679
|
"slug": "ocr-numbers",
|
670
680
|
"core": false,
|
671
|
-
"unlocked_by":
|
681
|
+
"unlocked_by": "roman-numerals",
|
672
682
|
"difficulty": 8,
|
673
683
|
"topics": [
|
674
684
|
|
@@ -678,7 +688,7 @@
|
|
678
688
|
"uuid": "626dc25a-062c-4053-a8c1-788e4dc44ca0",
|
679
689
|
"slug": "circular-buffer",
|
680
690
|
"core": false,
|
681
|
-
"unlocked_by":
|
691
|
+
"unlocked_by": "simple-linked-list",
|
682
692
|
"difficulty": 8,
|
683
693
|
"topics": [
|
684
694
|
"Queues",
|
@@ -690,7 +700,7 @@
|
|
690
700
|
"uuid": "64cda115-919a-4eef-9a45-9ec5d1af98cc",
|
691
701
|
"slug": "rectangles",
|
692
702
|
"core": false,
|
693
|
-
"unlocked_by":
|
703
|
+
"unlocked_by": "ocr-numbers",
|
694
704
|
"difficulty": 8,
|
695
705
|
"topics": [
|
696
706
|
|
@@ -700,7 +710,7 @@
|
|
700
710
|
"uuid": "e5f05d00-fe5b-4d78-b2fa-934c1c9afb32",
|
701
711
|
"slug": "book-store",
|
702
712
|
"core": false,
|
703
|
-
"unlocked_by":
|
713
|
+
"unlocked_by": "bracket-push",
|
704
714
|
"difficulty": 8,
|
705
715
|
"topics": [
|
706
716
|
|
@@ -710,7 +720,7 @@
|
|
710
720
|
"uuid": "f654831f-c34b-44f5-9dd5-054efbb486f2",
|
711
721
|
"slug": "simple-cipher",
|
712
722
|
"core": false,
|
713
|
-
"unlocked_by":
|
723
|
+
"unlocked_by": "crypto-square",
|
714
724
|
"difficulty": 8,
|
715
725
|
"topics": [
|
716
726
|
|
@@ -720,7 +730,7 @@
|
|
720
730
|
"uuid": "52d11278-0d65-4b5b-b387-1374fced3243",
|
721
731
|
"slug": "complex-numbers",
|
722
732
|
"core": false,
|
723
|
-
"unlocked_by":
|
733
|
+
"unlocked_by": "prime-factors",
|
724
734
|
"difficulty": 8,
|
725
735
|
"topics": [
|
726
736
|
|
@@ -730,7 +740,7 @@
|
|
730
740
|
"uuid": "a9836565-5c39-4285-b83a-53408be36ccc",
|
731
741
|
"slug": "list-ops",
|
732
742
|
"core": false,
|
733
|
-
"unlocked_by":
|
743
|
+
"unlocked_by": "circular-buffer",
|
734
744
|
"difficulty": 8,
|
735
745
|
"topics": [
|
736
746
|
|
@@ -740,7 +750,7 @@
|
|
740
750
|
"uuid": "bac1f4bc-eea9-43c1-8e95-097347f5925e",
|
741
751
|
"slug": "change",
|
742
752
|
"core": false,
|
743
|
-
"unlocked_by":
|
753
|
+
"unlocked_by": "book-store",
|
744
754
|
"difficulty": 8,
|
745
755
|
"topics": [
|
746
756
|
|
@@ -750,7 +760,7 @@
|
|
750
760
|
"uuid": "873c05de-b5f5-4c5b-97f0-d1ede8a82832",
|
751
761
|
"slug": "palindrome-products",
|
752
762
|
"core": false,
|
753
|
-
"unlocked_by":
|
763
|
+
"unlocked_by": "clock",
|
754
764
|
"difficulty": 8,
|
755
765
|
"topics": [
|
756
766
|
|
@@ -760,7 +770,7 @@
|
|
760
770
|
"uuid": "88505f95-89e5-4a08-8ed2-208eb818cdf1",
|
761
771
|
"slug": "pythagorean-triplet",
|
762
772
|
"core": false,
|
763
|
-
"unlocked_by":
|
773
|
+
"unlocked_by": "complex-numbers",
|
764
774
|
"difficulty": 9,
|
765
775
|
"topics": [
|
766
776
|
|
@@ -770,7 +780,7 @@
|
|
770
780
|
"uuid": "f0c0316d-3fb5-455e-952a-91161e7fb298",
|
771
781
|
"slug": "forth",
|
772
782
|
"core": false,
|
773
|
-
"unlocked_by":
|
783
|
+
"unlocked_by": "wordy",
|
774
784
|
"difficulty": 9,
|
775
785
|
"topics": [
|
776
786
|
|
@@ -780,7 +790,7 @@
|
|
780
790
|
"uuid": "377fe38b-08ad-4f3a-8118-a43c10f7b9b2",
|
781
791
|
"slug": "custom-set",
|
782
792
|
"core": false,
|
783
|
-
"unlocked_by":
|
793
|
+
"unlocked_by": "list-ops",
|
784
794
|
"difficulty": 10,
|
785
795
|
"topics": [
|
786
796
|
|