trackler 2.2.1.43 → 2.2.1.44
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/problem-specifications/exercises/lens-person/description.md +1 -1
- data/problem-specifications/exercises/palindrome-products/description.md +5 -12
- data/problem-specifications/exercises/pascals-triangle/canonical-data.json +1 -7
- data/tracks/c/exercises/meetup/src/example.c +64 -60
- data/tracks/c/exercises/meetup/src/example.h +2 -2
- data/tracks/c/exercises/meetup/test/test_meetup.c +4 -4
- data/tracks/cfml/config.json +179 -169
- data/tracks/cfml/exercises/markdown/.meta/HINTS.md +0 -0
- data/tracks/cfml/exercises/markdown/Markdown.cfc +121 -0
- data/tracks/cfml/exercises/markdown/MarkdownTest.cfc +51 -0
- data/tracks/cfml/exercises/markdown/Solution.cfc +204 -0
- data/tracks/cfml/exercises/markdown/SolutionTest.cfc +7 -0
- data/tracks/cfml/exercises/markdown/TestRunner.cfc +103 -0
- data/tracks/cfml/exercises/markdown/box.json +8 -0
- data/tracks/cfml/exercises/markdown/index.cfm +37 -0
- data/tracks/csharp/exercises/dominoes/DominoesTest.cs +40 -45
- data/tracks/csharp/exercises/meetup/MeetupTest.cs +761 -83
- data/tracks/csharp/generators/Exercises/Dominoes.cs +33 -0
- data/tracks/csharp/generators/Exercises/Meetup.cs +46 -0
- data/tracks/csharp/generators/Output/FormattingExtensions.cs +11 -1
- data/tracks/csharp/generators/Output/TypesExtensions.cs +23 -0
- data/tracks/csharp/generators/Output/ValueFormatter.cs +70 -69
- data/tracks/dart/config.json +15 -3
- data/tracks/dart/exercises/word-count/README.md +18 -0
- data/tracks/dart/exercises/word-count/lib/example.dart +26 -0
- data/tracks/dart/exercises/word-count/lib/word_count.dart +3 -0
- data/tracks/dart/exercises/word-count/pubspec.lock +293 -0
- data/tracks/dart/exercises/word-count/pubspec.yaml +3 -0
- data/tracks/dart/exercises/word-count/test/word_count_test.dart +64 -0
- data/tracks/ecmascript/docs/INSTALLATION.md +4 -7
- data/tracks/elixir/exercises/hello-world/README.md +1 -26
- data/tracks/elixir/exercises/hello-world/example.exs +3 -7
- data/tracks/elixir/exercises/hello-world/hello_world.exs +3 -25
- data/tracks/elixir/exercises/hello-world/hello_world_test.exs +2 -13
- data/tracks/elixir/mix.lock +1 -1
- data/tracks/elm/config.json +11 -0
- data/tracks/elm/exercises/pascals-triangle/README.md +51 -0
- data/tracks/elm/exercises/pascals-triangle/Triangle.elm +1 -0
- data/tracks/elm/exercises/pascals-triangle/Triangle.example.elm +23 -0
- data/tracks/elm/exercises/pascals-triangle/elm-package.json +14 -0
- data/tracks/elm/exercises/pascals-triangle/package.json +14 -0
- data/tracks/elm/exercises/pascals-triangle/tests/Tests.elm +34 -0
- data/tracks/elm/exercises/pascals-triangle/tests/elm-package.json +16 -0
- data/tracks/fsharp/exercises/grade-school/GradeSchool.fs +2 -2
- data/tracks/fsharp/exercises/grade-school/GradeSchoolTest.fs +3 -2
- data/tracks/java/CONTRIBUTING.md +34 -0
- data/tracks/java/config.json +42 -6
- data/tracks/java/exercises/largest-series-product/src/main/java/LargestSeriesProductCalculator.java +7 -3
- data/tracks/java/exercises/matrix/src/main/java/Matrix.java +23 -0
- data/tracks/julia/config.json +11 -2
- data/tracks/julia/exercises/grains/README.md +33 -0
- data/tracks/julia/exercises/grains/example.jl +23 -0
- data/tracks/julia/exercises/grains/grains.jl +9 -0
- data/tracks/julia/exercises/grains/runtests.jl +27 -0
- data/tracks/lua/README.md +1 -1
- data/tracks/mips/exercises/octal/README.md +3 -8
- data/tracks/ocaml/exercises/palindrome-products/README.md +8 -14
- data/tracks/perl6/.travis.yml +7 -3
- data/tracks/perl6/bin/exercise-gen.pl6 +5 -1
- data/tracks/perl6/exercises/accumulate/README.md +0 -3
- data/tracks/perl6/exercises/accumulate/accumulate.t +9 -3
- data/tracks/perl6/exercises/all-your-base/README.md +1 -1
- data/tracks/perl6/exercises/all-your-base/all-your-base.t +23 -11
- data/tracks/perl6/exercises/all-your-base/example.yaml +1 -1
- data/tracks/perl6/exercises/allergies/README.md +0 -1
- data/tracks/perl6/exercises/allergies/allergies.t +22 -10
- data/tracks/perl6/exercises/anagram/anagram.t +22 -10
- data/tracks/perl6/exercises/atbash-cipher/README.md +2 -1
- data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +22 -10
- data/tracks/perl6/exercises/binary/README.md +2 -0
- data/tracks/perl6/exercises/bob/bob.t +24 -11
- data/tracks/perl6/exercises/bob/example.yaml +2 -2
- data/tracks/perl6/exercises/clock/clock.t +22 -10
- data/tracks/perl6/exercises/flatten-array/README.md +1 -2
- data/tracks/perl6/exercises/flatten-array/example.yaml +1 -1
- data/tracks/perl6/exercises/flatten-array/flatten-array.t +23 -11
- data/tracks/perl6/exercises/grade-school/README.md +0 -1
- data/tracks/perl6/exercises/grade-school/grade-school.t +9 -3
- data/tracks/perl6/exercises/grains/README.md +0 -1
- data/tracks/perl6/exercises/grains/grains.t +22 -10
- data/tracks/perl6/exercises/hello-world/example.yaml +3 -3
- data/tracks/perl6/exercises/hello-world/hello-world.t +25 -12
- data/tracks/perl6/exercises/leap/README.md +1 -1
- data/tracks/perl6/exercises/leap/example.yaml +1 -1
- data/tracks/perl6/exercises/leap/leap.t +23 -11
- data/tracks/perl6/exercises/linked-list/README.md +10 -10
- data/tracks/perl6/exercises/linked-list/linked-list.t +9 -3
- data/tracks/perl6/exercises/luhn/README.md +7 -7
- data/tracks/perl6/exercises/luhn/luhn.t +22 -10
- data/tracks/perl6/exercises/phone-number/README.md +3 -2
- data/tracks/perl6/exercises/phone-number/phone-number.t +22 -10
- data/tracks/perl6/exercises/raindrops/raindrops.t +22 -10
- data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +22 -10
- data/tracks/perl6/exercises/robot-name/robot-name.t +9 -3
- data/tracks/perl6/exercises/scrabble-score/README.md +3 -1
- data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +22 -10
- data/tracks/perl6/exercises/space-age/README.md +2 -1
- data/tracks/perl6/exercises/space-age/space-age.t +22 -10
- data/tracks/perl6/exercises/trinary/README.md +1 -1
- data/tracks/perl6/exercises/word-count/README.md +1 -2
- data/tracks/perl6/exercises/word-count/word-count.t +22 -10
- data/tracks/perl6/exercises/wordy/README.md +0 -5
- data/tracks/perl6/exercises/wordy/wordy.t +22 -10
- data/tracks/perl6/templates/test.mustache +26 -15
- data/tracks/python/config.json +10 -0
- data/tracks/python/exercises/book-store/book_store.py +1 -1
- data/tracks/python/exercises/flatten-array/flatten_array.py +1 -1
- data/tracks/python/exercises/matrix/matrix.py +1 -1
- data/tracks/python/exercises/palindrome-products/palindrome_products.py +2 -2
- data/tracks/python/exercises/perfect-numbers/perfect_numbers.py +2 -2
- data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet.py +3 -3
- data/tracks/python/exercises/raindrops/raindrops.py +1 -1
- data/tracks/python/exercises/scale-generator/scale_generator.py +1 -1
- data/tracks/python/exercises/sieve/sieve.py +1 -1
- data/tracks/python/exercises/sublist/sublist.py +1 -1
- data/tracks/python/exercises/transpose/transpose.py +1 -1
- data/tracks/python/exercises/triangle/triangle.py +4 -1
- data/tracks/python/exercises/two-bucket/example.py +59 -0
- data/tracks/python/exercises/two-bucket/two_bucket.py +2 -0
- data/tracks/python/exercises/two-bucket/two_bucket_test.py +32 -0
- data/tracks/scheme/config.json +59 -89
- data/tracks/scheme/config/maintainers.json +11 -11
- data/tracks/sml/exercises/allergies/README.md +20 -5
- data/tracks/sml/exercises/allergies/allergies.sml +11 -14
- data/tracks/sml/exercises/allergies/example.sml +9 -9
- data/tracks/sml/exercises/allergies/test.sml +65 -129
- data/tracks/sml/exercises/allergies/testlib.sml +159 -0
- data/tracks/sml/exercises/hamming/README.md +21 -5
- data/tracks/sml/exercises/hamming/example.sml +14 -10
- data/tracks/sml/exercises/hamming/hamming.sml +4 -3
- data/tracks/sml/exercises/hamming/test.sml +55 -64
- data/tracks/sml/exercises/hamming/testlib.sml +159 -0
- data/tracks/typescript/config.json +15 -0
- data/tracks/typescript/exercises/linked-list/linked-list.test.ts +11 -11
- data/tracks/typescript/exercises/nth-prime/README.md +36 -0
- data/tracks/typescript/exercises/nth-prime/nth-prime.example.ts +28 -0
- data/tracks/typescript/exercises/nth-prime/nth-prime.test.ts +25 -0
- data/tracks/typescript/exercises/nth-prime/nth-prime.ts +0 -0
- data/tracks/typescript/exercises/nth-prime/package.json +36 -0
- data/tracks/typescript/exercises/nth-prime/tsconfig.json +22 -0
- data/tracks/typescript/exercises/nth-prime/tslint.json +127 -0
- data/tracks/typescript/exercises/nth-prime/yarn.lock +2305 -0
- data/tracks/typescript/exercises/prime-factors/README.md +1 -1
- data/tracks/typescript/exercises/prime-factors/prime-factors.test.ts +11 -11
- data/tracks/typescript/exercises/series/README.md +1 -1
- data/tracks/typescript/exercises/series/series.test.ts +11 -11
- data/tracks/typescript/img/icon.png +0 -0
- data/tracks/typescript/img/icon.svg +3 -8
- metadata +44 -2
@@ -4,10 +4,12 @@ use Test;
|
|
4
4
|
use lib my $dir = $?FILE.IO.dirname;
|
5
5
|
use JSON::Fast;
|
6
6
|
|
7
|
-
my $exercise
|
8
|
-
my $version = v1;
|
9
|
-
my $module
|
10
|
-
|
7
|
+
my Str:D $exercise := 'RNA';
|
8
|
+
my Version:D $version = v1;
|
9
|
+
my Str $module //= $exercise;
|
10
|
+
INIT {
|
11
|
+
plan 10;
|
12
|
+
}
|
11
13
|
|
12
14
|
use-ok $module or bail-out;
|
13
15
|
require ::($module);
|
@@ -30,12 +32,6 @@ for @($c-data<cases>) {
|
|
30
32
|
}
|
31
33
|
}
|
32
34
|
|
33
|
-
if %*ENV<EXERCISM> {
|
34
|
-
if (my $c-data-file = "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json".IO.resolve) ~~ :f {
|
35
|
-
is-deeply $c-data, EVAL('use JSON::Fast; from-json($c-data-file.slurp);'), 'canonical-data';
|
36
|
-
} else { flunk 'canonical-data' }
|
37
|
-
} else { skip }
|
38
|
-
|
39
35
|
done-testing;
|
40
36
|
|
41
37
|
INIT {
|
@@ -109,4 +105,20 @@ $c-data := from-json q:to/END/;
|
|
109
105
|
}
|
110
106
|
|
111
107
|
END
|
108
|
+
|
109
|
+
if %*ENV<EXERCISM> {
|
110
|
+
$module = 'Example';
|
111
|
+
if (my $c-data-file =
|
112
|
+
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
113
|
+
.IO.resolve) ~~ :f
|
114
|
+
{
|
115
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
116
|
+
}
|
117
|
+
else {
|
118
|
+
flunk 'canonical-data';
|
119
|
+
}
|
120
|
+
}
|
121
|
+
else {
|
122
|
+
skip;
|
123
|
+
}
|
112
124
|
}
|
@@ -3,9 +3,9 @@ use v6;
|
|
3
3
|
use Test;
|
4
4
|
use lib $?FILE.IO.dirname;
|
5
5
|
|
6
|
-
my $exercise
|
7
|
-
my $version = v1;
|
8
|
-
my $module
|
6
|
+
my Str:D $exercise := 'Robot';
|
7
|
+
my Version:D $version = v1;
|
8
|
+
my Str $module //= $exercise;
|
9
9
|
plan 8;
|
10
10
|
|
11
11
|
use-ok $module or bail-out;
|
@@ -48,3 +48,9 @@ subtest 'Randomness', {
|
|
48
48
|
}
|
49
49
|
|
50
50
|
done-testing;
|
51
|
+
|
52
|
+
INIT {
|
53
|
+
if %*ENV<EXERCISM> {
|
54
|
+
$module = 'Example';
|
55
|
+
}
|
56
|
+
}
|
@@ -6,7 +6,7 @@ Given a word, compute the scrabble score for that word.
|
|
6
6
|
|
7
7
|
You'll need these:
|
8
8
|
|
9
|
-
```
|
9
|
+
```text
|
10
10
|
Letter Value
|
11
11
|
A, E, I, O, U, L, N, R, S, T 1
|
12
12
|
D, G 2
|
@@ -18,6 +18,7 @@ Q, Z 10
|
|
18
18
|
```
|
19
19
|
|
20
20
|
## Examples
|
21
|
+
|
21
22
|
"cabbage" should be scored as worth 14 points:
|
22
23
|
|
23
24
|
- 3 points for C
|
@@ -34,6 +35,7 @@ And to total:
|
|
34
35
|
- = 14
|
35
36
|
|
36
37
|
## Extensions
|
38
|
+
|
37
39
|
- You can play a double or a triple letter.
|
38
40
|
- You can play a double or a triple word.
|
39
41
|
|
@@ -4,10 +4,12 @@ use Test;
|
|
4
4
|
use lib my $dir = $?FILE.IO.dirname;
|
5
5
|
use JSON::Fast;
|
6
6
|
|
7
|
-
my $exercise
|
8
|
-
my $version = v1;
|
9
|
-
my $module
|
10
|
-
|
7
|
+
my Str:D $exercise := 'Scrabble';
|
8
|
+
my Version:D $version = v1;
|
9
|
+
my Str $module //= $exercise;
|
10
|
+
INIT {
|
11
|
+
plan 13;
|
12
|
+
}
|
11
13
|
|
12
14
|
use-ok $module or bail-out;
|
13
15
|
require ::($module);
|
@@ -24,12 +26,6 @@ require ::($module) <&score>;
|
|
24
26
|
my $c-data;
|
25
27
|
is .<input>.&score, |.<expected description> for @($c-data<cases>);
|
26
28
|
|
27
|
-
if %*ENV<EXERCISM> {
|
28
|
-
if (my $c-data-file = "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json".IO.resolve) ~~ :f {
|
29
|
-
is-deeply $c-data, EVAL('use JSON::Fast; from-json($c-data-file.slurp);'), 'canonical-data';
|
30
|
-
} else { flunk 'canonical-data' }
|
31
|
-
} else { skip }
|
32
|
-
|
33
29
|
done-testing;
|
34
30
|
|
35
31
|
INIT {
|
@@ -109,4 +105,20 @@ $c-data := from-json q:to/END/;
|
|
109
105
|
}
|
110
106
|
|
111
107
|
END
|
108
|
+
|
109
|
+
if %*ENV<EXERCISM> {
|
110
|
+
$module = 'Example';
|
111
|
+
if (my $c-data-file =
|
112
|
+
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
113
|
+
.IO.resolve) ~~ :f
|
114
|
+
{
|
115
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
116
|
+
}
|
117
|
+
else {
|
118
|
+
flunk 'canonical-data';
|
119
|
+
}
|
120
|
+
}
|
121
|
+
else {
|
122
|
+
skip;
|
123
|
+
}
|
112
124
|
}
|
@@ -12,7 +12,8 @@ Given an age in seconds, calculate how old someone would be on:
|
|
12
12
|
- Neptune: orbital period 164.79132 Earth years
|
13
13
|
|
14
14
|
So if you were told someone were 1,000,000,000 seconds old, you should
|
15
|
-
be able to say that they're 31 Earth-years old.
|
15
|
+
be able to say that they're 31.69 Earth-years old. Round all ages to
|
16
|
+
the nearest hundredth of a year.
|
16
17
|
|
17
18
|
If you're wondering why Pluto didn't make the cut, go watch [this
|
18
19
|
youtube video](http://www.youtube.com/watch?v=Z_2gbGXzFbs).
|
@@ -4,10 +4,12 @@ use Test;
|
|
4
4
|
use lib my $dir = $?FILE.IO.dirname;
|
5
5
|
use JSON::Fast;
|
6
6
|
|
7
|
-
my $exercise
|
8
|
-
my $version = v1;
|
9
|
-
my $module
|
10
|
-
|
7
|
+
my Str:D $exercise := 'SpaceAge';
|
8
|
+
my Version:D $version = v1;
|
9
|
+
my Str $module //= $exercise;
|
10
|
+
INIT {
|
11
|
+
plan 10;
|
12
|
+
}
|
11
13
|
|
12
14
|
use-ok $module or bail-out;
|
13
15
|
require ::($module);
|
@@ -24,12 +26,6 @@ require ::($module) <Mercury Venus Earth Mars Jupiter Saturn Uranus Neptune>;
|
|
24
26
|
my $c-data;
|
25
27
|
is (age-on ::(.<planet>): .<seconds>), |.<expected description> for @($c-data<cases>);
|
26
28
|
|
27
|
-
if %*ENV<EXERCISM> {
|
28
|
-
if (my $c-data-file = "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json".IO.resolve) ~~ :f {
|
29
|
-
is-deeply $c-data, EVAL('use JSON::Fast; from-json($c-data-file.slurp);'), 'canonical-data';
|
30
|
-
} else { flunk 'canonical-data' }
|
31
|
-
} else { skip }
|
32
|
-
|
33
29
|
done-testing;
|
34
30
|
|
35
31
|
INIT {
|
@@ -99,4 +95,20 @@ $c-data := from-json q:to/END/;
|
|
99
95
|
}
|
100
96
|
|
101
97
|
END
|
98
|
+
|
99
|
+
if %*ENV<EXERCISM> {
|
100
|
+
$module = 'Example';
|
101
|
+
if (my $c-data-file =
|
102
|
+
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
103
|
+
.IO.resolve) ~~ :f
|
104
|
+
{
|
105
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
106
|
+
}
|
107
|
+
else {
|
108
|
+
flunk 'canonical-data';
|
109
|
+
}
|
110
|
+
}
|
111
|
+
else {
|
112
|
+
skip;
|
113
|
+
}
|
102
114
|
}
|
@@ -11,7 +11,7 @@ Trinary numbers contain three symbols: 0, 1, and 2.
|
|
11
11
|
The last place in a trinary number is the 1's place. The second to last
|
12
12
|
is the 3's place, the third to last is the 9's place, etc.
|
13
13
|
|
14
|
-
```
|
14
|
+
```shell
|
15
15
|
# "102012"
|
16
16
|
1 0 2 0 1 2 # the number
|
17
17
|
1*3^5 + 0*3^4 + 2*3^3 + 0*3^2 + 1*3^1 + 2*3^0 # the value
|
@@ -4,14 +4,13 @@ Given a phrase, count the occurrences of each word in that phrase.
|
|
4
4
|
|
5
5
|
For example for the input `"olly olly in come free"`
|
6
6
|
|
7
|
-
```
|
7
|
+
```text
|
8
8
|
olly: 2
|
9
9
|
in: 1
|
10
10
|
come: 1
|
11
11
|
free: 1
|
12
12
|
```
|
13
13
|
|
14
|
-
|
15
14
|
## Resources
|
16
15
|
|
17
16
|
Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
|
@@ -4,10 +4,12 @@ use Test;
|
|
4
4
|
use lib my $dir = $?FILE.IO.dirname;
|
5
5
|
use JSON::Fast;
|
6
6
|
|
7
|
-
my $exercise
|
8
|
-
my $version = v1;
|
9
|
-
my $module
|
10
|
-
|
7
|
+
my Str:D $exercise := 'WordCount';
|
8
|
+
my Version:D $version = v1;
|
9
|
+
my Str $module //= $exercise;
|
10
|
+
INIT {
|
11
|
+
plan 12;
|
12
|
+
}
|
11
13
|
|
12
14
|
use-ok $module or bail-out;
|
13
15
|
require ::($module);
|
@@ -24,12 +26,6 @@ require ::($module) <&count-words>;
|
|
24
26
|
my $c-data;
|
25
27
|
is-deeply (% = .<input>.&count-words), |.<expected description> for @($c-data<cases>);
|
26
28
|
|
27
|
-
if %*ENV<EXERCISM> {
|
28
|
-
if (my $c-data-file = "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json".IO.resolve) ~~ :f {
|
29
|
-
is-deeply $c-data, EVAL('use JSON::Fast; from-json($c-data-file.slurp);'), 'canonical-data';
|
30
|
-
} else { flunk 'canonical-data' }
|
31
|
-
} else { skip }
|
32
|
-
|
33
29
|
done-testing;
|
34
30
|
|
35
31
|
INIT {
|
@@ -153,4 +149,20 @@ $c-data := from-json q:to/END/;
|
|
153
149
|
}
|
154
150
|
|
155
151
|
END
|
152
|
+
|
153
|
+
if %*ENV<EXERCISM> {
|
154
|
+
$module = 'Example';
|
155
|
+
if (my $c-data-file =
|
156
|
+
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
157
|
+
.IO.resolve) ~~ :f
|
158
|
+
{
|
159
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
160
|
+
}
|
161
|
+
else {
|
162
|
+
flunk 'canonical-data';
|
163
|
+
}
|
164
|
+
}
|
165
|
+
else {
|
166
|
+
skip;
|
167
|
+
}
|
156
168
|
}
|
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
Parse and evaluate simple math word problems returning the answer as an integer.
|
4
4
|
|
5
|
-
|
6
5
|
## Iteration 1 — Addition
|
7
6
|
|
8
7
|
Add two numbers together.
|
@@ -13,7 +12,6 @@ Evaluates to 18.
|
|
13
12
|
|
14
13
|
Handle large numbers and negative numbers.
|
15
14
|
|
16
|
-
|
17
15
|
## Iteration 2 — Subtraction, Multiplication and Division
|
18
16
|
|
19
17
|
Now, perform the other three operations.
|
@@ -30,7 +28,6 @@ Now, perform the other three operations.
|
|
30
28
|
|
31
29
|
5
|
32
30
|
|
33
|
-
|
34
31
|
## Iteration 3 — Multiple Operations
|
35
32
|
|
36
33
|
Handle a set of operations, in sequence.
|
@@ -46,7 +43,6 @@ left-to-right, _ignoring the typical order of operations._
|
|
46
43
|
|
47
44
|
15 (i.e. not 9)
|
48
45
|
|
49
|
-
|
50
46
|
## Bonus — Exponentials
|
51
47
|
|
52
48
|
If you'd like, handle exponentials.
|
@@ -55,7 +51,6 @@ If you'd like, handle exponentials.
|
|
55
51
|
|
56
52
|
32
|
57
53
|
|
58
|
-
|
59
54
|
## Resources
|
60
55
|
|
61
56
|
Remember to check out the Perl 6 [documentation](https://docs.perl6.org/) and
|
@@ -4,10 +4,12 @@ use Test;
|
|
4
4
|
use lib my $dir = $?FILE.IO.dirname;
|
5
5
|
use JSON::Fast;
|
6
6
|
|
7
|
-
my $exercise
|
8
|
-
my $version = v1;
|
9
|
-
my $module
|
10
|
-
|
7
|
+
my Str:D $exercise := 'Wordy';
|
8
|
+
my Version:D $version = v1;
|
9
|
+
my Str $module //= $exercise;
|
10
|
+
INIT {
|
11
|
+
plan 18;
|
12
|
+
}
|
11
13
|
|
12
14
|
use-ok $module or bail-out;
|
13
15
|
require ::($module);
|
@@ -30,12 +32,6 @@ for @($c-data<cases>) {
|
|
30
32
|
}
|
31
33
|
}
|
32
34
|
|
33
|
-
if %*ENV<EXERCISM> {
|
34
|
-
if (my $c-data-file = "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json".IO.resolve) ~~ :f {
|
35
|
-
is-deeply $c-data, EVAL('use JSON::Fast; from-json($c-data-file.slurp);'), 'canonical-data';
|
36
|
-
} else { flunk 'canonical-data' }
|
37
|
-
} else { skip }
|
38
|
-
|
39
35
|
done-testing;
|
40
36
|
|
41
37
|
INIT {
|
@@ -150,4 +146,20 @@ $c-data := from-json q:to/END/;
|
|
150
146
|
}
|
151
147
|
|
152
148
|
END
|
149
|
+
|
150
|
+
if %*ENV<EXERCISM> {
|
151
|
+
$module = 'Example';
|
152
|
+
if (my $c-data-file =
|
153
|
+
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
154
|
+
.IO.resolve) ~~ :f
|
155
|
+
{
|
156
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
157
|
+
}
|
158
|
+
else {
|
159
|
+
flunk 'canonical-data';
|
160
|
+
}
|
161
|
+
}
|
162
|
+
else {
|
163
|
+
skip;
|
164
|
+
}
|
153
165
|
}
|
@@ -5,10 +5,12 @@ use lib #`{{#cdata}}my $dir = #`{{/cdata}}$?FILE.IO.dirname;#`{{#lib_comment}} #
|
|
5
5
|
use JSON::Fast;#`{{/cdata}}#`{{#modules}}
|
6
6
|
use #`{{&use}};#`{{/modules}}
|
7
7
|
|
8
|
-
my $exercise#`{{#exercise}}
|
9
|
-
my $version#`{{#version}} = v#`{{&version}}#`{{/version}};#`{{#version_comment}} #`[#`{{&version_comment}}]#`{{/version_comment}}
|
10
|
-
my $module
|
11
|
-
|
8
|
+
my Str:D $exercise#`{{#exercise}} := '#`{{&exercise}}'#`{{/exercise}};#`{{#exercise_comment}} #`[#`{{&exercise_comment}}]#`{{/exercise_comment}}
|
9
|
+
my Version:D $version#`{{#version}} = v#`{{&version}}#`{{/version}};#`{{#version_comment}} #`[#`{{&version_comment}}]#`{{/version_comment}}
|
10
|
+
my Str $module //= $exercise;#`{{#module_comment}} #`[#`{{&module_comment}}]#`{{/module_comment}}#`{{#plan}}
|
11
|
+
#`{{#cdata}}INIT {
|
12
|
+
#`{{/cdata}}plan #`{{&plan}};#`{{#plan_comment}} #`[#`{{&plan_comment}}]#`{{/plan_comment}}#`{{#cdata}}
|
13
|
+
}#`{{/cdata}}#`{{/plan}}
|
12
14
|
#`{{#use_test_comment}}
|
13
15
|
|
14
16
|
#`[#`{{&use_test_comment}}]#`{{/use_test_comment}}
|
@@ -34,24 +36,33 @@ subtest 'Class methods', {
|
|
34
36
|
#`{{/methods}}#`{{#cdata}}
|
35
37
|
my $c-data;#`{{/cdata}}
|
36
38
|
#`{{&tests}}
|
37
|
-
#`{{#cdata}}#`{{#cdata_test_comment}}
|
38
|
-
#`[#`{{&cdata_test_comment}}]#`{{/cdata_test_comment}}
|
39
|
-
if %*ENV<EXERCISM> {
|
40
|
-
if (my $c-data-file = "$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json".IO.resolve) ~~ :f {
|
41
|
-
is-deeply $c-data, EVAL('use JSON::Fast; from-json($c-data-file.slurp);'), 'canonical-data';
|
42
|
-
} else { flunk 'canonical-data' }
|
43
|
-
} else { skip }
|
44
|
-
#`{{/cdata}}
|
45
39
|
|
46
40
|
done-testing;#`{{#done_testing_comment}} #`[#`{{&done_testing_comment}}]#`{{/done_testing_comment}}#`{{#after_done_testing}}
|
47
41
|
|
48
|
-
#`{{&after_done_testing}}#`{{/after_done_testing}}
|
42
|
+
#`{{&after_done_testing}}#`{{/after_done_testing}}
|
49
43
|
#`{{#INIT_comment}}
|
50
44
|
|
51
45
|
#`[#`{{&INIT_comment}}]#`{{/INIT_comment}}
|
52
46
|
INIT {
|
53
|
-
$c-data := from-json q:to/END/;
|
47
|
+
#`{{#cdata}}$c-data := from-json q:to/END/;
|
54
48
|
|
55
49
|
#`{{&json}}
|
56
50
|
END
|
57
|
-
|
51
|
+
|
52
|
+
#`{{/cdata}} if %*ENV<EXERCISM> {#`{{#exercism_comment}}
|
53
|
+
#`[#`{{&exercism_comment}}]#`{{/exercism_comment}}
|
54
|
+
$module = 'Example';#`{{#cdata}}
|
55
|
+
if (my $c-data-file =
|
56
|
+
"$dir/../../problem-specifications/exercises/{$dir.IO.resolve.basename}/canonical-data.json"
|
57
|
+
.IO.resolve) ~~ :f
|
58
|
+
{
|
59
|
+
is-deeply $c-data, EVAL('from-json $c-data-file.slurp'), 'canonical-data';
|
60
|
+
}
|
61
|
+
else {
|
62
|
+
flunk 'canonical-data';
|
63
|
+
}
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
skip;#`{{/cdata}}
|
67
|
+
}
|
68
|
+
}
|
data/tracks/python/config.json
CHANGED
@@ -834,6 +834,16 @@
|
|
834
834
|
"mathematics"
|
835
835
|
]
|
836
836
|
},
|
837
|
+
{
|
838
|
+
"uuid": "8c89f739-05fb-7b80-b5f9-6ad079c750ba8302be8",
|
839
|
+
"slug": "two-bucket",
|
840
|
+
"difficulty": 5,
|
841
|
+
"topics": [
|
842
|
+
"algorithms",
|
843
|
+
"loops",
|
844
|
+
"conditionals"
|
845
|
+
]
|
846
|
+
},
|
837
847
|
{
|
838
848
|
"uuid": "e7351e8e-d3ff-4621-b818-cd55cf05bffd",
|
839
849
|
"slug": "accumulate",
|