trackler 2.1.0.21 → 2.1.0.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/delphi/exercises/allergies/uAllergiesExample.pas +10 -3
  4. data/tracks/ocaml/.travis-ci.sh +3 -1
  5. data/tracks/ocaml/exercises/acronym/Makefile +1 -1
  6. data/tracks/ocaml/exercises/acronym/example.ml +1 -1
  7. data/tracks/ocaml/exercises/acronym/test.ml +2 -4
  8. data/tracks/ocaml/exercises/all-your-base/example.ml +1 -1
  9. data/tracks/ocaml/exercises/all-your-base/test.ml +1 -1
  10. data/tracks/ocaml/exercises/anagram/example.ml +1 -1
  11. data/tracks/ocaml/exercises/anagram/test.ml +1 -1
  12. data/tracks/ocaml/exercises/atbash-cipher/example.ml +1 -1
  13. data/tracks/ocaml/exercises/atbash-cipher/test.ml +1 -1
  14. data/tracks/ocaml/exercises/beer-song/example.ml +1 -1
  15. data/tracks/ocaml/exercises/beer-song/test.ml +1 -1
  16. data/tracks/ocaml/exercises/binary-search/Makefile +1 -1
  17. data/tracks/ocaml/exercises/binary-search/example.ml +5 -5
  18. data/tracks/ocaml/exercises/binary-search/test.ml +1 -1
  19. data/tracks/ocaml/exercises/bob/example.ml +1 -1
  20. data/tracks/ocaml/exercises/bob/test.ml +1 -1
  21. data/tracks/ocaml/exercises/bowling/bowling.mli +1 -1
  22. data/tracks/ocaml/exercises/bowling/example.ml +1 -1
  23. data/tracks/ocaml/exercises/bowling/test.ml +1 -1
  24. data/tracks/ocaml/exercises/bracket-push/example.ml +1 -1
  25. data/tracks/ocaml/exercises/bracket-push/test.ml +1 -1
  26. data/tracks/ocaml/exercises/change/example.ml +1 -1
  27. data/tracks/ocaml/exercises/change/test.ml +1 -1
  28. data/tracks/ocaml/exercises/connect/example.ml +1 -1
  29. data/tracks/ocaml/exercises/connect/test.ml +1 -1
  30. data/tracks/ocaml/exercises/difference-of-squares/example.ml +1 -1
  31. data/tracks/ocaml/exercises/difference-of-squares/test.ml +1 -1
  32. data/tracks/ocaml/exercises/dominoes/example.ml +1 -1
  33. data/tracks/ocaml/exercises/dominoes/test.ml +1 -1
  34. data/tracks/ocaml/exercises/etl/example.ml +1 -1
  35. data/tracks/ocaml/exercises/etl/test.ml +1 -1
  36. data/tracks/ocaml/exercises/grade-school/example.ml +1 -1
  37. data/tracks/ocaml/exercises/grade-school/grade_school.mli +1 -1
  38. data/tracks/ocaml/exercises/grade-school/test.ml +1 -1
  39. data/tracks/ocaml/exercises/hamming/example.ml +1 -1
  40. data/tracks/ocaml/exercises/hamming/test.ml +1 -1
  41. data/tracks/ocaml/exercises/hangman/example.ml +1 -1
  42. data/tracks/ocaml/exercises/hello-world/test.ml +1 -1
  43. data/tracks/ocaml/exercises/hexadecimal/example.ml +1 -1
  44. data/tracks/ocaml/exercises/hexadecimal/test.ml +1 -1
  45. data/tracks/ocaml/exercises/leap/test.ml +1 -1
  46. data/tracks/ocaml/exercises/list-ops/test.ml +1 -1
  47. data/tracks/ocaml/exercises/luhn/example.ml +1 -1
  48. data/tracks/ocaml/exercises/luhn/test.ml +1 -1
  49. data/tracks/ocaml/exercises/meetup/example.ml +1 -1
  50. data/tracks/ocaml/exercises/meetup/test.ml +1 -1
  51. data/tracks/ocaml/exercises/minesweeper/example.ml +1 -1
  52. data/tracks/ocaml/exercises/minesweeper/test.ml +1 -1
  53. data/tracks/ocaml/exercises/nucleotide-count/example.ml +1 -1
  54. data/tracks/ocaml/exercises/nucleotide-count/nucleotide_count.mli +1 -1
  55. data/tracks/ocaml/exercises/nucleotide-count/test.ml +1 -1
  56. data/tracks/ocaml/exercises/pangram/example.ml +1 -1
  57. data/tracks/ocaml/exercises/pangram/test.ml +1 -1
  58. data/tracks/ocaml/exercises/phone-number/example.ml +1 -1
  59. data/tracks/ocaml/exercises/phone-number/test.ml +1 -1
  60. data/tracks/ocaml/exercises/prime-factors/example.ml +1 -1
  61. data/tracks/ocaml/exercises/prime-factors/test.ml +1 -1
  62. data/tracks/ocaml/exercises/raindrops/example.ml +1 -1
  63. data/tracks/ocaml/exercises/raindrops/test.ml +1 -1
  64. data/tracks/ocaml/exercises/rna-transcription/example.ml +1 -1
  65. data/tracks/ocaml/exercises/rna-transcription/test.ml +1 -1
  66. data/tracks/ocaml/exercises/robot-name/example.ml +1 -1
  67. data/tracks/ocaml/exercises/robot-name/test.ml +1 -1
  68. data/tracks/ocaml/exercises/roman-numerals/test.ml +1 -1
  69. data/tracks/ocaml/exercises/run-length-encoding/example.ml +1 -1
  70. data/tracks/ocaml/exercises/run-length-encoding/test.ml +1 -1
  71. data/tracks/ocaml/exercises/say/example.ml +1 -1
  72. data/tracks/ocaml/exercises/say/test.ml +1 -1
  73. data/tracks/ocaml/exercises/space-age/example.ml +1 -1
  74. data/tracks/ocaml/exercises/space-age/test.ml +1 -1
  75. data/tracks/ocaml/exercises/triangle/example.ml +1 -1
  76. data/tracks/ocaml/exercises/triangle/test.ml +1 -1
  77. data/tracks/ocaml/exercises/word-count/example.ml +1 -1
  78. data/tracks/ocaml/exercises/word-count/test.ml +1 -1
  79. data/tracks/ocaml/exercises/word-count/word_count.mli +1 -3
  80. data/tracks/ocaml/exercises/zipper/example.ml +1 -1
  81. data/tracks/ocaml/exercises/zipper/test.ml +1 -1
  82. data/tracks/ocaml/exercises/zipper/tree.ml +1 -1
  83. data/tracks/ocaml/exercises/zipper/tree.mli +1 -1
  84. data/tracks/ocaml/exercises/zipper/zipper.mli +1 -1
  85. data/tracks/ocaml/tools/test-generator/src/canonical_data_checker.ml +1 -1
  86. data/tracks/ocaml/tools/test-generator/src/codegen.ml +1 -1
  87. data/tracks/ocaml/tools/test-generator/src/controller.ml +1 -1
  88. data/tracks/ocaml/tools/test-generator/src/debug.ml +1 -1
  89. data/tracks/ocaml/tools/test-generator/src/files.ml +1 -1
  90. data/tracks/ocaml/tools/test-generator/src/model.ml +1 -1
  91. data/tracks/ocaml/tools/test-generator/src/parser.ml +5 -5
  92. data/tracks/ocaml/tools/test-generator/src/special_cases.ml +1 -1
  93. data/tracks/ocaml/tools/test-generator/src/template.ml +1 -1
  94. data/tracks/ocaml/tools/test-generator/src/test_gen.ml +1 -1
  95. data/tracks/ocaml/tools/test-generator/src/utils.ml +2 -2
  96. data/tracks/ocaml/tools/test-generator/templates/acronym/template.ml +1 -1
  97. data/tracks/ocaml/tools/test-generator/templates/all-your-base/template.ml +1 -1
  98. data/tracks/ocaml/tools/test-generator/templates/anagram/template.ml +1 -1
  99. data/tracks/ocaml/tools/test-generator/templates/atbash-cipher/template.ml +1 -1
  100. data/tracks/ocaml/tools/test-generator/templates/beer-song/template.ml +1 -1
  101. data/tracks/ocaml/tools/test-generator/templates/binary-search/template.ml +1 -1
  102. data/tracks/ocaml/tools/test-generator/templates/bob/template.ml +1 -1
  103. data/tracks/ocaml/tools/test-generator/templates/bowling/template.ml +1 -1
  104. data/tracks/ocaml/tools/test-generator/templates/bracket-push/template.ml +1 -1
  105. data/tracks/ocaml/tools/test-generator/templates/change/template.ml +1 -1
  106. data/tracks/ocaml/tools/test-generator/templates/connect/template.ml +1 -1
  107. data/tracks/ocaml/tools/test-generator/templates/difference-of-squares/template.ml +1 -1
  108. data/tracks/ocaml/tools/test-generator/templates/dominoes/template.ml +1 -1
  109. data/tracks/ocaml/tools/test-generator/templates/etl/template.ml +1 -1
  110. data/tracks/ocaml/tools/test-generator/templates/hamming/template.ml +1 -1
  111. data/tracks/ocaml/tools/test-generator/templates/hello-world/template.ml +1 -1
  112. data/tracks/ocaml/tools/test-generator/templates/leap/template.ml +1 -1
  113. data/tracks/ocaml/tools/test-generator/templates/luhn/template.ml +1 -1
  114. data/tracks/ocaml/tools/test-generator/templates/minesweeper/template.ml +1 -1
  115. data/tracks/ocaml/tools/test-generator/templates/pangram/template.ml +1 -1
  116. data/tracks/ocaml/tools/test-generator/templates/phone-number/template.ml +1 -1
  117. data/tracks/ocaml/tools/test-generator/templates/prime-factors/template.ml +1 -1
  118. data/tracks/ocaml/tools/test-generator/templates/raindrops/template.ml +1 -1
  119. data/tracks/ocaml/tools/test-generator/templates/roman-numerals/template.ml +1 -1
  120. data/tracks/ocaml/tools/test-generator/templates/run-length-encoding/template.ml +1 -1
  121. data/tracks/ocaml/tools/test-generator/templates/say/template.ml +1 -1
  122. data/tracks/ocaml/tools/test-generator/templates/space-age/template.ml +1 -1
  123. data/tracks/ocaml/tools/test-generator/templates/triangle/template.ml +1 -1
  124. data/tracks/ocaml/tools/test-generator/templates/word-count/template.ml +1 -1
  125. data/tracks/ocaml/tools/test-generator/test/all_tests.ml +1 -1
  126. data/tracks/ocaml/tools/test-generator/test/codegen_test.ml +1 -1
  127. data/tracks/ocaml/tools/test-generator/test/model_test.ml +1 -1
  128. data/tracks/ocaml/tools/test-generator/test/parser_test.ml +1 -1
  129. data/tracks/ocaml/tools/test-generator/test/special_cases_test.ml +1 -1
  130. data/tracks/ocaml/tools/test-generator/test/template_test.ml +1 -1
  131. data/tracks/ocaml/tools/test-generator/test/utils_test.ml +1 -1
  132. data/tracks/r/.travis.yml +13 -2
  133. data/tracks/r/README.md +35 -16
  134. data/tracks/r/bin/run_lints.R +30 -0
  135. data/tracks/r/bin/run_tests.R +35 -0
  136. data/tracks/r/exercises/anagram/anagram.R +1 -1
  137. data/tracks/r/exercises/anagram/example.R +5 -5
  138. data/tracks/r/exercises/anagram/test_anagram.R +1 -15
  139. data/tracks/r/exercises/bob/bob.R +1 -1
  140. data/tracks/r/exercises/bob/example.R +2 -2
  141. data/tracks/r/exercises/bob/test_bob.R +1 -13
  142. data/tracks/r/exercises/difference-of-squares/example.R +5 -5
  143. data/tracks/r/exercises/difference-of-squares/test_difference-of-squares.R +2 -0
  144. data/tracks/r/exercises/grains/example.R +6 -6
  145. data/tracks/r/exercises/grains/grains.R +2 -2
  146. data/tracks/r/exercises/grains/test_grains.R +1 -2
  147. data/tracks/r/exercises/hamming/example.R +3 -3
  148. data/tracks/r/exercises/hamming/hamming.R +1 -1
  149. data/tracks/r/exercises/hamming/test_hamming.R +1 -1
  150. data/tracks/r/exercises/hello-world/example.R +1 -1
  151. data/tracks/r/exercises/hello-world/test_hello-world.R +1 -1
  152. data/tracks/r/exercises/isogram/example.R +4 -4
  153. data/tracks/r/exercises/isogram/isogram.R +1 -1
  154. data/tracks/r/exercises/isogram/test_isogram.R +1 -1
  155. data/tracks/r/exercises/largest-series-product/example.R +11 -11
  156. data/tracks/r/exercises/largest-series-product/largest-series-product.R +2 -2
  157. data/tracks/r/exercises/largest-series-product/test_largest-series-product.R +16 -16
  158. data/tracks/r/exercises/leap/leap.R +1 -1
  159. data/tracks/r/exercises/leap/test_leap.R +1 -1
  160. data/tracks/r/exercises/luhn/example.R +16 -10
  161. data/tracks/r/exercises/luhn/test_luhn.R +1 -1
  162. data/tracks/r/exercises/pascals-triangle/example.R +10 -10
  163. data/tracks/r/exercises/pascals-triangle/pascals-triangle.R +2 -2
  164. data/tracks/r/exercises/pascals-triangle/test_pascals-triangle.R +8 -8
  165. data/tracks/r/exercises/perfect-numbers/example.R +3 -3
  166. data/tracks/r/exercises/perfect-numbers/perfect-numbers.R +1 -1
  167. data/tracks/r/exercises/perfect-numbers/test_perfect-numbers.R +12 -12
  168. data/tracks/r/exercises/phone-number/example.R +8 -8
  169. data/tracks/r/exercises/phone-number/phone-number.R +1 -1
  170. data/tracks/r/exercises/phone-number/test_phone-number.R +11 -11
  171. data/tracks/r/exercises/prime-factors/example.R +2 -2
  172. data/tracks/r/exercises/prime-factors/prime-factors.R +1 -1
  173. data/tracks/r/exercises/prime-factors/test_prime-factors.R +1 -1
  174. data/tracks/r/exercises/raindrops/example.R +12 -11
  175. data/tracks/r/exercises/raindrops/test_raindrops.R +3 -2
  176. data/tracks/r/exercises/rna-transcription/example.R +3 -3
  177. data/tracks/r/exercises/rna-transcription/test_rna-transcription.R +1 -1
  178. data/tracks/r/exercises/rotational-cipher/example.R +7 -7
  179. data/tracks/r/exercises/rotational-cipher/test_rotational-cipher.R +3 -2
  180. data/tracks/r/exercises/scrabble-score/example.R +5 -4
  181. data/tracks/r/exercises/scrabble-score/scrabble-score.R +1 -1
  182. data/tracks/r/exercises/scrabble-score/test_scrabble-score.R +12 -12
  183. data/tracks/r/exercises/secret-handshake/example.R +6 -6
  184. data/tracks/r/exercises/secret-handshake/test_secret-handshake.R +5 -3
  185. data/tracks/r/exercises/sieve/test_sieve.R +1 -1
  186. data/tracks/r/exercises/space-age/example.R +8 -3
  187. data/tracks/r/exercises/space-age/space-age.R +1 -1
  188. data/tracks/r/exercises/space-age/test_space-age.R +1 -1
  189. data/tracks/r/exercises/sum-of-multiples/test_sum-of-multiples.R +1 -1
  190. data/tracks/r/exercises/tournament/example.R +14 -8
  191. data/tracks/r/exercises/tournament/test_tournament.R +1 -1
  192. data/tracks/r/exercises/word-count/example.R +9 -2
  193. data/tracks/r/exercises/word-count/test_word-count.R +1 -1
  194. data/tracks/r/exercises/word-count/word-count.R +1 -1
  195. data/tracks/vimscript/README.md +14 -9
  196. metadata +4 -2
