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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 714ae73cefc7a2a7e1951109345f0990d0965f43
|
4
|
+
data.tar.gz: 0ba267cd29b36ca834b159d90b915015260f77f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84549ff0c9b5ec4287fe2f4fae35d22f2ffcd8cc8bd5441bae7a255bdaa7667cde0947a9c623a22d8447bda433c07fe56bf3ab17c7c3c34a372ac71781f3378a
|
7
|
+
data.tar.gz: 29834346cd14bf9bed64b0843c918eeb78277e8f7424664a00ac1a7cd14220c32526c1496c9ca8b0951153ea251f739f28d64710450488b67a6ba6c6302b757b
|
data/lib/trackler/version.rb
CHANGED
@@ -3,5 +3,5 @@ Use lenses to update nested records (specific to languages with immutable data).
|
|
3
3
|
Updating fields of nested records is kind of annoying in Haskell. One solution
|
4
4
|
is to use [lenses](https://wiki.haskell.org/Lens). Implement several record
|
5
5
|
accessing functions using lenses, you may use any library you want. The test
|
6
|
-
suite also allows you to avoid lenses
|
6
|
+
suite also allows you to avoid lenses altogether so you can experiment with
|
7
7
|
different approaches.
|
@@ -3,19 +3,12 @@ Detect palindrome products in a given range.
|
|
3
3
|
A palindromic number is a number that remains the same when its digits are
|
4
4
|
reversed. For example, `121` is a palindromic number but `112` is not.
|
5
5
|
|
6
|
-
Given
|
7
|
-
|
8
|
-
`a` and `b` are integers (possibly, but _not_ necessarily palindromic numbers).
|
6
|
+
Given a range of numbers, find the largest and smallest palindromes which
|
7
|
+
are products of numbers within that range.
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
It's possible (and indeed common) for a palindrome product to be the product
|
14
|
-
of multiple combinations of numbers. For example, the palindrome product `9` has
|
15
|
-
the factors `(1, 9)` and `(3, 3)`.
|
16
|
-
|
17
|
-
Write a program that given a range of integers, returns the smallest and largest
|
18
|
-
palindromic product of factors within that range, along with all the factors in the range for that product.
|
9
|
+
Your solution should return the largest and smallest palindromes, along with the
|
10
|
+
factors of each within the range. If the largest or smallest palindrome has more
|
11
|
+
than one pair of factors within the range, then return all the pairs.
|
19
12
|
|
20
13
|
## Example 1
|
21
14
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "pascals-triangle",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.1.0",
|
4
4
|
"comments": [
|
5
5
|
"Expectations are represented here as an array of arrays.",
|
6
6
|
"How you represent this idiomatically in your language is up to you.",
|
@@ -45,12 +45,6 @@
|
|
45
45
|
"property": "rows",
|
46
46
|
"count": -1,
|
47
47
|
"expected": -1
|
48
|
-
},
|
49
|
-
{
|
50
|
-
"description": "null/no rows",
|
51
|
-
"property": "rows",
|
52
|
-
"count": null,
|
53
|
-
"expected": -1
|
54
48
|
}
|
55
49
|
]
|
56
50
|
}
|
@@ -8,70 +8,71 @@
|
|
8
8
|
typedef struct {
|
9
9
|
const char *text;
|
10
10
|
int number;
|
11
|
-
}
|
11
|
+
} text_to_int_lookup_t;
|
12
12
|
|
13
|
-
static bool
|
13
|
+
static bool is_leap_year(int year)
|
14
14
|
{
|
15
15
|
return ((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0));
|
16
16
|
}
|
17
17
|
|
18
|
-
static int
|
18
|
+
static int days_in_month(int year, int month)
|
19
19
|
{
|
20
|
-
int
|
20
|
+
int number_of_days = 31;
|
21
21
|
|
22
22
|
switch (month) {
|
23
23
|
case 4:
|
24
24
|
case 6:
|
25
25
|
case 9:
|
26
26
|
case 11:
|
27
|
-
|
27
|
+
number_of_days = 30;
|
28
28
|
break;
|
29
29
|
case 2:
|
30
|
-
if (
|
31
|
-
|
30
|
+
if (is_leap_year(year)) {
|
31
|
+
number_of_days = 29;
|
32
32
|
} else {
|
33
|
-
|
33
|
+
number_of_days = 28;
|
34
34
|
}
|
35
35
|
break;
|
36
36
|
}
|
37
|
-
return
|
37
|
+
return number_of_days;
|
38
38
|
}
|
39
39
|
|
40
|
-
static int
|
41
|
-
|
40
|
+
static int get_number_given_text(const char *text,
|
41
|
+
text_to_int_lookup_t * lookup,
|
42
|
+
size_t number_entries)
|
42
43
|
{
|
43
|
-
int
|
44
|
+
int match_number = -1;
|
44
45
|
|
45
|
-
for (size_t index = 0; index <
|
46
|
+
for (size_t index = 0; index < number_entries; index++) {
|
46
47
|
if (0 == strcmp(text, lookup[index].text)) {
|
47
|
-
|
48
|
+
match_number = lookup[index].number;
|
48
49
|
break;
|
49
50
|
}
|
50
51
|
}
|
51
|
-
return
|
52
|
+
return match_number;
|
52
53
|
}
|
53
54
|
|
54
|
-
static int
|
55
|
-
|
55
|
+
static int get_day_of_week_from_date(unsigned int year, unsigned int month,
|
56
|
+
unsigned int day)
|
56
57
|
{
|
57
|
-
struct tm
|
58
|
-
time_t
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
return (localtime(&
|
58
|
+
struct tm first_day_of_test_month;
|
59
|
+
time_t midnight_first_day_of_test_month;
|
60
|
+
|
61
|
+
first_day_of_test_month.tm_year = year - 1900;
|
62
|
+
first_day_of_test_month.tm_mon = month - 1;
|
63
|
+
first_day_of_test_month.tm_mday = day;
|
64
|
+
first_day_of_test_month.tm_hour = 0;
|
65
|
+
first_day_of_test_month.tm_min = 0;
|
66
|
+
first_day_of_test_month.tm_sec = 0;
|
67
|
+
first_day_of_test_month.tm_isdst = 0;
|
68
|
+
midnight_first_day_of_test_month = mktime(&first_day_of_test_month);
|
69
|
+
|
70
|
+
return (localtime(&midnight_first_day_of_test_month)->tm_wday);
|
70
71
|
}
|
71
72
|
|
72
|
-
static int
|
73
|
+
static int get_week_of_month(const char *week)
|
73
74
|
{
|
74
|
-
|
75
|
+
text_to_int_lookup_t which_week_of_month_lookup[] = {
|
75
76
|
{"first", 1},
|
76
77
|
{"second", 2},
|
77
78
|
{"third", 3},
|
@@ -81,14 +82,14 @@ static int getWeekOfMonth(const char *week)
|
|
81
82
|
{"teenth", 7}
|
82
83
|
};
|
83
84
|
|
84
|
-
return
|
85
|
-
|
86
|
-
|
85
|
+
return get_number_given_text(week, &which_week_of_month_lookup[0],
|
86
|
+
sizeof(which_week_of_month_lookup) /
|
87
|
+
sizeof(text_to_int_lookup_t));
|
87
88
|
}
|
88
89
|
|
89
|
-
static int
|
90
|
+
static int get_requested_day_of_week(const char *day_of_week)
|
90
91
|
{
|
91
|
-
|
92
|
+
text_to_int_lookup_t day_lookup[] = {
|
92
93
|
{"Sunday", 0},
|
93
94
|
{"Monday", 1},
|
94
95
|
{"Tuesday", 2},
|
@@ -98,42 +99,45 @@ static int getRequestedDayOfWeek(const char *dayOfWeek)
|
|
98
99
|
{"Saturday", 6}
|
99
100
|
};
|
100
101
|
|
101
|
-
return
|
102
|
-
|
102
|
+
return get_number_given_text(day_of_week, &day_lookup[0],
|
103
|
+
sizeof(day_lookup) /
|
104
|
+
sizeof(text_to_int_lookup_t));
|
103
105
|
}
|
104
106
|
|
105
|
-
int
|
106
|
-
|
107
|
+
int meetup_day_of_month(unsigned int year, unsigned int month, const char *week,
|
108
|
+
const char *day_of_week)
|
107
109
|
{
|
108
|
-
int
|
109
|
-
int
|
110
|
-
int
|
111
|
-
int
|
112
|
-
int
|
110
|
+
int day_of_month = BAD_DATE_REQUESTED;
|
111
|
+
int baseline_day_of_week;
|
112
|
+
int days_in_test_month = days_in_month(year, month);
|
113
|
+
int day_offset;
|
114
|
+
int reference_day = 1; // used to calculate a baseline day of week given a target date.
|
113
115
|
|
114
|
-
int
|
115
|
-
int
|
116
|
+
int which_week_of_month = get_week_of_month(week);
|
117
|
+
int target_day_in_week = get_requested_day_of_week(day_of_week);
|
116
118
|
|
117
119
|
// check for valid lookup...
|
118
|
-
if ((
|
120
|
+
if ((which_week_of_month >= 0) && (target_day_in_week >= 0)) {
|
119
121
|
// first - fifth Xday of month
|
120
|
-
if (
|
121
|
-
|
122
|
+
if (which_week_of_month <= 5) {
|
123
|
+
day_offset = 1 + ((which_week_of_month - 1) * 7);
|
122
124
|
} else {
|
123
125
|
// code for last Xday of month
|
124
|
-
if (6 ==
|
125
|
-
|
126
|
+
if (6 == which_week_of_month) {
|
127
|
+
reference_day = days_in_test_month - 6; // use the last unique day near end of month as reference
|
126
128
|
} else {
|
127
|
-
|
129
|
+
reference_day = 13; // use first teenth day as reference
|
128
130
|
}
|
129
|
-
|
131
|
+
day_offset = reference_day;
|
130
132
|
}
|
131
|
-
|
132
|
-
|
133
|
+
baseline_day_of_week =
|
134
|
+
get_day_of_week_from_date(year, month, reference_day);
|
135
|
+
day_of_month =
|
136
|
+
day_offset + ((target_day_in_week + 7 - baseline_day_of_week) % 7);
|
133
137
|
}
|
134
138
|
|
135
|
-
if (
|
136
|
-
|
139
|
+
if (day_of_month > days_in_test_month) {
|
140
|
+
day_of_month = BAD_DATE_REQUESTED;
|
137
141
|
}
|
138
|
-
return
|
142
|
+
return day_of_month;
|
139
143
|
}
|
@@ -1,7 +1,7 @@
|
|
1
1
|
#ifndef MEETUP_H
|
2
2
|
#define MEETUP_H
|
3
3
|
|
4
|
-
int
|
5
|
-
|
4
|
+
int meetup_day_of_month(unsigned int year, unsigned int month, const char *week,
|
5
|
+
const char *day_of_week);
|
6
6
|
|
7
7
|
#endif
|
@@ -2,18 +2,18 @@
|
|
2
2
|
#include "../src/meetup.h"
|
3
3
|
|
4
4
|
// Using XMacros to create the tests
|
5
|
-
#define EXPAND_MEETUP_TEST_AS_TEST(test_name, year, month, week,
|
5
|
+
#define EXPAND_MEETUP_TEST_AS_TEST(test_name, year, month, week, day_of_week, day_of_month_expected)\
|
6
6
|
void test_name(void)\
|
7
7
|
{\
|
8
|
-
int
|
8
|
+
int actual_day_of_month = meetup_day_of_month(year, month, week, day_of_week);\
|
9
9
|
\
|
10
|
-
TEST_ASSERT_EQUAL_INT(
|
10
|
+
TEST_ASSERT_EQUAL_INT(day_of_month_expected, actual_day_of_month);\
|
11
11
|
}\
|
12
12
|
|
13
13
|
|
14
14
|
// below expands to multiple routines...that are all designed to test the returned day of month
|
15
15
|
// the fields are:
|
16
|
-
// text - test name, int year, int month, char *week, char *
|
16
|
+
// text - test name, int year, int month, char *week, char *day_of_week, int day_of_month_expected (0=invalid)
|
17
17
|
|
18
18
|
#define MEETUP_TESTS(ENTRY) \
|
19
19
|
ENTRY(test_monteenth_of_May_2013, 2013, 5, "teenth", "Monday", 13)\
|
data/tracks/cfml/config.json
CHANGED
@@ -1,169 +1,179 @@
|
|
1
|
-
{
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
1
|
+
{
|
2
|
+
"active":true,
|
3
|
+
"blurb":"CFML (ColdFusion Markup Language) is an open source and commercial (JIT) compiled dynamic and loosely typed JVM scripting language that embodies classic OO, and functional programming, making it easy to learn, fun to use. CFML brings the power and scalability of the J2EE ecosystem but without the boilerplate of Java.",
|
4
|
+
"exercises":[
|
5
|
+
{
|
6
|
+
"difficulty":1,
|
7
|
+
"slug":"hello-world",
|
8
|
+
"topics":null,
|
9
|
+
"uuid":"ab04a390-0969-4a17-8081-c852b23ed88c"
|
10
|
+
},
|
11
|
+
{
|
12
|
+
"core":false,
|
13
|
+
"difficulty":1,
|
14
|
+
"slug":"leap",
|
15
|
+
"topics":null,
|
16
|
+
"unlocked_by":null,
|
17
|
+
"uuid":"03a98e5b-03b7-45e5-a580-611ef5dab4e5"
|
18
|
+
},
|
19
|
+
{
|
20
|
+
"difficulty":1,
|
21
|
+
"slug":"raindrops",
|
22
|
+
"topics":null,
|
23
|
+
"uuid":"9273C0A7-CB7E-4F3F-8993-F1621CE1F700"
|
24
|
+
},
|
25
|
+
{
|
26
|
+
"difficulty":1,
|
27
|
+
"slug":"scrabble-score",
|
28
|
+
"topics":null,
|
29
|
+
"uuid":"1065F8DF-E6C6-4473-A633-4FA4B49A5314"
|
30
|
+
},
|
31
|
+
{
|
32
|
+
"difficulty":1,
|
33
|
+
"slug":"difference-of-squares",
|
34
|
+
"topics":null,
|
35
|
+
"uuid":"4E91AD44-8F3D-40DC-899E-253C91B134F6"
|
36
|
+
},
|
37
|
+
{
|
38
|
+
"difficulty":1,
|
39
|
+
"slug":"secret-handshake",
|
40
|
+
"topics":null,
|
41
|
+
"uuid":"0AC79782-B370-4954-8455-6300A734E1B8"
|
42
|
+
},
|
43
|
+
{
|
44
|
+
"difficulty":1,
|
45
|
+
"slug":"space-age",
|
46
|
+
"topics":null,
|
47
|
+
"uuid":"0B14F23A-DAD4-4965-8ABD-8A107DFD6C00"
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"difficulty":1,
|
51
|
+
"slug":"acronym",
|
52
|
+
"topics":null,
|
53
|
+
"uuid":"9894F2F7-2DBE-4001-885B-FD2C029C6731"
|
54
|
+
},
|
55
|
+
{
|
56
|
+
"difficulty":1,
|
57
|
+
"slug":"rna-transcription",
|
58
|
+
"topics":null,
|
59
|
+
"uuid":"11C48AFF-4A54-4B3C-AF5E-53048D4BA98B"
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"difficulty":1,
|
63
|
+
"slug":"pangram",
|
64
|
+
"topics":null,
|
65
|
+
"uuid":"113A2FF7-E72E-49DD-A2CF-0EB25894707D"
|
66
|
+
},
|
67
|
+
{
|
68
|
+
"difficulty":1,
|
69
|
+
"slug":"hamming",
|
70
|
+
"topics":null,
|
71
|
+
"uuid":"4063A554-424C-4173-81EE-FEAC7CC51E8A"
|
72
|
+
},
|
73
|
+
{
|
74
|
+
"difficulty":1,
|
75
|
+
"slug":"gigasecond",
|
76
|
+
"topics":null,
|
77
|
+
"uuid":"00B82E7F-804C-4401-BB7F-0565DEA02567"
|
78
|
+
},
|
79
|
+
{
|
80
|
+
"difficulty":1,
|
81
|
+
"slug":"sum-of-multiples",
|
82
|
+
"topics":null,
|
83
|
+
"uuid":"C6F38ACB-A6BD-41EE-A2F8-A9680B3F61D2"
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"difficulty":1,
|
87
|
+
"slug":"luhn",
|
88
|
+
"topics":null,
|
89
|
+
"uuid":"685ADB7B-1DC9-4409-993D-51034DF6F744"
|
90
|
+
},
|
91
|
+
{
|
92
|
+
"difficulty":1,
|
93
|
+
"slug":"triangle",
|
94
|
+
"topics":null,
|
95
|
+
"uuid":"8D0FA71A-3314-432E-BF1F-E6A5F823FC36"
|
96
|
+
},
|
97
|
+
{
|
98
|
+
"difficulty":1,
|
99
|
+
"slug":"largest-series-product",
|
100
|
+
"topics":null,
|
101
|
+
"uuid":"A35C9BE1-F26A-40C8-8C05-99C33C552E6F"
|
102
|
+
},
|
103
|
+
{
|
104
|
+
"difficulty":1,
|
105
|
+
"slug":"grains",
|
106
|
+
"topics":null,
|
107
|
+
"uuid":"E25686EE-B888-4533-86C2-5A5D96F5270E"
|
108
|
+
},
|
109
|
+
{
|
110
|
+
"difficulty":1,
|
111
|
+
"slug":"atbash-cipher",
|
112
|
+
"topics":null,
|
113
|
+
"uuid":"C35391BD-900F-4756-8DFE-A96EA04250F8"
|
114
|
+
},
|
115
|
+
{
|
116
|
+
"difficulty":1,
|
117
|
+
"slug":"nth-prime",
|
118
|
+
"topics":null,
|
119
|
+
"uuid":"15151E41-195C-40DD-B296-C2C19B38CAEA"
|
120
|
+
},
|
121
|
+
{
|
122
|
+
"difficulty":1,
|
123
|
+
"slug":"pig-latin",
|
124
|
+
"topics":null,
|
125
|
+
"uuid":"3FDDA0E3-AE90-4834-B6DC-A5E367A5A029"
|
126
|
+
},
|
127
|
+
{
|
128
|
+
"difficulty":1,
|
129
|
+
"slug":"flatten-array",
|
130
|
+
"topics":null,
|
131
|
+
"uuid":"B0E72A09-49E2-4973-BFF4-88C678F4BE55"
|
132
|
+
},
|
133
|
+
{
|
134
|
+
"difficulty":1,
|
135
|
+
"slug":"saddle-points",
|
136
|
+
"topics":null,
|
137
|
+
"uuid":"063C4BB9-3280-4C69-B164-237732AE00EF"
|
138
|
+
},
|
139
|
+
{
|
140
|
+
"difficulty":1,
|
141
|
+
"slug":"diamond",
|
142
|
+
"topics":null,
|
143
|
+
"uuid":"DECA4C79-DA5D-43A8-90B8-3A5BE73EAFF5"
|
144
|
+
},
|
145
|
+
{
|
146
|
+
"difficulty":1,
|
147
|
+
"slug":"isogram",
|
148
|
+
"topics":null,
|
149
|
+
"uuid":"FC8922A3-E29D-451D-9947-A2781C0FF787"
|
150
|
+
},
|
151
|
+
{
|
152
|
+
"difficulty":1,
|
153
|
+
"slug":"bob",
|
154
|
+
"topics":null,
|
155
|
+
"uuid":"12BBECF4-93EB-40F2-AC13-8CF28B550F0A"
|
156
|
+
},
|
157
|
+
{
|
158
|
+
"difficulty":1,
|
159
|
+
"slug":"word-count",
|
160
|
+
"topics":null,
|
161
|
+
"uuid":"C61E97BE-6C66-4F1F-87ED-D21C4ED2A8E2"
|
162
|
+
},
|
163
|
+
{
|
164
|
+
"difficulty":5,
|
165
|
+
"slug":"markdown",
|
166
|
+
"uuid":"4594B907-8080-4A23-AD06-BE85FC28D088",
|
167
|
+
"topics":[
|
168
|
+
|
169
|
+
]
|
170
|
+
}
|
171
|
+
],
|
172
|
+
"foregone":[
|
173
|
+
|
174
|
+
],
|
175
|
+
"ignore_pattern":"Solution",
|
176
|
+
"language":"CFML",
|
177
|
+
"solution_pattern":"Solution.cfc",
|
178
|
+
"test_pattern":"Test.cfc"
|
179
|
+
}
|