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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/grains/canonical-data.json +1 -1
  4. data/problem-specifications/exercises/isbn-verifier/description.md +1 -1
  5. data/tracks/dart/exercises/anagram/pubspec.lock +10 -10
  6. data/tracks/dart/exercises/bob/pubspec.lock +4 -4
  7. data/tracks/dart/exercises/difference-of-squares/pubspec.lock +4 -4
  8. data/tracks/dart/exercises/gigasecond/pubspec.lock +4 -4
  9. data/tracks/dart/exercises/hamming/pubspec.lock +4 -4
  10. data/tracks/dart/exercises/hello-world/pubspec.lock +4 -4
  11. data/tracks/dart/exercises/leap/pubspec.lock +4 -4
  12. data/tracks/dart/exercises/phone-number/pubspec.lock +4 -4
  13. data/tracks/dart/exercises/raindrops/pubspec.lock +17 -5
  14. data/tracks/dart/exercises/rna-transcription/pubspec.lock +4 -4
  15. data/tracks/dart/exercises/word-count/pubspec.lock +4 -4
  16. data/tracks/dart/pubspec.lock +3 -3
  17. data/tracks/fsharp/exercises/largest-series-product/Example.fs +18 -4
  18. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProduct.fs +1 -1
  19. data/tracks/fsharp/exercises/largest-series-product/LargestSeriesProductTest.fs +80 -36
  20. data/tracks/fsharp/generators/Exercise.fs +1 -1
  21. data/tracks/fsharp/generators/Generators.fs +10 -0
  22. data/tracks/gnu-apl/config.json +14 -0
  23. data/tracks/gnu-apl/exercises/difference-of-squares/README.md +19 -0
  24. data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares-example.apl +13 -0
  25. data/tracks/gnu-apl/exercises/difference-of-squares/difference-of-squares.tc +38 -0
  26. data/tracks/gnu-apl/exercises/pangram/README.md +15 -0
  27. data/tracks/gnu-apl/exercises/pangram/pangram-example.apl +14 -0
  28. data/tracks/gnu-apl/exercises/pangram/pangram.tc +40 -0
  29. data/tracks/gnu-apl/exercises/raindrops/raindrops.tc +1 -1
  30. data/tracks/java/exercises/bracket-push/.meta/version +1 -0
  31. data/tracks/java/exercises/complex-numbers/.meta/version +1 -0
  32. data/tracks/java/exercises/ocr-numbers/.meta/version +1 -0
  33. data/tracks/java/exercises/queen-attack/.meta/version +1 -0
  34. data/tracks/java/exercises/rectangles/.meta/version +1 -0
  35. data/tracks/java/exercises/robot-simulator/.meta/version +1 -0
  36. data/tracks/java/exercises/secret-handshake/.meta/version +1 -0
  37. data/tracks/java/exercises/sublist/.meta/version +1 -0
  38. data/tracks/perl6/exercises/accumulate/accumulate.t +1 -6
  39. data/tracks/perl6/exercises/all-your-base/all-your-base.t +14 -19
  40. data/tracks/perl6/exercises/allergies/Allergies.pm6 +1 -1
  41. data/tracks/perl6/exercises/allergies/Example.pm6 +1 -1
  42. data/tracks/perl6/exercises/allergies/allergies.t +25 -29
  43. data/tracks/perl6/exercises/allergies/example.yaml +11 -10
  44. data/tracks/perl6/exercises/anagram/anagram.t +14 -19
  45. data/tracks/perl6/exercises/atbash-cipher/atbash-cipher.t +14 -19
  46. data/tracks/perl6/exercises/bob/bob.t +16 -23
  47. data/tracks/perl6/exercises/bob/example.yaml +1 -3
  48. data/tracks/perl6/exercises/clock/clock.t +14 -19
  49. data/tracks/perl6/exercises/flatten-array/flatten-array.t +14 -19
  50. data/tracks/perl6/exercises/grade-school/grade-school.t +1 -6
  51. data/tracks/perl6/exercises/grains/grains.t +15 -20
  52. data/tracks/perl6/exercises/hello-world/example.yaml +1 -3
  53. data/tracks/perl6/exercises/hello-world/hello-world.t +16 -23
  54. data/tracks/perl6/exercises/leap/leap.t +14 -19
  55. data/tracks/perl6/exercises/linked-list/example.yaml +59 -59
  56. data/tracks/perl6/exercises/linked-list/linked-list.t +59 -64
  57. data/tracks/perl6/exercises/luhn/luhn.t +14 -19
  58. data/tracks/perl6/exercises/phone-number/phone-number.t +14 -19
  59. data/tracks/perl6/exercises/raindrops/raindrops.t +14 -19
  60. data/tracks/perl6/exercises/rna-transcription/rna-transcription.t +14 -19
  61. data/tracks/perl6/exercises/robot-name/robot-name.t +1 -6
  62. data/tracks/perl6/exercises/scrabble-score/scrabble-score.t +14 -19
  63. data/tracks/perl6/exercises/space-age/space-age.t +14 -19
  64. data/tracks/perl6/exercises/word-count/word-count.t +14 -19
  65. data/tracks/perl6/exercises/wordy/wordy.t +14 -19
  66. data/tracks/perl6/templates/test.mustache +19 -25
  67. data/tracks/purescript/config.json +12 -0
  68. data/tracks/purescript/exercises/sum-of-multiples/README.md +15 -0
  69. data/tracks/purescript/exercises/sum-of-multiples/bower.json +26 -0
  70. data/tracks/purescript/exercises/sum-of-multiples/examples/src/SumOfMultiples.purs +16 -0
  71. data/tracks/purescript/exercises/sum-of-multiples/src/SumOfMultiples.purs +3 -0
  72. data/tracks/purescript/exercises/sum-of-multiples/test/Main.purs +63 -0
  73. data/tracks/python/README.md +5 -1
  74. data/tracks/python/config.json +52 -9
  75. data/tracks/python/exercises/allergies/allergies_test.py +7 -7
  76. data/tracks/python/exercises/allergies/example.py +1 -1
  77. data/tracks/python/exercises/binary-search/binary_search_test.py +8 -5
  78. data/tracks/python/exercises/binary/binary_test.py +8 -4
  79. data/tracks/python/exercises/book-store/example.py +1 -1
  80. data/tracks/python/exercises/clock/clock.py +3 -0
  81. data/tracks/python/exercises/clock/clock_test.py +16 -16
  82. data/tracks/python/exercises/clock/example.py +1 -1
  83. data/tracks/python/exercises/list-ops/example.py +10 -29
  84. data/tracks/python/exercises/list-ops/list_ops.py +8 -12
  85. data/tracks/python/exercises/list-ops/list_ops_test.py +55 -86
  86. data/tracks/python/exercises/meetup/meetup_test.py +2 -2
  87. data/tracks/python/exercises/minesweeper/minesweeper_test.py +6 -3
  88. data/tracks/python/exercises/ocr-numbers/ocr_numbers_test.py +11 -8
  89. data/tracks/python/exercises/pangram/pangram_test.py +25 -16
  90. data/tracks/python/exercises/point-mutations/point_mutations.py +1 -1
  91. data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet_test.py +2 -1
  92. data/tracks/python/exercises/saddle-points/saddle_points_test.py +2 -1
  93. data/tracks/python/exercises/simple-cipher/simple_cipher_test.py +4 -2
  94. data/tracks/python/exercises/triangle/triangle_test.py +10 -5
  95. data/tracks/python/exercises/wordy/wordy_test.py +8 -5
  96. data/tracks/python/exercises/zipper/README.md +43 -0
  97. data/tracks/python/exercises/zipper/example.py +41 -0
  98. data/tracks/python/exercises/zipper/zipper.py +28 -0
  99. data/tracks/python/exercises/zipper/zipper_test.py +82 -0
  100. data/tracks/racket/.travis.yml +1 -1
  101. data/tracks/racket/config.json +14 -0
  102. data/tracks/racket/exercises/meetup/README.md +54 -0
  103. data/tracks/racket/exercises/meetup/example.rkt +45 -0
  104. data/tracks/racket/exercises/meetup/meetup-test.rkt +39 -0
  105. data/tracks/racket/exercises/meetup/meetup.rkt +3 -0
  106. 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.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+12"
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+15"
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.5"
207
+ version: "0.2.6"
208
208
  shelf_web_socket:
