trackler 2.0.6.6 → 2.0.6.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/common/exercises/perfect-numbers/description.md +2 -2
  3. data/lib/trackler/version.rb +1 -1
  4. data/tracks/c/exercises/allergies/src/allergies.h +2 -2
  5. data/tracks/c/exercises/allergies/src/example.h +2 -2
  6. data/tracks/c/exercises/anagram/src/anagram.h +2 -2
  7. data/tracks/c/exercises/anagram/test/test_anagram.c +66 -79
  8. data/tracks/c/exercises/atbash-cipher/src/example.h +2 -2
  9. data/tracks/c/exercises/beer-song/src/example.h +2 -2
  10. data/tracks/c/exercises/binary-search/src/example.h +2 -2
  11. data/tracks/c/exercises/bob/src/example.h +2 -2
  12. data/tracks/c/exercises/clock/src/clock.h +2 -2
  13. data/tracks/c/exercises/difference-of-squares/src/example.h +2 -2
  14. data/tracks/c/exercises/gigasecond/src/example.h +2 -2
  15. data/tracks/c/exercises/grains/src/example.h +2 -2
  16. data/tracks/c/exercises/hamming/src/example.h +2 -2
  17. data/tracks/c/exercises/hello-world/src/hello_world.h +2 -2
  18. data/tracks/c/exercises/largest-series-product/src/example.h +2 -2
  19. data/tracks/c/exercises/leap/src/example.h +2 -2
  20. data/tracks/c/exercises/meetup/src/example.h +2 -2
  21. data/tracks/c/exercises/nth-prime/src/example.h +2 -2
  22. data/tracks/c/exercises/pangram/src/example.h +2 -2
  23. data/tracks/c/exercises/phone-number/src/example.h +2 -2
  24. data/tracks/c/exercises/raindrops/src/example.h +2 -2
  25. data/tracks/c/exercises/rna-transcription/src/example.h +2 -2
  26. data/tracks/c/exercises/robot-simulator/src/robot_simulator.h +2 -2
  27. data/tracks/c/exercises/roman-numerals/src/example.h +2 -2
  28. data/tracks/c/exercises/series/src/series.h +2 -2
  29. data/tracks/c/exercises/sieve/src/sieve.h +2 -2
  30. data/tracks/c/exercises/sum-of-multiples/src/example.h +2 -2
  31. data/tracks/c/exercises/word-count/src/word_count.h +2 -2
  32. data/tracks/erlang/config.json +5 -0
  33. data/tracks/erlang/exercises/roman-numerals/example.erl +19 -0
  34. data/tracks/erlang/exercises/roman-numerals/roman_numerals.erl +6 -0
  35. data/tracks/erlang/exercises/roman-numerals/roman_numerals_tests.erl +46 -0
  36. data/tracks/haskell/exercises/allergies/src/Allergies.hs +9 -1
  37. data/tracks/haskell/exercises/grade-school/HINTS.md +3 -3
  38. data/tracks/haskell/exercises/grade-school/src/School.hs +7 -3
  39. data/tracks/haskell/exercises/meetup/HINTS.md +3 -5
  40. data/tracks/haskell/exercises/meetup/src/Meetup.hs +14 -2
  41. data/tracks/haskell/exercises/space-age/HINTS.md +3 -5
  42. data/tracks/haskell/exercises/space-age/src/SpaceAge.hs +8 -1
  43. data/tracks/java/config.json +7 -1
  44. data/tracks/java/exercises/settings.gradle +1 -0
  45. data/tracks/java/exercises/sublist/build.gradle +17 -0
  46. data/tracks/java/exercises/sublist/src/example/java/Relationship.java +1 -0
  47. data/tracks/java/exercises/sublist/src/example/java/RelationshipComputer.java +29 -0
  48. data/tracks/java/exercises/sublist/src/main/java/Relationship.java +5 -0
  49. data/tracks/java/exercises/sublist/src/main/java/RelationshipComputer.java +5 -0
  50. data/tracks/java/exercises/sublist/src/test/java/RelationshipComputerTest.java +183 -0
  51. data/tracks/lua/exercises/run-length-encoding/example.lua +1 -1
  52. data/tracks/lua/exercises/run-length-encoding/run-length-encoding_spec.lua +8 -0
  53. data/tracks/lua/exercises/sublist/sublist_spec.lua +4 -0
  54. data/tracks/ruby/{SETUP.md → exercises/TRACK_HINTS.md} +0 -0
  55. data/tracks/rust/{SETUP.md → exercises/TRACK_HINTS.md} +0 -0
  56. data/tracks/rust/problem_ordering.md +41 -0
  57. data/tracks/scala/config.json +14 -0
  58. data/tracks/scala/exercises/saddle-points/build.sbt +2 -2
  59. data/tracks/scala/exercises/say/build.sbt +2 -2
  60. data/tracks/scala/exercises/secret-handshake/build.sbt +2 -2
  61. data/tracks/scala/exercises/series/build.sbt +3 -2
  62. data/tracks/scheme/config.json +67 -14
  63. metadata +14 -10
  64. data/tracks/haskell/SETUP.md +0 -52
  65. data/tracks/haskell/exercises/allergies/.meta/DONT-TEST-STUB +0 -1
  66. data/tracks/haskell/exercises/grade-school/.meta/DONT-TEST-STUB +0 -2
  67. data/tracks/haskell/exercises/meetup/.meta/DONT-TEST-STUB +0 -2
  68. data/tracks/haskell/exercises/space-age/.meta/DONT-TEST-STUB +0 -1
  69. data/tracks/rust/problems.md +0 -88
