trackler 2.0.6.6 → 2.0.6.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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