trackler 2.0.8.23 → 2.0.8.24
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/tracks/csharp/circle.yml +15 -15
- data/tracks/delphi/README.md +1 -1
- data/tracks/java/exercises/wordy/src/test/java/WordProblemSolverTest.java +24 -16
- data/tracks/lisp/README.md +2 -1
- data/tracks/ocaml/config.json +5 -0
- data/tracks/ocaml/exercises/change/.merlin +5 -0
- data/tracks/ocaml/exercises/change/Makefile +11 -0
- data/tracks/ocaml/exercises/change/change.mli +2 -0
- data/tracks/ocaml/exercises/change/example.ml +22 -0
- data/tracks/ocaml/exercises/change/test.ml +42 -0
- data/tracks/ocaml/exercises/triangle/example.ml +9 -11
- data/tracks/ocaml/exercises/triangle/test.ml +14 -14
- data/tracks/ocaml/exercises/triangle/triangle.mli +3 -3
- data/tracks/ocaml/tools/test-generator/src/special_cases.ml +6 -0
- data/tracks/ocaml/tools/test-generator/templates/change/template.ml +17 -0
- data/tracks/python/config.json +6 -0
- data/tracks/python/exercises/isogram/example.py +3 -0
- data/tracks/python/exercises/isogram/isogram.py +2 -0
- data/tracks/python/exercises/isogram/isogram_test.py +35 -0
- data/tracks/typescript/README.md +1 -1
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9cd390706f6428039b6d1b9bd39c84baff013f05
|
4
|
+
data.tar.gz: 30b3c130a0c8c06afeaf937fe37c1561bfa55b05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b529eaeebfb7dd0c9b7daeaebf58d0a882b93d96ce33f0c3948baa9ec3f54377883fde02ccfc7675d7672baeb00abc8c4413ed4cfc2dce45e0d956ade187a398
|
7
|
+
data.tar.gz: d4e8fce50a75e576c1518821023e6f23ea70e6856035989eeef22fd16db13e883f6d1492b3db2cf94955072df9b85eab382d96a9191713e55a7a8c4461e2a523
|
data/lib/trackler/version.rb
CHANGED
data/tracks/csharp/circle.yml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
1
|
+
version: 2
|
2
|
+
jobs:
|
3
|
+
build:
|
4
|
+
working_directory: /exercism/xcsharp
|
5
|
+
docker:
|
6
|
+
- image: microsoft/dotnet:sdk
|
7
|
+
environment:
|
8
|
+
DOTNET_SKIP_FIRST_TIME_EXPERIENCE: 1
|
9
|
+
DOTNET_CLI_TELEMETRY_OPTOUT: 1
|
10
|
+
steps:
|
11
|
+
- checkout
|
12
|
+
- run: apt-get -qq update; apt-get -y install unzip
|
13
|
+
- run: ./bin/fetch-configlet
|
14
|
+
- run: ./bin/configlet .
|
15
|
+
- run: ./build.sh
|
data/tracks/delphi/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# xDelphi
|
2
2
|
|
3
|
-
[![Build Status](https://travis-ci.org/exercism/xdelphi.
|
3
|
+
[![Build Status](https://travis-ci.org/exercism/xdelphi.svg?branch=master)](https://travis-ci.org/exercism/xdelphi)
|
4
4
|
|
5
5
|
Exercism exercises in Delphi Pascal.
|
6
6
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import org.junit.Ignore;
|
2
2
|
import org.junit.Rule;
|
3
3
|
import org.junit.Test;
|
4
|
+
import org.junit.Before;
|
4
5
|
import org.junit.rules.ExpectedException;
|
5
6
|
|
6
7
|
import static org.junit.Assert.assertEquals;
|
@@ -14,87 +15,94 @@ public final class WordProblemSolverTest {
|
|
14
15
|
@Rule
|
15
16
|
public ExpectedException expectedException = ExpectedException.none();
|
16
17
|
|
18
|
+
WordProblemSolver solver;
|
19
|
+
|
20
|
+
@Before
|
21
|
+
public void setup() {
|
22
|
+
solver = new WordProblemSolver();
|
23
|
+
}
|
24
|
+
|
17
25
|
@Test
|
18
26
|
public void testSingleAddition1() {
|
19
|
-
assertEquals(2,
|
27
|
+
assertEquals(2, solver.solve("What is 1 plus 1?"));
|
20
28
|
}
|
21
29
|
|
22
30
|
@Ignore
|
23
31
|
@Test
|
24
32
|
public void testSingleAddition2() {
|
25
|
-
assertEquals(55,
|
33
|
+
assertEquals(55, solver.solve("What is 53 plus 2?"));
|
26
34
|
}
|
27
35
|
|
28
36
|
@Ignore
|
29
37
|
@Test
|
30
38
|
public void testSingleAdditionWithNegativeNumbers() {
|
31
|
-
assertEquals(-11,
|
39
|
+
assertEquals(-11, solver.solve("What is -1 plus -10?"));
|
32
40
|
}
|
33
41
|
|
34
42
|
@Ignore
|
35
43
|
@Test
|
36
44
|
public void testSingleAdditionOfLargeNumbers() {
|
37
|
-
assertEquals(45801,
|
45
|
+
assertEquals(45801, solver.solve("What is 123 plus 45678?"));
|
38
46
|
}
|
39
47
|
|
40
48
|
@Ignore
|
41
49
|
@Test
|
42
50
|
public void testSingleSubtraction() {
|
43
|
-
assertEquals(16,
|
51
|
+
assertEquals(16, solver.solve("What is 4 minus -12?"));
|
44
52
|
}
|
45
53
|
|
46
54
|
@Ignore
|
47
55
|
@Test
|
48
56
|
public void testSingleMultiplication() {
|
49
|
-
assertEquals(-75,
|
57
|
+
assertEquals(-75, solver.solve("What is -3 multiplied by 25?"));
|
50
58
|
}
|
51
59
|
|
52
60
|
@Ignore
|
53
61
|
@Test
|
54
62
|
public void testSingleDivision() {
|
55
|
-
assertEquals(-11,
|
63
|
+
assertEquals(-11, solver.solve("What is 33 divided by -3?"));
|
56
64
|
}
|
57
65
|
|
58
66
|
@Ignore
|
59
67
|
@Test
|
60
68
|
public void testMultipleAdditions() {
|
61
|
-
assertEquals(3,
|
69
|
+
assertEquals(3, solver.solve("What is 1 plus 1 plus 1?"));
|
62
70
|
}
|
63
71
|
|
64
72
|
@Ignore
|
65
73
|
@Test
|
66
74
|
public void testAdditionThenSubtraction() {
|
67
|
-
assertEquals(8,
|
75
|
+
assertEquals(8, solver.solve("What is 1 plus 5 minus -2?"));
|
68
76
|
}
|
69
77
|
|
70
78
|
@Ignore
|
71
79
|
@Test
|
72
80
|
public void testMultipleSubtractions() {
|
73
|
-
assertEquals(3,
|
81
|
+
assertEquals(3, solver.solve("What is 20 minus 4 minus 13?"));
|
74
82
|
}
|
75
83
|
|
76
84
|
@Ignore
|
77
85
|
@Test
|
78
86
|
public void testSubtractionThenAddition() {
|
79
|
-
assertEquals(14,
|
87
|
+
assertEquals(14, solver.solve("What is 17 minus 6 plus 3?"));
|
80
88
|
}
|
81
89
|
|
82
90
|
@Ignore
|
83
91
|
@Test
|
84
92
|
public void testMultipleMultiplications() {
|
85
|
-
assertEquals(-12,
|
93
|
+
assertEquals(-12, solver.solve("What is 2 multiplied by -2 multiplied by 3?"));
|
86
94
|
}
|
87
95
|
|
88
96
|
@Ignore
|
89
97
|
@Test
|
90
98
|
public void testAdditionThenMultiplication() {
|
91
|
-
assertEquals(-8,
|
99
|
+
assertEquals(-8, solver.solve("What is -3 plus 7 multiplied by -2?"));
|
92
100
|
}
|
93
101
|
|
94
102
|
@Ignore
|
95
103
|
@Test
|
96
104
|
public void testMultipleDivisions() {
|
97
|
-
assertEquals(2,
|
105
|
+
assertEquals(2, solver.solve("What is -12 divided by 2 divided by -3?"));
|
98
106
|
}
|
99
107
|
|
100
108
|
@Ignore
|
@@ -103,7 +111,7 @@ public final class WordProblemSolverTest {
|
|
103
111
|
expectedException.expect(IllegalArgumentException.class);
|
104
112
|
expectedException.expectMessage("I'm sorry, I don't understand the question!");
|
105
113
|
|
106
|
-
|
114
|
+
solver.solve("What is 52 cubed?");
|
107
115
|
}
|
108
116
|
|
109
117
|
@Ignore
|
@@ -113,7 +121,7 @@ public final class WordProblemSolverTest {
|
|
113
121
|
expectedException.expectMessage("I'm sorry, I don't understand the question!");
|
114
122
|
|
115
123
|
// See https://en.wikipedia.org/wiki/President_of_the_United_States if you really need to know!
|
116
|
-
|
124
|
+
solver.solve("Who is the President of the United States?");
|
117
125
|
}
|
118
126
|
|
119
127
|
}
|
data/tracks/lisp/README.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# xLisp
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/exercism/xlisp.svg)](https://travis-ci.org/exercism/xlisp)
|
4
|
+
|
3
5
|
Exercism exercises in Lisp
|
4
6
|
|
5
|
-
[![Build Status](https://travis-ci.org/exercism/xlisp.png)](https://travis-ci.org/exercism/xlisp)
|
6
7
|
|
7
8
|
## Contributing To the Common Lisp Track
|
8
9
|
|
data/tracks/ocaml/config.json
CHANGED
@@ -0,0 +1,22 @@
|
|
1
|
+
open Core.Std
|
2
|
+
|
3
|
+
let find_smallest_coins_list_meeting_target (cache: int list option array) (coins: int list) (target: int): int list option =
|
4
|
+
let find_coins_meeting_target_minus_coin coin =
|
5
|
+
if target = coin
|
6
|
+
then Some [coin]
|
7
|
+
else cache.(target - coin) |> Option.map ~f:(List.cons coin) in
|
8
|
+
List.filter coins ~f:(fun x -> x <= target)
|
9
|
+
|> List.map ~f:find_coins_meeting_target_minus_coin
|
10
|
+
|> List.filter_map ~f:(Fn.id)
|
11
|
+
|> List.sort ~cmp:(fun xs ys -> Int.compare (List.length xs) (List.length ys))
|
12
|
+
|> List.hd
|
13
|
+
|
14
|
+
let make_change ~target ~coins = match target with
|
15
|
+
| 0 -> Some []
|
16
|
+
| _ when target < 0 -> None
|
17
|
+
| _ ->
|
18
|
+
let cache = Array.create ~len:(target+1) None in
|
19
|
+
for i = 1 to target do
|
20
|
+
cache.(i) <- find_smallest_coins_list_meeting_target cache coins i
|
21
|
+
done;
|
22
|
+
cache.(target)
|
@@ -0,0 +1,42 @@
|
|
1
|
+
open Core.Std
|
2
|
+
open OUnit2
|
3
|
+
open Change
|
4
|
+
|
5
|
+
let printer = Option.value_map ~default:"None" ~f:(List.to_string ~f:Int.to_string)
|
6
|
+
let ae exp got _test_ctxt = assert_equal ~printer exp got
|
7
|
+
|
8
|
+
let tests = [
|
9
|
+
"single coin change" >::
|
10
|
+
ae (Some [25])
|
11
|
+
(make_change ~target:25 ~coins:[1; 5; 10; 25; 100]);
|
12
|
+
"multiple coin change" >::
|
13
|
+
ae (Some [5; 10])
|
14
|
+
(make_change ~target:15 ~coins:[1; 5; 10; 25; 100]);
|
15
|
+
"change with Lilliputian Coins" >::
|
16
|
+
ae (Some [4; 4; 15])
|
17
|
+
(make_change ~target:23 ~coins:[1; 4; 15; 20; 50]);
|
18
|
+
"change with Lower Elbonia Coins" >::
|
19
|
+
ae (Some [21; 21; 21])
|
20
|
+
(make_change ~target:63 ~coins:[1; 5; 10; 21; 25]);
|
21
|
+
"large target values" >::
|
22
|
+
ae (Some [2; 2; 5; 20; 20; 50; 100; 100; 100; 100; 100; 100; 100; 100; 100])
|
23
|
+
(make_change ~target:999 ~coins:[1; 2; 5; 10; 20; 50; 100]);
|
24
|
+
"possible change without unit coins available" >::
|
25
|
+
ae (Some [2; 2; 2; 5; 10])
|
26
|
+
(make_change ~target:21 ~coins:[2; 5; 10; 20; 50]);
|
27
|
+
"no coins make 0 change" >::
|
28
|
+
ae (Some [])
|
29
|
+
(make_change ~target:0 ~coins:[1; 5; 10; 21; 25]);
|
30
|
+
"error testing for change smaller than the smallest of coins" >::
|
31
|
+
ae None
|
32
|
+
(make_change ~target:3 ~coins:[5; 10]);
|
33
|
+
"error if no combination can add up to target" >::
|
34
|
+
ae None
|
35
|
+
(make_change ~target:94 ~coins:[5; 10]);
|
36
|
+
"cannot find negative change values" >::
|
37
|
+
ae None
|
38
|
+
(make_change ~target:(-5) ~coins:[1; 2; 5]);
|
39
|
+
]
|
40
|
+
|
41
|
+
let () =
|
42
|
+
run_test_tt_main ("change tests" >::: tests)
|
@@ -1,17 +1,15 @@
|
|
1
1
|
open Core.Std
|
2
2
|
|
3
|
-
let sort_sides =
|
4
|
-
|
5
|
-
|
6
|
-
(side 0, side 1, side 2)
|
7
|
-
| _ -> failwith "not at triangle"
|
3
|
+
let sort_sides a b c =
|
4
|
+
let side = List.nth_exn (List.sort ~cmp:Int.compare [a; b; c]) in
|
5
|
+
(side 0, side 1, side 2)
|
8
6
|
|
9
|
-
let is_triangle
|
10
|
-
let (a, b, c) = sort_sides
|
11
|
-
c > 0 && c <= a + b
|
7
|
+
let is_triangle a b c =
|
8
|
+
let (a, b, c) = sort_sides a b c in
|
9
|
+
c > 0 && c <= a + b
|
12
10
|
|
13
|
-
let is_equilateral = is_triangle
|
11
|
+
let is_equilateral a b c = is_triangle a b c && a = b && b = c
|
14
12
|
|
15
|
-
let is_isoceles = is_triangle
|
13
|
+
let is_isoceles a b c = is_triangle a b c && (a = b || b = c || a = c)
|
16
14
|
|
17
|
-
let is_scalene = is_triangle
|
15
|
+
let is_scalene a b c = is_triangle a b c && (a <> b && b <> c)
|
@@ -6,39 +6,39 @@ let ae exp got _test_ctxt = assert_equal exp got ~printer:Bool.to_string
|
|
6
6
|
|
7
7
|
let equilateral_tests = [
|
8
8
|
"true if all sides are equal" >::
|
9
|
-
ae true (is_equilateral
|
9
|
+
ae true (is_equilateral 2 2 2);
|
10
10
|
"false if any side is unequal" >::
|
11
|
-
ae false (is_equilateral
|
11
|
+
ae false (is_equilateral 2 3 2);
|
12
12
|
"false if no sides are equal" >::
|
13
|
-
ae false (is_equilateral
|
13
|
+
ae false (is_equilateral 5 4 6);
|
14
14
|
"All zero sides are illegal, so the triangle is not equilateral" >::
|
15
|
-
ae false (is_equilateral
|
15
|
+
ae false (is_equilateral 0 0 0);
|
16
16
|
]
|
17
17
|
|
18
18
|
let isoceles_tests = [
|
19
19
|
"true if last two sides are equal" >::
|
20
|
-
ae true (is_isoceles
|
20
|
+
ae true (is_isoceles 3 4 4);
|
21
21
|
"true if first two sides are equal" >::
|
22
|
-
ae true (is_isoceles
|
22
|
+
ae true (is_isoceles 4 4 3);
|
23
23
|
"true if first and last sides are equal" >::
|
24
|
-
ae true (is_isoceles
|
24
|
+
ae true (is_isoceles 4 3 4);
|
25
25
|
"equilateral triangles are also isosceles" >::
|
26
|
-
ae true (is_isoceles
|
26
|
+
ae true (is_isoceles 4 4 4);
|
27
27
|
"false if no sides are equal" >::
|
28
|
-
ae false (is_isoceles
|
28
|
+
ae false (is_isoceles 2 3 4);
|
29
29
|
"Sides that violate triangle inequality are not isosceles, even if two are equal" >::
|
30
|
-
ae false (is_isoceles
|
30
|
+
ae false (is_isoceles 1 1 3);
|
31
31
|
]
|
32
32
|
|
33
33
|
let scalene_tests = [
|
34
34
|
"true if no sides are equal" >::
|
35
|
-
ae true (is_scalene
|
35
|
+
ae true (is_scalene 5 4 6);
|
36
36
|
"false if all sides are equal" >::
|
37
|
-
ae false (is_scalene
|
37
|
+
ae false (is_scalene 4 4 4);
|
38
38
|
"false if two sides are equal" >::
|
39
|
-
ae false (is_scalene
|
39
|
+
ae false (is_scalene 4 4 3);
|
40
40
|
"Sides that violate triangle inequality are not scalene, even if they are all different" >::
|
41
|
-
ae false (is_scalene
|
41
|
+
ae false (is_scalene 7 3 2);
|
42
42
|
]
|
43
43
|
|
44
44
|
let () =
|
@@ -48,12 +48,18 @@ let edit_connect_expected = function
|
|
48
48
|
| `String "" -> "None"
|
49
49
|
| x -> failwith "Bad json value in connect " ^ json_to_string x
|
50
50
|
|
51
|
+
let edit_change_expected (value: json) = match value with
|
52
|
+
| `List xs -> "(Some [" ^ (String.concat ~sep:"; " (List.map ~f:json_to_string xs)) ^ "])"
|
53
|
+
| `Int (-1) -> "None"
|
54
|
+
| _ -> failwith "Bad json value in change"
|
55
|
+
|
51
56
|
let edit_expected ~(stringify: json -> string) ~(slug: string) ~(value: json) = match slug with
|
52
57
|
| "hamming" -> optional_int ~none:(-1) value
|
53
58
|
| "all-your-base" -> optional_int_list value
|
54
59
|
| "say" -> optional_int_or_string ~none:(-1) value
|
55
60
|
| "phone-number" -> option_of_null value
|
56
61
|
| "connect" -> edit_connect_expected value
|
62
|
+
| "change" -> edit_change_expected value
|
57
63
|
| _ -> stringify value
|
58
64
|
|
59
65
|
let edit_say (ps: (string * json) list) =
|
@@ -0,0 +1,17 @@
|
|
1
|
+
open Core.Std
|
2
|
+
open OUnit2
|
3
|
+
open Change
|
4
|
+
|
5
|
+
let printer = Option.value_map ~default:"None" ~f:(List.to_string ~f:Int.to_string)
|
6
|
+
let ae exp got _test_ctxt = assert_equal ~printer exp got
|
7
|
+
|
8
|
+
let tests = [
|
9
|
+
(* TEST
|
10
|
+
"$description" >::
|
11
|
+
ae $expected
|
12
|
+
(make_change ~target:$target ~coins:$coins);
|
13
|
+
END TEST *)
|
14
|
+
]
|
15
|
+
|
16
|
+
let () =
|
17
|
+
run_test_tt_main ("change tests" >::: tests)
|
data/tracks/python/config.json
CHANGED
@@ -0,0 +1,35 @@
|
|
1
|
+
import unittest
|
2
|
+
from isogram import is_isogram
|
3
|
+
|
4
|
+
|
5
|
+
# test cases adapted from `x-common//canonical-data.json` @ version: 1.0.0
|
6
|
+
|
7
|
+
class TestIsogram(unittest.TestCase):
|
8
|
+
|
9
|
+
def test_empty_string(self):
|
10
|
+
self.assertTrue(is_isogram(""))
|
11
|
+
|
12
|
+
def test_isogram_with_only_lower_case_characters(self):
|
13
|
+
self.assertTrue(is_isogram("isogram"))
|
14
|
+
|
15
|
+
def test_word_with_one_duplicated_character(self):
|
16
|
+
self.assertFalse(is_isogram("eleven"))
|
17
|
+
|
18
|
+
def test_longest_reported_english_isogram(self):
|
19
|
+
self.assertTrue(is_isogram("subdermatoglyphic"))
|
20
|
+
|
21
|
+
def test_word_with_duplicated_character_in_mixed_case(self):
|
22
|
+
self.assertFalse(is_isogram("Alphabet"))
|
23
|
+
|
24
|
+
def test_hypothetical_isogrammic_word_with_hyphen(self):
|
25
|
+
self.assertTrue(is_isogram("thumbscrew-japingly"))
|
26
|
+
|
27
|
+
def test_isogram_with_duplicated_non_letter_character(self):
|
28
|
+
self.assertTrue(is_isogram("Hjelmqvist-Gryb-Zock-Pfund-Wax"))
|
29
|
+
|
30
|
+
def test_made_up_name_that_is_an_isogram(self):
|
31
|
+
self.assertTrue(is_isogram("Emily Jung Schwartzkopf"))
|
32
|
+
|
33
|
+
|
34
|
+
if __name__ == '__main__':
|
35
|
+
unittest.main()
|
data/tracks/typescript/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# xTypeScript [![Build Status](https://travis-ci.org/exercism/xtypescript.
|
1
|
+
# xTypeScript [![Build Status](https://travis-ci.org/exercism/xtypescript.svg?branch=master)](https://travis-ci.org/exercism/xtypescript)
|
2
2
|
|
3
3
|
Exercism exercises in TypeScript
|
4
4
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trackler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.8.
|
4
|
+
version: 2.0.8.24
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Owen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-03-
|
11
|
+
date: 2017-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -5712,6 +5712,11 @@ files:
|
|
5712
5712
|
- tracks/ocaml/exercises/bracket-push/bracket_push.mli
|
5713
5713
|
- tracks/ocaml/exercises/bracket-push/example.ml
|
5714
5714
|
- tracks/ocaml/exercises/bracket-push/test.ml
|
5715
|
+
- tracks/ocaml/exercises/change/.merlin
|
5716
|
+
- tracks/ocaml/exercises/change/Makefile
|
5717
|
+
- tracks/ocaml/exercises/change/change.mli
|
5718
|
+
- tracks/ocaml/exercises/change/example.ml
|
5719
|
+
- tracks/ocaml/exercises/change/test.ml
|
5715
5720
|
- tracks/ocaml/exercises/connect/.merlin
|
5716
5721
|
- tracks/ocaml/exercises/connect/Makefile
|
5717
5722
|
- tracks/ocaml/exercises/connect/connect.mli
|
@@ -5887,6 +5892,7 @@ files:
|
|
5887
5892
|
- tracks/ocaml/tools/test-generator/templates/beer-song/template.ml
|
5888
5893
|
- tracks/ocaml/tools/test-generator/templates/bob/template.ml
|
5889
5894
|
- tracks/ocaml/tools/test-generator/templates/bracket-push/template.ml
|
5895
|
+
- tracks/ocaml/tools/test-generator/templates/change/template.ml
|
5890
5896
|
- tracks/ocaml/tools/test-generator/templates/connect/template.ml
|
5891
5897
|
- tracks/ocaml/tools/test-generator/templates/difference-of-squares/template.ml
|
5892
5898
|
- tracks/ocaml/tools/test-generator/templates/dominoes/template.ml
|
@@ -6545,6 +6551,9 @@ files:
|
|
6545
6551
|
- tracks/python/exercises/house/example.py
|
6546
6552
|
- tracks/python/exercises/house/house.py
|
6547
6553
|
- tracks/python/exercises/house/house_test.py
|
6554
|
+
- tracks/python/exercises/isogram/example.py
|
6555
|
+
- tracks/python/exercises/isogram/isogram.py
|
6556
|
+
- tracks/python/exercises/isogram/isogram_test.py
|
6548
6557
|
- tracks/python/exercises/kindergarten-garden/example.py
|
6549
6558
|
- tracks/python/exercises/kindergarten-garden/kindergarten_garden.py
|
6550
6559
|
- tracks/python/exercises/kindergarten-garden/kindergarten_garden_test.py
|