@@ -8,6 +8,6 @@ and implement the following functions:
8
8
  - `grade`
9
9
  - `sorted`
10
10
 
11
- You will find a dummy data declaration already in place, but it is up to you to
12
- define the functions and create a meaningful data type, newtype or type
13
- synonym.
11
+ You will find a dummy data declaration and type signatures already in
12
+ place, but it is up to you to define the functions and create a meaningful
13
+ data type, newtype or type synonym.
@@ -2,10 +2,14 @@ module School (School, add, empty, grade, sorted) where
2
2
 
3
3
  data School = Dummy
4
4
 
5
- add = undefined
5
+ add :: Int -> String -> School -> School
6
+ add gradeNum student school = undefined
6
7
 
8
+ empty :: School
7
9
  empty = undefined
8
10
 
9
- grade = undefined
11
+ grade :: Int -> School -> [String]
12
+ grade gradeNum school = undefined
10
13
 
11
- sorted = undefined
14
+ sorted :: School -> [(Int, [String])]
15
+ sorted school = undefined
@@ -1,8 +1,6 @@
1
1
  ## Hints
2
2
 
3
- To complete this exercise, you need to create the data types `Weekday`
4
- and `Schedule`, and implement the function `meetupDay`.
3
+ To complete this exercise, you need to implement the `meetupDay` function.
5
4
 
6
- You will find the type signature for `meetupDay` and dummy data declarations
7
- already in place, but it is up to you to define the function and create
8
- meaningful data types, newtypes or type synonyms.
5
+ You will find the type signature for `meetupDay` already in place,
6
+ but it is up to you to define the function.
@@ -2,8 +2,20 @@ module Meetup (Weekday(..), Schedule(..), meetupDay) where
2
2
 
3
3
  import Data.Time.Calendar (Day)
4
4
 
5
- data Schedule = Dummy
6
- data Weekday = Dummy2
5
+ data Weekday = Monday
6
+ | Tuesday
7
+ | Wednesday
8
+ | Thursday
9
+ | Friday
10
+ | Saturday
11
+ | Sunday
12
+
13
+ data Schedule = First
14
+ | Second
15
+ | Third
16
+ | Fourth
17
+ | Last
18
+ | Teenth
7
19
 
8
20
  meetupDay :: Schedule -> Weekday -> Integer -> Int -> Day
9
21
  meetupDay schedule weekday year month = undefined
@@ -1,8 +1,9 @@
1
1
  ## Hints
2
2
 
3
- In this exercise, you need to complete the definition of the
3
+ In this exercise, we provided the definition of the
4
4
  [algebric data data](http://learnyouahaskell.com/making-our-own-types-and-typeclasses)
5
- named `Planet`, and implement the `ageOn` function, that calculates how many
5
+ named `Planet`.
6
+ You need to implement the `ageOn` function, that calculates how many
6
7
  years old someone would be on a `Planet`, given an age in seconds.
7
8
 
8
9
  Your can use the provided signature if you are unsure about the types, but
@@ -11,6 +12,3 @@ don't let it restrict your creativity:
11
12
  ```haskell
12
13
  ageOn :: Planet -> Float -> Float
13
14
  ```
14
-
15
- Keep in mind that the test suite will not compile until you correctly
16
- implement the data type `Planet`.
@@ -1,6 +1,13 @@
1
1
  module SpaceAge (Planet(..), ageOn) where
2
2
 
3
- data Planet
3
+ data Planet = Mercury
4
+ | Venus
5
+ | Earth
6
+ | Mars
7
+ | Jupiter
8
+ | Saturn
9
+ | Uranus
10
+ | Neptune
4
11
 
5
12
  ageOn :: Planet -> Float -> Float
6
13
  ageOn planet seconds = undefined
@@ -53,7 +53,8 @@
53
53
  "all-your-base",
54
54
  "custom-set",
55
55
  "wordy",
56
- "palindrome-products"
56
+ "palindrome-products",
57
+ "sublist"
57
58
  ],