209
209
  description:
210
210
  name: shelf_web_socket
@@ -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+12"
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+15"
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.5"
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 largestProduct input seriesLength =
21
- if seriesLength > String.length input then failwith "Slice size is too big"
22
- else
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,3 +1,3 @@
1
1
  module LargestSeriesProduct
2
2
 
3
- let largestProduct input seriesLength = failwith "You need to implement this function."
3
+ let largestProduct input seriesLength : int option = failwith "You need to implement this function."
@@ -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 System
6
+ open Xunit
7
+
6
8
  open LargestSeriesProduct
7
-
8
- [<Theory(Skip = "Remove to run test")>]
9
- [<InlineData("01234567890", 2, 72)>]
10
- [<InlineData("1027839564", 3, 270)>]
11
- let ``Gets the largest product``(digits: string) (seriesLength: int) (expected: int) =
12
- largestProduct digits seriesLength |> should equal expected
13
-
14
-
15
- [<Fact(Skip = "Remove to run test")>]
16
- let ``Largest product works for small numbers`` () =
17
- largestProduct "19" 2 |> should equal 9
18
-
19
- [<Fact(Skip = "Remove to run test")>]
20
- let ``Largest product works for large numbers`` () =
21
- let LARGE_NUMBER = "73167176531330624919225119674426574742355349194934"
22
- largestProduct LARGE_NUMBER 6 |> should equal 23520
23
-
24
- [<Theory(Skip = "Remove to run test")>]
25
- [<InlineData("0000", 2, 0)>]
26
- [<InlineData("99099", 3, 0)>]
27
- let ``Largest product works if all spans contain zero``(digits: string) (seriesLength: int) (expected: int) =
28
- largestProduct digits seriesLength |> should equal expected
29
-
30
-
31
- [<Theory(Skip = "Remove to run test")>]
32
- [<InlineData("", 1)>]
33
- [<InlineData("123", 1)>]
34
- let ``Largest product for empty span is 1``(digits: string) (expected: int) =
35
- largestProduct digits 0 |> should equal expected
36
-
37
-
38
- [<Fact(Skip = "Remove to run test")>]
39
- let ``Cannot slice empty string with nonzero span`` () =
40
- (fun () -> largestProduct "" 1 |> ignore) |> should throw typeof<Exception>
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
 
@@ -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,13 @@
1
+ #!/usr/bin/env apl --script
2
+
3
+ ∇z←square_of_sum integer
4
+ z←(+/⍳integer)*2
5
+
6
+
7
+ ∇z←sum_of_squares integer
8
+ z←+/(⍳integer)*2
9
+
10
+
11
+ ∇z←difference_of_squares integer
12
+ z←(square_of_sum integer)-sum_of_squares integer
13
+
@@ -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
@@ -45,7 +45,7 @@ PlangPlong
45
45
  1⎕CR convert 105 ⍝ 3×5×7
46
46
  'PlingPlangPlong'
47
47
 
48
- ⍝ the sound for squares of a raindrop factor is only the single sound
48
+ ⍝ the sound for powers of a raindrop factor is only the single sound
49
49
  convert 9 ⍝ 3×3
50
50
  Pling
51
51
  convert 25 ⍝ 5×5
@@ -0,0 +1 @@
1
+ 1.0.0