trackler 2.2.1.48 → 2.2.1.49
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/grains/canonical-data.json +1 -1
- data/problem-specifications/exercises/isbn-verifier/description.md +1 -1
- data/tracks/dart/exercises/anagram/pubspec.lock +10 -10
- data/tracks/dart/exercises/bob/pubspec.lock +4 -4
- data/tracks/dart/exercises/difference-of-squares/pubspec.lock +4 -4
- data/tracks/dart/exercises/gigasecond/pubspec.lock +4 -4
- data/tracks/dart/exercises/hamming/pubspec.lock +4 -4
- data/tracks/dart/exercises/hello-world/pubspec.lock +4 -4
- data/tracks/dart/exercises/leap/pubspec.lock +4 -4
- data/tracks/dart/exercises/phone-number/pubspec.lock +4 -4
- data/tracks/dart/exercises/raindrops/pubspec.lock +17 -5
- data/tracks/dart/exercises/rna-transcription/pubspec.lock +4 -4
- data/tracks/dart/exercises/word-count/pubspec.lock +4 -4
- data/tracks/dart/pubspec.lock +3 -3
- data/tracks/fsharp/exercises/largest-series-product/Example.fs +18 -4
- data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fs +1 -1
- data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +80 -36
- data/tracks/fsharp/generators/Exercise.fs +1 -1
- data/tracks/fsharp/generators/Generators.fs +10 -0
- data/tracks/gnu-apl/config.json +14 -0
- data/tracks/gnu-apl/exercises/difference-of-squares/README.md +19 -0
- data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares-example.apl +13 -0
- data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares.tc +38 -0
- data/tracks/gnu-apl/exercises/pangram/README.md +15 -0
- data/tracks/gnu-apl/exercises/pangram/pangram-example.apl +14 -0
- data/tracks/gnu-apl/exercises/pangram/pangram.tc +40 -0
- data/tracks/gnu-apl/exercises/raindrops/raindrops.tc +1 -1
- data/tracks/java/exercises/bracket-push/.meta/version +1 -0
- data/tracks/java/exercises/complex-numbers/.meta/version +1 -0
- data/tracks/java/exercises/ocr-numbers/.meta/version +1 -0
- data/tracks/java/exercises/queen-attack/.meta/version +1 -0
- data/tracks/java/exercises/rectangles/.meta/version +1 -0
- data/tracks/java/exercises/robot-simulator/.meta/version +1 -0
- data/tracks/java/exercises/secret-handshake/.meta/version +1 -0
- data/tracks/java/exercises/sublist/.meta/version +1 -0
- data/tracks/perl6/exercises/accumulate/accumulate.t +1 -6
- data/tracks/perl6/exercises/all-your-base/all-your-base.t +14 -19
- data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -1
- data/tracks/perl6/exercises/allergies/Example.pm6 +1 -1
- data/tracks/perl6/exercises/allergies/allergies.t +25 -29
- data/tracks/perl6/exercises/allergies/example.yaml +11 -10
- data/tracks/perl6/exercises/anagram/anagram.t +14 -19
- data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +14 -19
- data/tracks/perl6/exercises/bob/bob.t +16 -23
- data/tracks/perl6/exercises/bob/example.yaml +1 -3
- data/tracks/perl6/exercises/clock/clock.t +14 -19
- data/tracks/perl6/exercises/flatten-array/flatten-array.t +14 -19
- data/tracks/perl6/exercises/grade-school/grade-school.t +1 -6
- data/tracks/perl6/exercises/grains/grains.t +15 -20
- data/tracks/perl6/exercises/hello-world/example.yaml +1 -3
- data/tracks/perl6/exercises/hello-world/hello-world.t +16 -23
- data/tracks/perl6/exercises/leap/leap.t +14 -19
- data/tracks/perl6/exercises/linked-list/example.yaml +59 -59
- data/tracks/perl6/exercises/linked-list/linked-list.t +59 -64
- data/tracks/perl6/exercises/luhn/luhn.t +14 -19
- data/tracks/perl6/exercises/phone-number/phone-number.t +14 -19
- data/tracks/perl6/exercises/raindrops/raindrops.t +14 -19
- data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +14 -19
- data/tracks/perl6/exercises/robot-name/robot-name.t +1 -6
- data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +14 -19
- data/tracks/perl6/exercises/space-age/space-age.t +14 -19
- data/tracks/perl6/exercises/word-count/word-count.t +14 -19
- data/tracks/perl6/exercises/wordy/wordy.t +14 -19
- data/tracks/perl6/templates/test.mustache +19 -25
- data/tracks/purescript/config.json +12 -0
- data/tracks/purescript/exercises/sum-of-multiples/README.md +15 -0
- data/tracks/purescript/exercises/sum-of-multiples/bower.json +26 -0
- data/tracks/purescript/exercises/sum-of-multiples/examples/src/SumOfMultiples.purs +16 -0
- data/tracks/purescript/exercises/sum-of-multiples/src/SumOfMultiples.purs +3 -0
- data/tracks/purescript/exercises/sum-of-multiples/test/Main.purs +63 -0
- data/tracks/python/README.md +5 -1
- data/tracks/python/config.json +52 -9
- data/tracks/python/exercises/allergies/allergies_test.py +7 -7
- data/tracks/python/exercises/allergies/example.py +1 -1
- data/tracks/python/exercises/binary-search/binary_search_test.py +8 -5
- data/tracks/python/exercises/binary/binary_test.py +8 -4
- data/tracks/python/exercises/book-store/example.py +1 -1
- data/tracks/python/exercises/clock/clock.py +3 -0
- data/tracks/python/exercises/clock/clock_test.py +16 -16
- data/tracks/python/exercises/clock/example.py +1 -1
- data/tracks/python/exercises/list-ops/example.py +10 -29
- data/tracks/python/exercises/list-ops/list_ops.py +8 -12
- data/tracks/python/exercises/list-ops/list_ops_test.py +55 -86
- data/tracks/python/exercises/meetup/meetup_test.py +2 -2
- data/tracks/python/exercises/minesweeper/minesweeper_test.py +6 -3
- data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +11 -8
- data/tracks/python/exercises/pangram/pangram_test.py +25 -16
- data/tracks/python/exercises/point-mutations/point_mutations.py +1 -1
- data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +2 -1
- data/tracks/python/exercises/saddle-points/saddle_points_test.py +2 -1
- data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +4 -2
- data/tracks/python/exercises/triangle/triangle_test.py +10 -5
- data/tracks/python/exercises/wordy/wordy_test.py +8 -5
- data/tracks/python/exercises/zipper/README.md +43 -0
- data/tracks/python/exercises/zipper/example.py +41 -0
- data/tracks/python/exercises/zipper/zipper.py +28 -0
- data/tracks/python/exercises/zipper/zipper_test.py +82 -0
- data/tracks/racket/.travis.yml +1 -1
- data/tracks/racket/config.json +14 -0
- data/tracks/racket/exercises/meetup/README.md +54 -0
- data/tracks/racket/exercises/meetup/example.rkt +45 -0
- data/tracks/racket/exercises/meetup/meetup-test.rkt +39 -0
- data/tracks/racket/exercises/meetup/meetup.rkt +3 -0
- metadata +29 -2
@@ -12,7 +12,7 @@ packages:
|
|
12
12
|
name: args
|
13
13
|
url: "https://pub.dartlang.org"
|
14
14
|
source: hosted
|
15
|
-
version: "1.0.
|
15
|
+
version: "1.0.1"
|
16
16
|
async:
|
17
17
|
description:
|
18
18
|
name: async
|
@@ -24,7 +24,7 @@ packages:
|
|
24
24
|
name: barback
|
25
25
|
url: "https://pub.dartlang.org"
|
26
26
|
source: hosted
|
27
|
-
version: "0.15.2+
|
27
|
+
version: "0.15.2+13"
|
28
28
|
boolean_selector:
|
29
29
|
description:
|
30
30
|
name: boolean_selector
|
@@ -90,7 +90,7 @@ packages:
|
|
90
90
|
name: http
|
91
91
|
url: "https://pub.dartlang.org"
|
92
92
|
source: hosted
|
93
|
-
version: "0.11.3+
|
93
|
+
version: "0.11.3+16"
|
94
94
|
http_multi_server:
|
95
95
|
description:
|
96
96
|
name: http_multi_server
|
@@ -204,7 +204,7 @@ packages:
|
|
204
204
|
name: shelf_static
|
205
205
|
url: "https://pub.dartlang.org"
|
206
206
|
source: hosted
|
207
|
-
version: "0.2.
|
207
|
+
version: "0.2.6"
|
208
208
|
shelf_web_socket:
|
209
209
|
description:
|
210
210
|
name: shelf_web_socket
|
data/tracks/dart/pubspec.lock
CHANGED
@@ -24,7 +24,7 @@ packages:
|
|
24
24
|
name: barback
|
25
25
|
url: "https://pub.dartlang.org"
|
26
26
|
source: hosted
|
27
|
-
version: "0.15.2+
|
27
|
+
version: "0.15.2+13"
|
28
28
|
boolean_selector:
|
29
29
|
description:
|
30
30
|
name: boolean_selector
|
@@ -96,7 +96,7 @@ packages:
|
|
96
96
|
name: http
|
97
97
|
url: "https://pub.dartlang.org"
|
98
98
|
source: hosted
|
99
|
-
version: "0.11.3+
|
99
|
+
version: "0.11.3+16"
|
100
100
|
http_multi_server:
|
101
101
|
description:
|
102
102
|
name: http_multi_server
|
@@ -210,7 +210,7 @@ packages:
|
|
210
210
|
name: shelf_static
|
211
211
|
url: "https://pub.dartlang.org"
|
212
212
|
source: hosted
|
213
|
-
version: "0.2.
|
213
|
+
version: "0.2.6"
|
214
214
|
shelf_web_socket:
|
215
215
|
description:
|
216
216
|
name: shelf_web_socket
|
@@ -17,11 +17,25 @@ let slices size list =
|
|
17
17
|
|
18
18
|
List.init sliceCount slice
|
19
19
|
|
20
|
-
let
|
21
|
-
|
22
|
-
|
20
|
+
let allDigits input =
|
21
|
+
input
|
22
|
+
|> Seq.forall Char.IsDigit
|
23
|
+
|
24
|
+
let isInvalidCase input seriesLength =
|
25
|
+
let inputLenth = String.length input
|
26
|
+
|
27
|
+
inputLenth < seriesLength
|
28
|
+
|| inputLenth = 0 && seriesLength > 0
|
29
|
+
|| seriesLength < 0
|
30
|
+
|| not (allDigits input)
|
31
|
+
|
32
|
+
let largestProduct input seriesLength : int option =
|
33
|
+
match isInvalidCase input seriesLength with
|
34
|
+
| true -> None
|
35
|
+
| false ->
|
23
36
|
input
|
24
37
|
|> digits
|
25
38
|
|> slices seriesLength
|
26
39
|
|> List.map (List.fold (*) 1)
|
27
|
-
|> List.max
|
40
|
+
|> List.max
|
41
|
+
|> Some
|
@@ -1,40 +1,84 @@
|
|
1
|
+
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
2
|
+
|
1
3
|
module LargestSeriesProductTest
|
2
4
|
|
3
|
-
open Xunit
|
4
5
|
open FsUnit.Xunit
|
5
|
-
open
|
6
|
+
open Xunit
|
7
|
+
|
6
8
|
open LargestSeriesProduct
|
7
|
-
|
8
|
-
[<
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
let
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
[<
|
34
|
-
let ``
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
[<Fact(Skip = "Remove to run test")>]
|
39
|
-
let ``
|
40
|
-
|
9
|
+
|
10
|
+
[<Fact>]
|
11
|
+
let ``Finds the largest product if span equals length`` () =
|
12
|
+
let digits = "29"
|
13
|
+
largestProduct digits 2 |> should equal (Some 18)
|
14
|
+
|
15
|
+
[<Fact(Skip = "Remove to run test")>]
|
16
|
+
let ``Can find the largest product of 2 with numbers in order`` () =
|
17
|
+
let digits = "0123456789"
|
18
|
+
largestProduct digits 2 |> should equal (Some 72)
|
19
|
+
|
20
|
+
[<Fact(Skip = "Remove to run test")>]
|
21
|
+
let ``Can find the largest product of 2`` () =
|
22
|
+
let digits = "576802143"
|
23
|
+
largestProduct digits 2 |> should equal (Some 48)
|
24
|
+
|
25
|
+
[<Fact(Skip = "Remove to run test")>]
|
26
|
+
let ``Can find the largest product of 3 with numbers in order`` () =
|
27
|
+
let digits = "0123456789"
|
28
|
+
largestProduct digits 3 |> should equal (Some 504)
|
29
|
+
|
30
|
+
[<Fact(Skip = "Remove to run test")>]
|
31
|
+
let ``Can find the largest product of 3`` () =
|
32
|
+
let digits = "1027839564"
|
33
|
+
largestProduct digits 3 |> should equal (Some 270)
|
34
|
+
|
35
|
+
[<Fact(Skip = "Remove to run test")>]
|
36
|
+
let ``Can find the largest product of 5 with numbers in order`` () =
|
37
|
+
let digits = "0123456789"
|
38
|
+
largestProduct digits 5 |> should equal (Some 15120)
|
39
|
+
|
40
|
+
[<Fact(Skip = "Remove to run test")>]
|
41
|
+
let ``Can get the largest product of a big number`` () =
|
42
|
+
let digits = "73167176531330624919225119674426574742355349194934"
|
43
|
+
largestProduct digits 6 |> should equal (Some 23520)
|
44
|
+
|
45
|
+
[<Fact(Skip = "Remove to run test")>]
|
46
|
+
let ``Reports zero if the only digits are zero`` () =
|
47
|
+
let digits = "0000"
|
48
|
+
largestProduct digits 2 |> should equal (Some 0)
|
49
|
+
|
50
|
+
[<Fact(Skip = "Remove to run test")>]
|
51
|
+
let ``Reports zero if all spans include zero`` () =
|
52
|
+
let digits = "99099"
|
53
|
+
largestProduct digits 3 |> should equal (Some 0)
|
54
|
+
|
55
|
+
[<Fact(Skip = "Remove to run test")>]
|
56
|
+
let ``Rejects span longer than string length`` () =
|
57
|
+
let digits = "123"
|
58
|
+
largestProduct digits 4 |> should equal None
|
59
|
+
|
60
|
+
[<Fact(Skip = "Remove to run test")>]
|
61
|
+
let ``Reports 1 for empty string and empty product (0 span)`` () =
|
62
|
+
let digits = ""
|
63
|
+
largestProduct digits 0 |> should equal (Some 1)
|
64
|
+
|
65
|
+
[<Fact(Skip = "Remove to run test")>]
|
66
|
+
let ``Reports 1 for nonempty string and empty product (0 span)`` () =
|
67
|
+
let digits = "123"
|
68
|
+
largestProduct digits 0 |> should equal (Some 1)
|
69
|
+
|
70
|
+
[<Fact(Skip = "Remove to run test")>]
|
71
|
+
let ``Rejects empty string and nonzero span`` () =
|
72
|
+
let digits = ""
|
73
|
+
largestProduct digits 1 |> should equal None
|
74
|
+
|
75
|
+
[<Fact(Skip = "Remove to run test")>]
|
76
|
+
let ``Rejects invalid character in digits`` () =
|
77
|
+
let digits = "1234a5"
|
78
|
+
largestProduct digits 2 |> should equal None
|
79
|
+
|
80
|
+
[<Fact(Skip = "Remove to run test")>]
|
81
|
+
let ``Rejects negative span`` () =
|
82
|
+
let digits = "12345"
|
83
|
+
largestProduct digits -1 |> should equal None
|
84
|
+
|
@@ -218,7 +218,7 @@ type Exercise() =
|
|
218
218
|
canonicalDataCase.Properties
|
219
219
|
|> Map.toList
|
220
220
|
|> List.map fst
|
221
|
-
|> List.except ["property"; "expected"; "description"]
|
221
|
+
|> List.except ["property"; "expected"; "description"; "comments"]
|
222
222
|
|
223
223
|
// Utility methods to customize rendered output
|
224
224
|
|
@@ -154,6 +154,16 @@ type KindergartenGarden() =
|
|
154
154
|
|
155
155
|
override this.UseFullMethodName canonicalDataCase = true
|
156
156
|
|
157
|
+
type LargestSeriesProduct() =
|
158
|
+
inherit Exercise()
|
159
|
+
|
160
|
+
override this.PropertiesWithIdentifier canonicalDataCase = ["digits"]
|
161
|
+
|
162
|
+
override this.RenderExpected (canonicalDataCase, key, value) =
|
163
|
+
match value :?> int64 with
|
164
|
+
| -1L -> "None"
|
165
|
+
| _ -> value :?> int64 |> sprintf "(Some %d)"
|
166
|
+
|
157
167
|
type Leap() =
|
158
168
|
inherit Exercise()
|
159
169
|
|
data/tracks/gnu-apl/config.json
CHANGED
@@ -38,6 +38,20 @@
|
|
38
38
|
"core": true,
|
39
39
|
"difficulty": 1,
|
40
40
|
"topics": ["strings", "residue", "conditions"]
|
41
|
+
},
|
42
|
+
{
|
43
|
+
"uuid": "b9d47ae7-0df7-2a80-cbe1-a40548a641756b77e3f",
|
44
|
+
"slug": "difference-of-squares",
|
45
|
+
"core": true,
|
46
|
+
"difficulty": 1,
|
47
|
+
"topics": ["reduce", "arrays"]
|
48
|
+
},
|
49
|
+
{
|
50
|
+
"uuid": "a6da3d26-0b3f-cb80-478f-0da928bdbf2975c8605",
|
51
|
+
"slug": "pangram",
|
52
|
+
"core": true,
|
53
|
+
"difficulty": 1,
|
54
|
+
"topics": ["strings", "characters"]
|
41
55
|
}
|
42
56
|
],
|
43
57
|
"deprecated": [
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Difference Of Squares
|
2
|
+
|
3
|
+
Find the difference between the square of the sum and the sum of the squares of the first N natural numbers.
|
4
|
+
|
5
|
+
The square of the sum of the first ten natural numbers is
|
6
|
+
(1 + 2 + ... + 10)² = 55² = 3025.
|
7
|
+
|
8
|
+
The sum of the squares of the first ten natural numbers is
|
9
|
+
1² + 2² + ... + 10² = 385.
|
10
|
+
|
11
|
+
Hence the difference between the square of the sum of the first
|
12
|
+
ten natural numbers and the sum of the squares of the first ten
|
13
|
+
natural numbers is 3025 - 385 = 2640.
|
14
|
+
## Source
|
15
|
+
|
16
|
+
Problem 6 at Project Euler [http://projecteuler.net/problem=6](http://projecteuler.net/problem=6)
|
17
|
+
|
18
|
+
## Submitting Incomplete Solutions
|
19
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,38 @@
|
|
1
|
+
log←'./difference-of-squares.tc.log'
|
2
|
+
⍎ ')COPY ',(⎕FIO 30),'/../../test.apl'
|
3
|
+
|
4
|
+
test∆copy_relative 'difference-of-squares.apl'
|
5
|
+
test∆clear_log log
|
6
|
+
|
7
|
+
⍝ ∇square_of_sum
|
8
|
+
|
9
|
+
⍝ it returns the square of the sum from 1 to the given number
|
10
|
+
1⎕CR square_of_sum 1
|
11
|
+
1
|
12
|
+
1⎕CR square_of_sum 5 ⍝ (1+2+3+4+5)*2
|
13
|
+
225
|
14
|
+
1⎕CR square_of_sum 100
|
15
|
+
25502500
|
16
|
+
|
17
|
+
⍝ ∇sum_of_squares
|
18
|
+
|
19
|
+
⍝ it returns the sum of the squares of the numbers from 1 to the given number
|
20
|
+
1⎕CR sum_of_squares 1
|
21
|
+
1
|
22
|
+
1⎕CR sum_of_squares 5 ⍝ (1*2)+(2*2)+(3*2)+(4*2)+(5*2)
|
23
|
+
55
|
24
|
+
1⎕CR sum_of_squares 100
|
25
|
+
338350
|
26
|
+
|
27
|
+
⍝ ∇difference_of_squares
|
28
|
+
|
29
|
+
⍝ it returns square_of_sum minus sum_of_squares
|
30
|
+
1⎕CR difference_of_squares 1
|
31
|
+
0
|
32
|
+
1⎕CR difference_of_squares 5
|
33
|
+
170
|
34
|
+
1⎕CR difference_of_squares 100
|
35
|
+
25164150
|
36
|
+
|
37
|
+
test∆show_log log
|
38
|
+
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Pangram
|
2
|
+
|
3
|
+
Determine if a sentence is a pangram. A pangram (Greek: παν γράμμα, pan gramma,
|
4
|
+
"every letter") is a sentence using every letter of the alphabet at least once.
|
5
|
+
The best known English pangram is:
|
6
|
+
> The quick brown fox jumps over the lazy dog.
|
7
|
+
|
8
|
+
The alphabet used consists of ASCII letters `a` to `z`, inclusive, and is case
|
9
|
+
insensitive. Input will not contain non-ASCII symbols.
|
10
|
+
## Source
|
11
|
+
|
12
|
+
Wikipedia [https://en.wikipedia.org/wiki/Pangram](https://en.wikipedia.org/wiki/Pangram)
|
13
|
+
|
14
|
+
## Submitting Incomplete Solutions
|
15
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env apl --script
|
2
|
+
|
3
|
+
lowercase←⎕AF (⎕AF 'a')+(⍳26)-1
|
4
|
+
|
5
|
+
∇z←is_pangram string
|
6
|
+
z←∧/lowercase∊to_lower string
|
7
|
+
∇
|
8
|
+
|
9
|
+
∇z←to_lower string;uppercase;to_change
|
10
|
+
uppercase←⎕AF ((⎕AF lowercase)-⎕AF 'a')+(⎕AF 'A')
|
11
|
+
to_change←(string⍳uppercase)~1+⍴string
|
12
|
+
z←string
|
13
|
+
z[to_change]←lowercase[uppercase⍳string[to_change]]
|
14
|
+
∇
|
@@ -0,0 +1,40 @@
|
|
1
|
+
log←'./pangram.tc.log'
|
2
|
+
⍎ ')COPY ',(⎕FIO 30),'/../../test.apl'
|
3
|
+
|
4
|
+
test∆copy_relative 'pangram.apl'
|
5
|
+
test∆clear_log log
|
6
|
+
|
7
|
+
⍝ ∇is_pangram
|
8
|
+
|
9
|
+
⍝ it returns false for a null vector
|
10
|
+
1⎕CR is_pangram ''
|
11
|
+
0
|
12
|
+
⍝ it recognizes a perfect lower case pangram
|
13
|
+
1⎕CR is_pangram 'abcdefghijklmnopqrstuvwxyz'
|
14
|
+
1
|
15
|
+
⍝ pangram with only lower case: true
|
16
|
+
1⎕CR is_pangram 'the quick brown fox jumps over the lazy dog'
|
17
|
+
1
|
18
|
+
⍝ missing character 'x': false
|
19
|
+
is_pangram 'a quick movement of the enemy will jeopardize five gunboats'
|
20
|
+
0
|
21
|
+
⍝ missing 'h': false
|
22
|
+
is_pangram 'five boxing wizards jump quickly at it'
|
23
|
+
0
|
24
|
+
|
25
|
+
⍝ pangram with non-alphabetic characters: true
|
26
|
+
is_pangram 'the_quick_brown_fox_jumps_over_the_lazy_dog'
|
27
|
+
1
|
28
|
+
is_pangram 'the 1 quick brown fox jumps over the 2 lazy dogs'
|
29
|
+
1
|
30
|
+
⍝ letters missing, replaced by numbers: false
|
31
|
+
is_pangram '7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog'
|
32
|
+
0
|
33
|
+
⍝ pangram with mixed case and punctuation: true
|
34
|
+
is_pangram '"Five quacking Zephyrs jolt my wax bed."'
|
35
|
+
1
|
36
|
+
⍝ non-pangram with upper- and lowercase versions of same letter: false
|
37
|
+
is_pangram "the quick brown fox jumps over with lazy FX"
|
38
|
+
0
|
39
|
+
|
40
|
+
test∆show_log log
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|
@@ -0,0 +1 @@
|
|
1
|
+
1.0.0
|