58
59
  "exercises": [
59
60
  {
@@ -305,6 +306,11 @@
305
306
  "slug": "palindrome-products",
306
307
  "difficulty": 1,
307
308
  "topics": []
309
+ },
310
+ {
311
+ "slug": "sublist",
312
+ "difficulty": 1,
313
+ "topics": []
308
314
  }
309
315
  ],
310
316
  "deprecated": [
@@ -44,6 +44,7 @@ include 'series'
44
44
  include 'sieve'
45
45
  include 'simple-cipher'
46
46
  include 'simple-linked-list'
47
+ include 'sublist'
47
48
  include 'sum-of-multiples'
48
49
  include 'space-age'
49
50
  include 'strain'
@@ -0,0 +1,17 @@
1
+ apply plugin: "java"
2
+ apply plugin: "eclipse"
3
+ apply plugin: "idea"
4
+
5
+ repositories {
6
+ mavenCentral()
7
+ }
8
+
9
+ dependencies {
10
+ testCompile "junit:junit:4.12"
11
+ }
12
+ test {
13
+ testLogging {
14
+ exceptionFormat = 'full'
15
+ events = ["passed", "failed", "skipped"]
16
+ }
17
+ }
@@ -0,0 +1 @@
1
+ tracks/java/exercises/sublist/src/example/java/../../main/java/Relationship.java
@@ -0,0 +1,29 @@
1
+ import java.util.List;
2
+
3
+ final class RelationshipComputer<T extends Comparable> {
4
+
5
+ Relationship computeRelationship(final List<T> firstList, final List<T> secondList) {
6
+ if (firstList.equals(secondList)) return Relationship.EQUAL;
7
+ if (checkIfSublist(firstList, secondList)) return Relationship.SUBLIST;
8
+ if (checkIfSublist(secondList, firstList)) return Relationship.SUPERLIST;
9
+ return Relationship.UNEQUAL;
10
+ }
11
+
12
+ private boolean checkIfSublist(final List<T> firstList, final List<T> secondList) {
13
+ final int firstListSize = firstList.size();
14
+ final int secondListSize = secondList.size();
15
+
16
+ if (firstListSize > secondListSize) return false;
17
+
18
+ final int numberOfSublistCandidates = secondListSize - firstListSize + 1;
19
+
20
+ for (int startIndex = 0; startIndex < numberOfSublistCandidates; startIndex++) {
21
+ if (secondList.subList(startIndex, startIndex + firstListSize).equals(firstList)) {
22
+ return true;
23
+ }
24
+ }
25
+
26
+ return false;
27
+ }
28
+
29
+ }
@@ -0,0 +1,5 @@
1
+ enum Relationship {
2
+
3
+ EQUAL, SUBLIST, SUPERLIST, UNEQUAL
4
+
5
+ }
@@ -0,0 +1,5 @@
1
+ final class RelationshipComputer<T extends Comparable> {
2
+
3
+
4
+
5
+ }
@@ -0,0 +1,183 @@
1
+ import org.junit.Ignore;
2
+ import org.junit.Test;
3
+
4
+ import java.util.List;
5
+
6
+ import static java.util.Arrays.asList;
7
+ import static java.util.Collections.emptyList;
8
+ import static org.junit.Assert.assertEquals;
9
+
10
+ public class RelationshipComputerTest {
11
+
12
+ @Test
13
+ public void testThatTwoEmptyListsAreConsideredEqual() {
14
+ Relationship computedRelationship = new RelationshipComputer<>().computeRelationship(
15
+ emptyList(),
16
+ emptyList());
17
+
18
+ assertEquals(Relationship.EQUAL, computedRelationship);
19
+ }
20
+
21
+ @Ignore
22
+ @Test
23
+ public void testEmptyListIsSublistOfNonEmptyList() {
24
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
25
+ emptyList(),
26
+ asList(1, 2, 3));
27
+
28
+ assertEquals(Relationship.SUBLIST, relationship);
29
+ }
30
+
31
+ @Ignore
32
+ @Test
33
+ public void testNonEmptyListIsSuperlistOfEmptyList() {
34
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
35
+ asList('1', '2', '3'),
36
+ emptyList());
37
+
38
+ assertEquals(Relationship.SUPERLIST, relationship);
39
+ }
40
+
41
+ @Ignore
42
+ @Test
43
+ public void testListIsEqualToItself() {
44
+ List<String> anyList = asList("1", "2", "3");
45
+
46
+ Relationship relationship = new RelationshipComputer<String>().computeRelationship(
47
+ anyList,
48
+ anyList);
49
+
50
+ assertEquals(Relationship.EQUAL, relationship);
51
+ }
52
+
53
+ @Ignore
54
+ @Test
55
+ public void testDifferentListsOfTheSameLengthAreUnequal() {
56
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
57
+ asList(1, 2, 3),
58
+ asList(2, 3, 4));
59
+
60
+ assertEquals(Relationship.UNEQUAL, relationship);
61
+ }
62
+
63
+ @Ignore
64
+ @Test
65
+ public void testSublistCheckDoesNotAbortAfterFalseStart() {
66
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
67
+ asList('1', '2', '5'),
68
+ asList('0', '1', '2', '3', '1', '2', '5', '6'));
69
+
70
+ assertEquals(Relationship.SUBLIST, relationship);
71
+ }
72
+
73
+ @Ignore
74
+ @Test
75
+ public void testSublistCheckHandlesExtraneousRepeatsOfFirstEntry() {
76
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
77
+ asList("1", "1", "2"),
78
+ asList("0", "1", "1", "1", "2", "1", "2"));
79
+
80
+ assertEquals(Relationship.SUBLIST, relationship);
81
+ }
82
+
83
+ @Ignore
84
+ @Test
85
+ public void testSublistAtStart() {
86
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
87
+ asList(0, 1, 2),
88
+ asList(0, 1, 2, 3, 4, 5));
89
+
90
+ assertEquals(Relationship.SUBLIST, relationship);
91
+ }
92
+
93
+ @Ignore
94
+ @Test
95
+ public void testSublistInMiddle() {
96
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
97
+ asList('2', '3', '4'),
98
+ asList('0', '1', '2', '3', '4', '5'));
99
+
100
+ assertEquals(Relationship.SUBLIST, relationship);
101
+ }
102
+
103
+ @Ignore
104
+ @Test
105
+ public void testSublistAtEnd() {
106
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
107
+ asList("3", "4", "5"),
108
+ asList("0", "1", "2", "3", "4", "5"));
109
+
110
+ assertEquals(Relationship.SUBLIST, relationship);
111
+ }
112
+
113
+ @Ignore
114
+ @Test
115
+ public void testAtStartOfSuperlist() {
116
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
117
+ asList(0, 1, 2, 3, 4, 5),
118
+ asList(0, 1, 2));
119
+
120
+ assertEquals(Relationship.SUPERLIST, relationship);
121
+ }
122
+
123
+ @Ignore
124
+ @Test
125
+ public void testInMiddleOfSuperlist() {
126
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
127
+ asList('0', '1', '2', '3', '4', '5'),
128
+ asList('2', '3'));
129
+
130
+ assertEquals(Relationship.SUPERLIST, relationship);
131
+ }
132
+
133
+ @Ignore
134
+ @Test
135
+ public void testAtEndOfSuperlist() {
136
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
137
+ asList("0", "1", "2", "3", "4", "5"),
138
+ asList("3", "4", "5"));
139
+
140
+ assertEquals(Relationship.SUPERLIST, relationship);
141
+ }
142
+
143
+ @Ignore
144
+ @Test
145
+ public void testFirstListMissingElementFromSecondList() {
146
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
147
+ asList(1, 3),
148
+ asList(1, 2, 3));
149
+
150
+ assertEquals(Relationship.UNEQUAL, relationship);
151
+ }
152
+
153
+ @Ignore
154
+ @Test
155
+ public void testSecondListMissingElementFromFirstList() {
156
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
157
+ asList('1', '2', '3'),
158
+ asList('1', '3'));
159
+
160
+ assertEquals(Relationship.UNEQUAL, relationship);
161
+ }
162
+
163
+ @Ignore
164
+ @Test
165
+ public void testThatListOrderingIsAccountedFor() {
166
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
167
+ asList("1", "2", "3"),
168
+ asList("3", "2", "1"));
169
+
170
+ assertEquals(Relationship.UNEQUAL, relationship);
171
+ }
172
+
173
+ @Ignore
174
+ @Test
175
+ public void testThatListsWithSameDigitsButDifferentNumbersAreUnequal() {
176
+ Relationship relationship = new RelationshipComputer<>().computeRelationship(
177
+ asList(1, 0, 1),
178
+ asList(10, 1));
179
+
180
+ assertEquals(Relationship.UNEQUAL, relationship);
181
+ }
182
+
183
+ }
@@ -13,7 +13,7 @@ return {
13
13
 
14
14
  decode = function(s)
15
15
  local result = ''
16
- for length, c in s:gmatch('(%d?)(.)') do
16
+ for length, c in s:gmatch('(%d*)(.)') do
17
17
  if length == '' then length = 1 end
18
18
  result = result .. c:rep(length)
19
19
  end
@@ -5,10 +5,18 @@ describe('run-length-encoding', function()
5
5
  assert.equal('2A3B4C', rle.encode('AABBBCCCC'))
6
6
  end)
7
7
 
8
+ it('should encode strings with multi-digit run lengths', function()
9
+ assert.equal('2A10B4C', rle.encode('AABBBBBBBBBBCCCC'))
10
+ end)
11
+
8
12
  it('should decode simple strings', function()
9
13
  assert.equal('AABBBCCCC', rle.decode('2A3B4C'))
10
14
  end)
11
15
 
16
+ it('should decode strings with multi-digit run lengths', function()
17
+ assert.equal('AABBBBBBBBBBCCCC', rle.decode('2A10B4C'))
18
+ end)
19
+
12
20
  it('should not encode characters with a run length of 1', function()
13
21
  assert.equal('2AB4CD', rle.encode('AABCCCCD'))
14
22
  end)
@@ -13,6 +13,10 @@ describe('sublist', function()
13
13
  assert.equal(true, is_sublist({ 1, 2, 3 }, { 1, 2, 3 }))
14
14
  end)
15
15
 
16
+ it('should not consider a subset to be a sublist', function()
17
+ assert.equal(false, is_sublist({ 1, 2, 3 }, { 2, 1, 3 }))
18
+ end)
19
+
16
20
  it('should find a sublist at the beginning of a list', function()
17
21
  assert.equal(true, is_sublist({ 11, 22, 33 }, { 11, 22, 33, 44, 55 }))
18
22
  end)
File without changes
File without changes
@@ -0,0 +1,41 @@
1
+ # Rust Track Problem Order
2
+
3
+ The actual source of truth of problem order and topics is [config.json](config.json), but this file documents our reasoning behind the problem order in that file.
4
+
5
+ ## Background
6
+
7
+ - https://github.com/exercism/xrust/issues/126
8
+ - https://github.com/exercism/xrust/issues/127
9
+ - http://designisrefactoring.com/2016/07/09/exercism-shouldnt-make-you-cry/
10
+
11
+ ## Our Approach
12
+
13
+ We order our problems for students who are learning Rust. With that audience in mind, we follow two rules when adding new problems.
14
+
15
+ - A exercise should introduce one new concept
16
+ - Exercises should progress from Rust basics to advanced Rust concepts
17
+
18
+ ### One New Concept
19
+
20
+ If a problem solution requires students to use both `Result` and `HashMap`, then at least one of these concepts should be introduced by an earlier problem.
21
+
22
+ If the track has several problems that rely on a concept, group them together to reinforce learning.
23
+
24
+ ### Progress Through Rust
25
+
26
+ #### Early Problems
27
+
28
+ Early problems should focus on Rust syntax and concepts that are present in many programming languages: conditionals, looping, higher-order-functions.
29
+
30
+ #### Middle Problems
31
+
32
+ Problems in the middle of the of the track should introduce concepts that are less common. `Result` and `Option` and Traits, for example. Or syntax such as `while let`.
33
+
34
+ Through the middle section of the track students should gain familiarity with a wide range of Rust concepts.
35
+
36
+ #### Later Problems
37
+
38
+ Problems late in the track should do one of two things:
39
+
40
+ 1. Introduce advanced concepts -- Lifetimes, Concurrency, Unsafety
41
+ 2. Require a complex solution that synthesizes all the knowledge students have gained to date
@@ -367,12 +367,20 @@
367
367
  "slug": "saddle-points",
368
368
  "difficulty": 1,
369
369
  "topics": [
370
+ "Matrices",
371
+ "Lists",
372
+ "Sets",
373
+ "Tuples"
370
374
  ]
371
375
  },