@@ -114,20 +114,6 @@ test_that("eliminates anagrams with the same checksum", {
114
114
  c())
115
115
  })
116
116
 
117
- test_that("detects unicode anagrams", {
118
- subject <- "ΑΒΓ"
119
- candidates <- c("ΒΓΑ", "ΒΓΔ", "γβα")
120
- expect_equal(anagram(subject, candidates),
121
- c("ΒΓΑ", "γβα"))
122
- })
123
-
124
- test_that("eliminates misleading unicode anagrams", {
125
- subject <- "ΑΒΓ"
126
- candidates <- c("ABΓ")
127
- expect_equal(anagram(subject, candidates),
128
- c())
129
- })
130
-
131
117
  test_that("capital word is not own anagram", {
132
118
  subject <- "BANANA"
133
119
  candidates <- c("Banana")
@@ -142,4 +128,4 @@ test_that("anagrams must use all letters exactly once", {
142
128
  c())
143
129
  })
144
130
 
145
- print("All tests passed!")
131
+ print("All tests passed for exercise: anagram")
@@ -1,3 +1,3 @@
1
- bob <- function() {
1
+ bob <- function(input) {
2
2
 
3
3
  }
@@ -3,7 +3,7 @@ bob <- function(input) {
3
3
  # with a couple different sentences
4
4
 
5
5
  # strip white space
6
- input <- gsub("[[:space:]]","",input)
6
+ input <- gsub("[[:space:]]", "", input)
7
7
 
8
8
  if (input == "") {
9
9
  return("Fine. Be that way!")
@@ -11,7 +11,7 @@ bob <- function(input) {
11
11
  if (toupper(input) == input && tolower(input) != input) {
12
12
  return("Whoa, chill out!")
13
13
  }
14
- if (endsWith(input,"?")) {
14
+ if (endsWith(input, "?")) {
15
15
  return("Sure.")
16
16
  }
17
17
  return("Whatever.")
@@ -85,18 +85,6 @@ test_that("talking forcefully", {
85
85
  "Whoa, chill out!")
86
86
  })
87
87
 
88
- test_that("shouting with umlauts", {
89
- input <- "ÜMLÄÜTS!"
90
- expect_equal(bob(input),
91
- "Whoa, chill out!")
92
- })
93
-
94
- test_that("calmly speaking with umlauts", {
95
- input <- "ÜMLäÜTS!"
96
- expect_equal(bob(input),
97
- "Whatever.")
98
- })
99
-
100
88
  test_that("shouting with no exclamation mark", {
101
89
  input <- "I HATE YOU"
102
90
  expect_equal(bob(input),
@@ -173,4 +161,4 @@ test_that("non-question ending with whitespace", {
173
161
  "Whatever.")
174
162
  })
175
163
 
176
- print("All tests passed!")
164
+ print("All tests passed for exercise: bob")
@@ -1,6 +1,6 @@
1
1
  difference_of_squares <- function(natural_number) {
2
- num_sequence <- seq_len(natural_number)
3
- square_sums <- sum(num_sequence)^2
4
- sum_squares <- sum(num_sequence^2)
5
- sum(square_sums - sum_squares)
6
- }
2
+ num_sequence <- seq_len(natural_number)
3
+ square_sums <- sum(num_sequence) ^ 2
4
+ sum_squares <- sum(num_sequence ^ 2)
5
+ sum(square_sums - sum_squares)
6
+ }
@@ -20,3 +20,5 @@ test_that("difference of squares 100", {
20
20
  input <- 100
21
21
  expect_equal(difference_of_squares(input), 25164150)
22
22
  })
23
+
24
+ print("All tests passed for exercise: difference-of-squares")
@@ -1,16 +1,16 @@
1
1
  square <- function(n) {
2
-
2
+
3
3
  if (n > 0 & n < 65) {
4
- 2^(n-1)
4
+ 2 ^ (n - 1)
5
5
  }
6
6
  else {
7
7
  stop("Input value should be between 1 and 64")
8
8
  }
9
-
9
+
10
10
  }
11
11
 
12
12
  total <- function() {
13
-
14
- sum(2^(0:63))
15
-
13
+
14
+ sum(2 ^ (0:63))
15
+
16
16
  }
@@ -1,7 +1,7 @@
1
1
  square <- function(n) {
2
-
2
+
3
3
  }
4
4
 
5
5
  total <- function() {
6
-
6
+
7
7
  }
@@ -45,5 +45,4 @@ test_that("returns the total number of square on the board", {
45
45
  expect_equal(total(), 18446744073709551615)
46
46
  })
47
47
 
48
-
49
- print("All tests passed!")
48
+ print("All tests passed for exercise: grains")
@@ -1,8 +1,8 @@
1
- hamming <- function(strand1,strand2) {
1
+ hamming <- function(strand1, strand2) {
2
2
  if (nchar(strand1) != nchar(strand2)) {
3
3
  stop("undefined hamming distance")
4
4
  }
5
- strand1 <- strsplit(strand1,"")[[1]]
6
- strand2 <- strsplit(strand2,"")[[1]]
5
+ strand1 <- strsplit(strand1, "")[[1]]
6
+ strand2 <- strsplit(strand2, "")[[1]]
7
7
  length(strand1) - sum(strand1 == strand2)
8
8
  }
@@ -1,4 +1,4 @@
1
1
  # This is a stub function to take two strings
2
2
  # and calculate the hamming distance
3
- hamming <- function(strand1,strand2) {
3
+ hamming <- function(strand1, strand2) {
4
4
  }
@@ -85,4 +85,4 @@ test_that("disallow second strand longer", {
85
85
  expect_error(hamming(strand1, strand2))
86
86
  })
87
87
 
88
- print("All tests passed!")
88
+ print("All tests passed for exercise: hamming")
@@ -1,3 +1,3 @@
1
1
  hello_world <- function(name = "World") {
2
- paste("Hello, ", name, "!", sep="")
2
+ paste("Hello, ", name, "!", sep = "")
3
3
  }
@@ -13,4 +13,4 @@ test_that("other sample name", {
13
13
  expect_equal(hello_world("Bob"), "Hello, Bob!")
14
14
  })
15
15
 
16
- print("All tests passed!")
16
+ print("All tests passed for exercise: hello-world")
@@ -1,9 +1,9 @@
1
1
  is_isogram <- function(word) {
2
-
2
+
3
3
  func <- function(x) {
4
4
  sum(x == unlist(strsplit(tolower(word), "")))
5
5
  }
6
-
7
- all(lapply(letters, FUN = func)<=1)
8
-
6
+
7
+ all(lapply(letters, FUN = func) <= 1)
8
+
9
9
  }
@@ -1,3 +1,3 @@
1
1
  is_isogram <- function(word) {
2
-
2
+
3
3
  }
@@ -41,4 +41,4 @@ test_that("made-up name that is an isogram", {
41
41
  expect_equal(is_isogram(word), TRUE)
42
42
  })
43
43
 
44
- print("All tests passed!")
44
+ print("All tests passed for exercise: isogram")
@@ -1,22 +1,22 @@
1
- largestSeriesProduct <- function(digits, span){
2
-
1
+ largest_series_product <- function(digits, span){
2
+
3
3
  nums <- as.numeric(unlist(strsplit(digits, "")))
4
-
4
+
5
5
  if (any(is.na(nums)) || span < 0 || span > length(nums)) {
6
6
  stop("Non-numeric characters or span less than digit length")
7
7
  }
8
-
8
+
9
9
  if (span == 0) {
10
- return (1)
10
+ return(1)
11
11
  }
12
-
13
- indices <- 1:(length(nums)-span+1)
14
-
12
+
13
+ indices <- 1:(length(nums) - span + 1)
14
+
15
15
  get_prod <- function(index, nums, span) {
16
- prod(nums[index:(index+span-1)])
16
+ prod(nums[index:(index + span - 1)])
17
17
  }
18
-
18
+
19
19
  products <- sapply(indices, FUN = get_prod, nums, span)
20
-
20
+
21
21
  max(products)
22
22
  }
@@ -1,3 +1,3 @@
1
- largestSeriesProduct <- function(digits, span){
2
-
1
+ largest_series_product <- function(digits, span){
2
+
3
3
  }
@@ -4,61 +4,61 @@ library(testthat)
4
4
  test_that("finds the largest product if span equals length", {
5
5
  digits <- "29"
6
6
  span <- 2
7
- expect_equal(largestSeriesProduct(digits, span), 18)
7
+ expect_equal(largest_series_product(digits, span), 18)
8
8
  })
9
9
 
10
10
  test_that("can find the largest product of 2 with numbers in order", {
11
11
  digits <- "0123456789"
12
12
  span <- 2
13
- expect_equal(largestSeriesProduct(digits, span), 72)
13
+ expect_equal(largest_series_product(digits, span), 72)
14
14
  })
15
15
 
16
16
  test_that("can find the largest product of 2", {
17
17
  digits <- "576802143"
18
18
  span <- 2
19
- expect_equal(largestSeriesProduct(digits, span), 48)
19
+ expect_equal(largest_series_product(digits, span), 48)
20
20
  })
21
21
 
22
22
  test_that("can find the largest product of 3 with numbers in order", {
23
23
  digits <- "0123456789"
24
24
  span <- 3
25
- expect_equal(largestSeriesProduct(digits, span), 504)
25
+ expect_equal(largest_series_product(digits, span), 504)
26
26
  })
27
27
 
28
28
  test_that("can find the largest product of 3", {
29
29
  digits <- "1027839564"
30
30
  span <- 3
31
- expect_equal(largestSeriesProduct(digits, span), 270)
31
+ expect_equal(largest_series_product(digits, span), 270)
32
32
  })
33
33
 
34
34
  test_that("can find the largest product of 5 with numbers in order", {
35
35
  digits <- "0123456789"
36
36
  span <- 5
37
- expect_equal(largestSeriesProduct(digits, span), 15120)
37
+ expect_equal(largest_series_product(digits, span), 15120)
38
38
  })
39
39
 
40
40
  test_that("can get the largest product of a big number", {
41
41
  digits <- "73167176531330624919225119674426574742355349194934"
42
42
  span <- 6
43
- expect_equal(largestSeriesProduct(digits, span), 23520)
43
+ expect_equal(largest_series_product(digits, span), 23520)
44
44
  })
45
45
 
46
46
  test_that("reports zero if the only digits are zero", {
47
47
  digits <- "0000"
48
48
  span <- 2
49
- expect_equal(largestSeriesProduct(digits, span), 0)
49
+ expect_equal(largest_series_product(digits, span), 0)
50
50
  })
51
51
 
52
52
  test_that("reports zero if all spans include zero", {
53
53
  digits <- "99099"
54
54
  span <- 3
55
- expect_equal(largestSeriesProduct(digits, span), 0)
55
+ expect_equal(largest_series_product(digits, span), 0)
56
56
  })
57
57
 
58
58
  test_that("rejects span longer than string length", {
59
59
  digits <- "123"
60
60
  span <- 4
61
- expect_error(largestSeriesProduct(digits, span))
61
+ expect_error(largest_series_product(digits, span))
62
62
  })
63
63
 
64
64
  # There may be some confusion about whether this should be 1 or error.
@@ -77,7 +77,7 @@ test_that("rejects span longer than string length", {
77
77
  test_that("reports 1 for empty string and empty product (0 span)", {
78
78
  digits <- ""
79
79
  span <- 0
80
- expect_equal(largestSeriesProduct(digits, span), 1)
80
+ expect_equal(largest_series_product(digits, span), 1)
81
81
  })
82
82
 
83
83
  # As above, there is one 0-character string in "123".
@@ -86,25 +86,25 @@ test_that("reports 1 for empty string and empty product (0 span)", {
86
86
  test_that("reports 1 for nonempty string and empty product (0 span)", {
87
87
  digits <- "123"
88
88
  span <- 0
89
- expect_equal(largestSeriesProduct(digits, span), 1)
89
+ expect_equal(largest_series_product(digits, span), 1)
90
90
  })
91
91
 
92
92
  test_that("rejects empty string and nonzero span", {
93
93
  digits <- ""
94
94
  span <- 1
95
- expect_error(largestSeriesProduct(digits, span))
95
+ expect_error(largest_series_product(digits, span))
96
96
  })
97
97
 
98
98
  test_that("rejects invalid character in digits", {
99
99
  digits <- "1234a5"
100
100
  span <- 2
101
- expect_error(largestSeriesProduct(digits, span))
101
+ expect_error(largest_series_product(digits, span))
102
102
  })
103
103
 
104
104
  test_that("rejects negative span", {
105
105
  digits <- "12345"
106
106
  span <- -1
107
- expect_error(largestSeriesProduct(digits, span))
107
+ expect_error(largest_series_product(digits, span))
108
108
  })
109
109
 
110
- print("All tests passed!")
110
+ print("All tests passed for exercise: largest-series-product")
@@ -1,3 +1,3 @@
1
1
  leap <- function(year) {
2
-
2
+
3
3
  }
@@ -21,4 +21,4 @@ test_that("year divisible by 400: leap year", {
21
21
  expect_equal(leap(year), TRUE)
22
22
  })
23
23
 
24
- print("All tests passed!")
24
+ print("All tests passed for exercise: leap")
@@ -1,23 +1,29 @@
1
+ library(magrittr)
2
+
1
3
  # Determine whether the number is valid.
2
4
  is_valid <- function(input) {
3
-
5
+
4
6
  # Strip spaces, check length & check for invalid characters
5
- input_vector <- strsplit(gsub(pattern = " ", replacement = "", input), "")[[1]]
7
+ input_vector <- gsub(pattern = " ", replacement = "", input) %>%
8
+ strsplit("") %>%
9
+ unlist()
6
10
  if (length(input_vector) < 2 || any(grepl("[^[:digit:]]", input_vector))) {
7
- return (FALSE)
11
+ return(FALSE)
8
12
  }
9
-
13
+
10
14
  # Convert to numeric
11
15
  num_vector <- as.numeric(input_vector)
12
-
16
+
13
17
  # Double every second digit starting from the right
14
18
  num_vector <- rev(num_vector)
15
- num_vector[seq(2,length(num_vector),2)] = num_vector[seq(2,length(num_vector),2)]*2
16
-
17
- # Subtract 9 if > 9 (can apply to all since no digit can be greater than 9 before doubling)
19
+ num_vector[seq(2, length(num_vector), 2)] <-
20
+ num_vector[seq(2, length(num_vector), 2)] * 2
21
+
22
+ # Subtract 9 if > 9 (can apply to all since no
23
+ # digit can be greater than 9 before doubling)
18
24
  num_vector <- ifelse(num_vector > 9, num_vector - 9, num_vector)
19
-
25
+
20
26
  # Check checksum is divisible by 10
21
27
  sum(num_vector) %% 10 == 0
22
-
28
+
23
29
  }
@@ -66,4 +66,4 @@ test_that("nine doubled is nine", {
66
66
  expect_equal(is_valid(input), TRUE)
67
67
  })
68
68
 
69
- print("All tests passed!")
69
+ print("All tests passed for exercise: luhn")
@@ -1,24 +1,24 @@
1
- pascalsTriangle <- function(n) {
2
-
1
+ pascals_triangle <- function(n) {
2
+
3
3
  if (n == 0) {
4
- return (list())
4
+ return(list())
5
5
  }
6
6
  else if (n == 1) {
7
- return (list(1))
7
+ return(list(1))
8
8
  }
9
9
  else if (n == 2) {
10
- return (list(1, c(1,1)))
10
+ return(list(1, c(1, 1)))
11
11
  }
12
12
  else if (n >= 3) {
13
- triangle <- list(1, c(1,1))
13
+ triangle <- list(1, c(1, 1))
14
14
  for (x in 3:n) {
15
15
  row <- rep(1, x)
16
- for (i in 2:(x-1)) {
17
- row[i] = sum(triangle[[x-1]][(i-1):i])
16
+ for (i in 2:(x - 1)) {
17
+ row[i] <- sum(triangle[[x - 1]][(i - 1):i])
18
18
  }
19
- triangle[[x]] = row
19
+ triangle[[x]] <- row
20
20
  }
21
- return (triangle)
21
+ return(triangle)
22
22
  }
23
23
  else {
24
24
  stop("argument n needs to be an integer")