372
376
  {
373
377
  "slug": "say",
374
378
  "difficulty": 1,
375
379
  "topics": [
380
+ "Strings",
381
+ "Transforming",
382
+ "Text formatting",
383
+ "Optional values"
376
384
  ]
377
385
  },
378
386
  {
@@ -385,12 +393,18 @@
385
393
  "slug": "secret-handshake",
386
394
  "difficulty": 1,
387
395
  "topics": [
396
+ "Lists",
397
+ "Strings",
398
+ "Bitwise operations"
388
399
  ]
389
400
  },
390
401
  {
391
402
  "slug": "series",
392
403
  "difficulty": 1,
393
404
  "topics": [
405
+ "Strings",
406
+ "Sequences",
407
+ "Transforming"
394
408
  ]
395
409
  },
396
410
  {
@@ -1,3 +1,3 @@
1
- scalaVersion := "2.11.7"
1
+ scalaVersion := "2.12.1"
2
2
 
3
- libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
3
+ libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
@@ -1,3 +1,3 @@
1
- scalaVersion := "2.11.7"
1
+ scalaVersion := "2.12.1"
2
2
 
3
- libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
3
+ libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
@@ -1,3 +1,3 @@
1
- scalaVersion := "2.11.7"
1
+ scalaVersion := "2.12.1"
2
2
 
3
- libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
3
+ libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
@@ -1,3 +1,4 @@
1
- scalaVersion := "2.11.7"
1
+ scalaVersion := "2.12.1"
2
+
3
+ libraryDependencies += "org.scalatest" %% "scalatest" % "3.0.1" % "test"
2
4
 
3
- libraryDependencies += "org.scalatest" % "scalatest_2.11" % "2.2.5" % "test"
@@ -3,20 +3,73 @@
3
3
  "language": "Scheme",
4
4
  "repository": "https://github.com/exercism/xscheme",
5
5
  "active": true,
6
- "problems": [
7
- "hello-world",
8
- "hamming",
9
- "leap",
10
- "grains",
11
- "bob",
12
- "raindrops",
13
- "rna-transcription",
14
- "robot-name",
15
- "phone-number",
16
- "anagram",
17
- "nucleotide-count",
18
- "difference-of-squares",
19
- "list-ops"
6
+ "exercises" : [
7
+ {
8
+ "slug": "hello-world",
9
+ "difficulty": 1,
10
+ "topics": []
11
+ },
12
+ {
13
+ "slug": "hamming",
14
+ "difficulty": 1,
15
+ "topics": []
16
+ },
17
+ {
18
+ "slug": "leap",
19
+ "difficulty": 1,
20
+ "topics": []
21
+ },
22
+ {
23
+ "slug": "grains",
24
+ "difficulty": 1,
25
+ "topics": []
26
+ },
27
+ {
28
+ "slug": "bob",
29
+ "difficulty": 1,
30
+ "topics": []
31
+ },
32
+ {
33
+ "slug": "raindrops",
34
+ "difficulty": 1,
35
+ "topics": []
36
+ },
37
+ {
38
+ "slug": "rna-transcription",
39
+ "difficulty": 1,
40
+ "topics": []
41
+ },
42
+ {
43
+ "slug": "robot-name",
44
+ "difficulty": 1,
45
+ "topics": []
46
+ },
47
+ {
48
+ "slug": "phone-number",
49
+ "difficulty": 1,
50
+ "topics": []
51
+ },
52
+ {
53
+ "slug": "anagram",
54
+ "difficulty": 1,
55
+ "topics": []
56
+ },
57
+ {
58
+ "slug": "nucleotide-count",
59
+ "difficulty": 1,
60
+ "topics": []
61
+ },
62
+ {
63
+ "slug": "difference-of-squares",
64
+ "difficulty": 1,
65
+ "topics": []
66
+ },
67
+ {
68
+ "slug": "list-ops",
69
+ "difficulty": 1,
70
+ "topics": []
71
+ }
72
+
20
73
  ],
21
74
  "deprecated": [
22
75