trackler 2.0.0.1 → 2.0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bump-content +3 -1
  3. data/bin/verify-metadata +2 -2
  4. data/common/exercises/alphametics/canonical-data.json +19 -9
  5. data/common/exercises/food-chain/canonical-data.json +7 -1
  6. data/common/exercises/grains/canonical-data.json +66 -0
  7. data/common/exercises/raindrops/description.md +4 -5
  8. data/common/exercises/triangle/canonical-data.json +81 -54
  9. data/lib/trackler/version.rb +1 -1
  10. data/tracks/c/config.json +26 -19
  11. data/tracks/c/exercises/allergies/makefile +15 -0
  12. data/tracks/c/exercises/allergies/src/allergies.h +21 -0
  13. data/tracks/c/exercises/allergies/src/example.c +32 -0
  14. data/tracks/c/exercises/allergies/src/example.h +26 -0
  15. data/tracks/c/exercises/allergies/test/test_allergies.c +203 -0
  16. data/tracks/c/exercises/allergies/test/vendor/unity.c +1300 -0
  17. data/tracks/c/exercises/allergies/test/vendor/unity.h +274 -0
  18. data/tracks/c/exercises/allergies/test/vendor/unity_internals.h +701 -0
  19. data/tracks/c/exercises/atbash-cipher/makefile +16 -0
  20. data/tracks/c/exercises/atbash-cipher/src/example.c +71 -0
  21. data/tracks/c/exercises/atbash-cipher/src/example.h +7 -0
  22. data/tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c +113 -0
  23. data/tracks/c/exercises/atbash-cipher/test/vendor/unity.c +1300 -0
  24. data/tracks/c/exercises/atbash-cipher/test/vendor/unity.h +274 -0
  25. data/tracks/c/exercises/atbash-cipher/test/vendor/unity_internals.h +701 -0
  26. data/tracks/c/exercises/phone-number/makefile +16 -0
  27. data/tracks/c/exercises/phone-number/src/example.c +66 -0
  28. data/tracks/c/exercises/phone-number/src/example.h +8 -0
  29. data/tracks/c/exercises/phone-number/test/test_phone_number.c +108 -0
  30. data/tracks/c/exercises/phone-number/test/vendor/unity.c +1300 -0
  31. data/tracks/c/exercises/phone-number/test/vendor/unity.h +274 -0
  32. data/tracks/c/exercises/phone-number/test/vendor/unity_internals.h +701 -0
  33. data/tracks/csharp/config.json +8 -0
  34. data/tracks/csharp/exercises/bowling/BowlingTest.cs +188 -33
  35. data/tracks/csharp/exercises/bowling/Example.cs +38 -9
  36. data/tracks/csharp/exercises/rectangles/Example.cs +91 -0
  37. data/tracks/csharp/exercises/rectangles/RectanglesTest.cs +133 -0
  38. data/tracks/elisp/docs/INSTALLATION.org +1 -1
  39. data/tracks/elixir/config.json +8 -66
  40. data/tracks/elixir/docs/LEARNING.md +1 -1
  41. data/tracks/elixir/exercises/diamond/diamond_test.exs +12 -12
  42. data/tracks/elixir/exercises/grep/example.exs +92 -0
  43. data/tracks/elixir/exercises/grep/grep.exs +6 -0
  44. data/tracks/elixir/exercises/grep/grep_test.exs +259 -0
  45. data/tracks/elixir/exercises/markdown/markdown.exs +59 -2
  46. data/tracks/elixir/exercises/nucleotide-count/nucleotide_count_test.exs +4 -4
  47. data/tracks/elixir/exercises/phone-number/phone_number_test.exs +5 -0
  48. data/tracks/fsharp/exercises/bowling/BowlingTest.fs +158 -43
  49. data/tracks/fsharp/exercises/bowling/Example.fs +53 -24
  50. data/tracks/go/config.json +5 -0
  51. data/tracks/go/exercises/diamond/diamond_test.go +227 -0
  52. data/tracks/go/exercises/diamond/example.go +47 -0
  53. data/tracks/go/exercises/food-chain/example.go +1 -1
  54. data/tracks/go/exercises/food-chain/food_chain_test.go +30 -6
  55. data/tracks/go/exercises/nucleotide-count/example.go +21 -8
  56. data/tracks/go/exercises/nucleotide-count/nucleotide_count_test.go +45 -37
  57. data/tracks/haskell/exercises/anagram/test/Tests.hs +1 -11
  58. data/tracks/java/bin/journey-test.sh +165 -128
  59. data/tracks/java/docs/ABOUT.md +5 -8
  60. data/tracks/java/exercises/hello-world/build.gradle +0 -6
  61. data/tracks/java/exercises/hello-world/src/test/java/HelloWorldTest.java +0 -1
  62. data/tracks/java/exercises/meetup/build.gradle +0 -1
  63. data/tracks/java/exercises/meetup/src/example/java/Meetup.java +9 -7
  64. data/tracks/java/exercises/meetup/src/test/java/MeetupTest.java +185 -188
  65. data/tracks/lua/config.json +0 -73
  66. data/tracks/lua/exercises/bowling/bowling_spec.lua +92 -48
  67. data/tracks/lua/exercises/bowling/example.lua +4 -1
  68. data/tracks/objective-c/config.json +9 -30
  69. data/tracks/objective-c/exercises/pangram/PangramExample.h +7 -0
  70. data/tracks/objective-c/exercises/pangram/PangramExample.m +21 -0
  71. data/tracks/objective-c/exercises/pangram/PangramTest.m +51 -0
  72. data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
  73. data/tracks/ocaml/README.md +46 -1
  74. data/tracks/ocaml/SETUP.md +21 -2
  75. data/tracks/ocaml/config.json +48 -78
  76. data/tracks/perl5/README.md +15 -8
  77. data/tracks/perl5/testall.pl +5 -5
  78. data/tracks/php/config.json +26 -34
  79. data/tracks/php/docs/ABOUT.md +15 -0
  80. data/tracks/php/exercises/allergies/allergies_test.php +121 -0
  81. data/tracks/php/exercises/allergies/example.php +64 -0
  82. data/tracks/php/exercises/etl/etl_test.php +52 -0
  83. data/tracks/php/exercises/etl/example.php +12 -0
  84. data/tracks/php/exercises/nucleotide-count/example.php +25 -0
  85. data/tracks/php/exercises/nucleotide-count/nucleotide-count_test.php +36 -0
  86. data/tracks/php/exercises/pig-latin/example.php +25 -29
  87. data/tracks/php/exercises/pig-latin/pig-latin_test.php +26 -19
  88. data/tracks/php/exercises/space-age/example.php +65 -0
  89. data/tracks/php/exercises/space-age/space-age_test.php +70 -0
  90. data/tracks/php/exercises/triangle/example.php +43 -0
  91. data/tracks/php/exercises/triangle/triangle_test.php +140 -0
  92. data/tracks/pony/exercises/anagram/example.pony +6 -6
  93. data/tracks/pony/exercises/anagram/test.pony +3 -4
  94. data/tracks/pony/exercises/bob/test.pony +23 -23
  95. data/tracks/pony/exercises/difference-of-squares/test.pony +11 -11
  96. data/tracks/pony/exercises/hamming/example.pony +3 -3
  97. data/tracks/pony/exercises/hamming/test.pony +16 -16
  98. data/tracks/pony/exercises/hello-world/test.pony +5 -4
  99. data/tracks/pony/exercises/leap/test.pony +8 -8
  100. data/tracks/python/config.json +18 -0
  101. data/tracks/python/exercises/diamond/diamond_test.py +33 -0
  102. data/tracks/python/exercises/diamond/example.py +15 -0
  103. data/tracks/python/exercises/linked-list/example.py +47 -0
  104. data/tracks/python/exercises/linked-list/linked_list.py +13 -0
  105. data/tracks/python/exercises/linked-list/linked_list_test.py +49 -0
  106. data/tracks/python/exercises/list-ops/example.py +55 -0
  107. data/tracks/python/exercises/list-ops/list_ops.py +38 -0
  108. data/tracks/python/exercises/list-ops/list_ops_test.py +136 -0
  109. data/tracks/ruby/bin/generate +22 -2
  110. data/tracks/ruby/config.json +12 -83
  111. data/tracks/ruby/exercises/allergies/allergies_test.rb +0 -1
  112. data/tracks/ruby/exercises/atbash-cipher/atbash_cipher_test.rb +0 -1
  113. data/tracks/ruby/exercises/beer-song/beer_song_test.rb +1 -2
  114. data/tracks/ruby/exercises/binary/example.rb +0 -1
  115. data/tracks/ruby/exercises/binary-search-tree/binary_search_tree_test.rb +1 -1
  116. data/tracks/ruby/exercises/bowling/.version +1 -0
  117. data/tracks/ruby/exercises/bowling/bowling_test.rb +109 -133
  118. data/tracks/ruby/exercises/bowling/example.rb +7 -7
  119. data/tracks/ruby/exercises/bowling/example.tt +27 -0
  120. data/tracks/ruby/exercises/circular-buffer/circular_buffer_test.rb +0 -2
  121. data/tracks/ruby/exercises/clock/example.rb +0 -2
  122. data/tracks/ruby/exercises/connect/connect_test.rb +0 -1
  123. data/tracks/ruby/exercises/custom-set/custom_set_test.rb +0 -1
  124. data/tracks/ruby/exercises/diamond/diamond_test.rb +0 -1
  125. data/tracks/ruby/exercises/etl/etl_test.rb +1 -1
  126. data/tracks/ruby/exercises/house/house_test.rb +0 -1
  127. data/tracks/ruby/exercises/isogram/isogram_test.rb +2 -2
  128. data/tracks/ruby/exercises/largest-series-product/example.tt +0 -3
  129. data/tracks/ruby/exercises/largest-series-product/largest_series_product_test.rb +0 -4
  130. data/tracks/ruby/exercises/linked-list/linked_list_test.rb +1 -1
  131. data/tracks/ruby/exercises/meetup/meetup_test.rb +0 -1
  132. data/tracks/ruby/exercises/nth-prime/example.tt +0 -2
  133. data/tracks/ruby/exercises/nth-prime/nth_prime_test.rb +0 -2
  134. data/tracks/ruby/exercises/ocr-numbers/ocr_numbers_test.rb +1 -2
  135. data/tracks/ruby/exercises/protein-translation/protein_translation_test.rb +0 -1
  136. data/tracks/ruby/exercises/proverb/proverb_test.rb +1 -3
  137. data/tracks/ruby/exercises/queen-attack/example.rb +3 -1
  138. data/tracks/ruby/exercises/queen-attack/queen_attack_test.rb +34 -8
  139. data/tracks/ruby/exercises/robot-simulator/robot_simulator_test.rb +1 -1
  140. data/tracks/ruby/exercises/strain/strain_test.rb +2 -2
  141. data/tracks/ruby/exercises/tournament/.version +1 -0
  142. data/tracks/ruby/exercises/tournament/example.rb +54 -0
  143. data/tracks/ruby/exercises/tournament/example.tt +23 -0
  144. data/tracks/ruby/exercises/tournament/tournament_test.rb +92 -0
  145. data/tracks/ruby/exercises/transpose/.version +1 -0
  146. data/tracks/ruby/exercises/transpose/example.rb +14 -0
  147. data/tracks/ruby/exercises/transpose/example.tt +22 -0
  148. data/tracks/ruby/exercises/transpose/transpose_test.rb +303 -0
  149. data/tracks/ruby/lib/bowling_cases.rb +46 -0
  150. data/tracks/ruby/lib/isogram_cases.rb +1 -1
  151. data/tracks/ruby/lib/tournament_cases.rb +45 -0
  152. data/tracks/ruby/lib/transpose_cases.rb +45 -0
  153. data/tracks/rust/config.json +2 -0
  154. data/tracks/rust/exercises/bowling/.gitignore +7 -0
  155. data/tracks/rust/exercises/bowling/Cargo.toml +3 -0
  156. data/tracks/rust/exercises/bowling/example.rs +134 -0
  157. data/tracks/rust/exercises/bowling/tests/bowling.rs +373 -0
  158. data/tracks/rust/exercises/grains/.gitignore +7 -0
  159. data/tracks/rust/exercises/grains/Cargo.toml +3 -0
  160. data/tracks/rust/exercises/grains/example.rs +11 -0
  161. data/tracks/rust/exercises/grains/src/lib.rs +7 -0
  162. data/tracks/rust/exercises/grains/tests/grains.rs +63 -0
  163. data/tracks/rust/problems.md +2 -0
  164. data/tracks/scala/README.md +38 -0
  165. data/tracks/scala/config.json +20 -74
  166. data/tracks/scala/exercises/accumulate/src/test/scala/accumulate_test.scala +4 -0
  167. data/tracks/scala/exercises/allergies/src/test/scala/allergies_test.scala +11 -0
  168. data/tracks/scala/exercises/alphametics/build.sbt +6 -0
  169. data/tracks/scala/exercises/alphametics/example.scala +125 -0
  170. data/tracks/scala/exercises/alphametics/src/main/scala/.keep +0 -0
  171. data/tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala +62 -0
  172. data/tracks/scala/exercises/atbash-cipher/src/test/scala/atbash_test.scala +8 -0
  173. data/tracks/scala/exercises/bank-account/src/test/scala/BankAccountTest.scala +4 -0
  174. data/tracks/scala/exercises/binary/src/test/scala/binary_test.scala +13 -0
  175. data/tracks/scala/exercises/binary-search-tree/src/test/scala/BstTest.scala +11 -0
  176. data/tracks/scala/exercises/bowling/Example.scala +116 -0
  177. data/tracks/scala/exercises/bowling/build.sbt +3 -0
  178. data/tracks/scala/exercises/bowling/src/main/scala/Bowling.scala +11 -0
  179. data/tracks/scala/exercises/bowling/src/test/scala/BowlingSuite.scala +237 -0
  180. data/tracks/scala/exercises/clock/src/test/scala/ClockTest.scala +50 -0
  181. data/tracks/scala/exercises/connect/README.md +17 -0
  182. data/tracks/scala/exercises/connect/src/test/scala/ConnectTest.scala +7 -0
  183. data/tracks/scala/exercises/crypto-square/src/test/scala/{CrytpoSquareTest.scala → CryptoSquareTest.scala} +9 -0
  184. data/tracks/scala/exercises/custom-set/src/test/scala/CustomSetTest.scala +36 -0
  185. data/tracks/scala/exercises/difference-of-squares/src/test/scala/squares_test.scala +8 -0
  186. data/tracks/scala/exercises/forth/src/test/scala/ForthTest.scala +22 -0
  187. data/tracks/scala/exercises/hexadecimal/src/test/scala/HexadecimalTest.scala +8 -0
  188. data/tracks/scala/exercises/kindergarten-garden/src/test/scala/GardenTest.scala +5 -0
  189. data/tracks/scala/exercises/largest-series-product/src/test/scala/SeriesTest.scala +2 -0
  190. data/tracks/scala/exercises/linked-list/src/test/scala/DequeTest.scala +4 -0
  191. data/tracks/scala/exercises/luhn/src/test/scala/LuhnTest.scala +4 -0
  192. data/tracks/scala/exercises/matrix/src/test/scala/MatrixTest.scala +2 -0
  193. data/tracks/scala/exercises/minesweeper/src/test/scala/MinesweeperTest.scala +6 -0
  194. data/tracks/scala/exercises/nth-prime/src/test/scala/PrimeTest.scala +5 -0
  195. data/tracks/scala/exercises/ocr-numbers/src/test/scala/OcrTest.scala +15 -0
  196. data/tracks/scala/exercises/octal/src/test/scala/OctalTest.scala +7 -0
  197. data/tracks/scala/exercises/parallel-letter-frequency/src/test/scala/FrequencyTest.scala +8 -0
  198. data/tracks/scala/exercises/pascals-triangle/src/test/scala/PascalsTriangleTest.scala +5 -0
  199. data/tracks/scala/exercises/pig-latin/src/test/scala/PigLatinTest.scala +4 -0
  200. data/tracks/scala/exercises/pythagorean-triplet/src/test/scala/PythagoreanTripletTest.scala +3 -0
  201. data/tracks/scala/exercises/queen-attack/src/test/scala/QueensTest.scala +5 -0
  202. data/tracks/scala/exercises/robot-simulator/src/test/scala/RobotTest.scala +16 -8
  203. data/tracks/scala/exercises/say/src/test/scala/SayTest.scala +34 -17
  204. data/tracks/scala/exercises/scrabble-score/src/test/scala/scrabble_score_test.scala +6 -0
  205. data/tracks/scala/exercises/secret-handshake/src/test/scala/SecretHandshakeTest.scala +18 -9
  206. data/tracks/scala/exercises/series/src/test/scala/SeriesTest.scala +4 -2
  207. data/tracks/scala/exercises/sieve/src/test/scala/SieveTest.scala +8 -4
  208. data/tracks/scala/exercises/simple-cipher/src/test/scala/CipherTest.scala +17 -9
  209. data/tracks/scala/exercises/sublist/src/test/scala/sublist_test.scala +17 -0
  210. data/tracks/scala/exercises/trinary/src/test/scala/TrinaryTest.scala +14 -7
  211. data/tracks/scala/exercises/wordy/src/test/scala/WordProblemTest.scala +28 -14
  212. data/tracks/scala/project/Build.scala +3 -3
  213. data/tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala +57 -0
  214. data/tracks/sml/config.json +41 -6
  215. data/tracks/sml/exercises/flatten-array/example.sml +6 -0
  216. data/tracks/sml/exercises/flatten-array/test_flatten_array.sml +10 -0
  217. data/tracks/sml/exercises/nth-prime/example.sml +46 -0
  218. data/tracks/sml/exercises/nth-prime/test_nth_prime.sml +14 -0
  219. data/tracks/sml/exercises/raindrops/example.sml +9 -0
  220. data/tracks/sml/exercises/raindrops/raindrops.sml +2 -0
  221. data/tracks/sml/exercises/raindrops/test_raindrops.sml +95 -0
  222. data/tracks/swift/config.json +269 -328
  223. data/tracks/swift/exercises/pangram/PangramExample.swift +17 -0
  224. data/tracks/swift/exercises/pangram/PangramTest.swift +43 -0
  225. data/tracks/swift/xcodeProject/xSwift.xcodeproj/project.pbxproj +16 -0
  226. metadata +95 -3
@@ -0,0 +1,17 @@
1
+ import Foundation
2
+ // Needed to strip diacritics
3
+
4
+ struct Pangram {
5
+
6
+ static func isPangram(_ text: String) -> Bool {
7
+ let lowercasedText = text.folding(options: .diacriticInsensitive, locale: .current).lowercased()
8
+
9
+ for letter in "abcdefghijklmnopqrstuvwxyz".characters {
10
+ if lowercasedText.contains(String(letter)) == false {
11
+ return false
12
+ }
13
+ }
14
+
15
+ return true
16
+ }
17
+ }
@@ -0,0 +1,43 @@
1
+ #if swift(>=3.0)
2
+ import XCTest
3
+ #endif
4
+
5
+ class PangramTest: XCTestCase {
6
+
7
+ func testSentenceEmpty() {
8
+ XCTAssertFalse(Pangram.isPangram(""))
9
+ }
10
+
11
+ func test_pangram_with_only_lower_case() {
12
+ XCTAssertTrue(Pangram.isPangram("the quick brown fox jumps over the lazy dog"))
13
+ }
14
+
15
+ func testMissingCharacterX() {
16
+ XCTAssertFalse(Pangram.isPangram("a quick movement of the enemy will jeopardize five gunboats"))
17
+ }
18
+
19
+ func testAnotherMissingCharacterX() {
20
+ XCTAssertFalse(Pangram.isPangram("the quick brown fish jumps over the lazy dog"))
21
+ }
22
+
23
+ func testPangramWithUnderscores() {
24
+ XCTAssertTrue(Pangram.isPangram("the_quick_brown_fox_jumps_over_the_lazy_dog"))
25
+ }
26
+
27
+ func testPangramWithNumbers() {
28
+ XCTAssertTrue(Pangram.isPangram("the 1 quick brown fox jumps over the 2 lazy dogs"))
29
+ }
30
+
31
+ func testMissingLettersReplacedByNumbers() {
32
+ XCTAssertFalse(Pangram.isPangram("7h3 qu1ck brown fox jumps ov3r 7h3 lazy dog"))
33
+ }
34
+
35
+ func testPangramWithMixedCaseAndPunctuation() {
36
+ XCTAssertTrue(Pangram.isPangram("Five quacking Zephyrs jolt my wax bed."))
37
+ }
38
+
39
+ func testPangramWithNonAsciiCharacters() {
40
+ XCTAssertTrue(Pangram.isPangram("Victor jagt zwölf Boxkämpfer quer über den großen Sylter Deich."))
41
+ }
42
+
43
+ }
@@ -131,6 +131,8 @@
131
131
  E94BDED01C510E68009318BB /* BinarySearchTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E94BDECE1C510E68009318BB /* BinarySearchTest.swift */; };
132
132
  E951B6BD1D466045009EB5B6 /* BracketPushExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E951B6BC1D466045009EB5B6 /* BracketPushExample.swift */; };
133
133
  E951B6BF1D466058009EB5B6 /* BracketPushTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E951B6BE1D466058009EB5B6 /* BracketPushTest.swift */; };
134
+ E95606C31DB9270D00EED2F5 /* PangramExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95606C21DB9270D00EED2F5 /* PangramExample.swift */; };
135
+ E95606C51DB9271E00EED2F5 /* PangramTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E95606C41DB9271E00EED2F5 /* PangramTest.swift */; };
134
136
  E99365461D6CE2D600799C70 /* BowlingExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99365451D6CE2D600799C70 /* BowlingExample.swift */; };
135
137
  E99365481D6CE2EA00799C70 /* BowlingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99365471D6CE2EA00799C70 /* BowlingTest.swift */; };
136
138
  E99909621D792446002A2B6E /* RunLengthEncodingExample.swift in Sources */ = {isa = PBXBuildFile; fileRef = E99909611D792446002A2B6E /* RunLengthEncodingExample.swift */; };
@@ -287,6 +289,8 @@
287
289
  E94BDECE1C510E68009318BB /* BinarySearchTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; name = BinarySearchTest.swift; path = "binary-search/BinarySearchTest.swift"; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
288
290
  E951B6BC1D466045009EB5B6 /* BracketPushExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BracketPushExample.swift; path = "../bracket-push/BracketPushExample.swift"; sourceTree = "<group>"; };
289
291
  E951B6BE1D466058009EB5B6 /* BracketPushTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BracketPushTest.swift; path = "../bracket-push/BracketPushTest.swift"; sourceTree = "<group>"; };
292
+ E95606C21DB9270D00EED2F5 /* PangramExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PangramExample.swift; path = pangram/PangramExample.swift; sourceTree = "<group>"; };
293
+ E95606C41DB9271E00EED2F5 /* PangramTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = PangramTest.swift; path = pangram/PangramTest.swift; sourceTree = "<group>"; };
290
294
  E99365451D6CE2D600799C70 /* BowlingExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BowlingExample.swift; path = bowling/BowlingExample.swift; sourceTree = "<group>"; };
291
295
  E99365471D6CE2EA00799C70 /* BowlingTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BowlingTest.swift; path = bowling/BowlingTest.swift; sourceTree = "<group>"; };
292
296
  E99909611D792446002A2B6E /* RunLengthEncodingExample.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RunLengthEncodingExample.swift; path = "run-length-encoding/RunLengthEncodingExample.swift"; sourceTree = "<group>"; };
@@ -367,6 +371,7 @@
367
371
  E90D61FB1C642E9900C266D3 /* ocr-numbers */,
368
372
  1E9A63371C506EFC00E28AE1 /* octal */,
369
373
  E90D62031C653A5400C266D3 /* palindrome-products */,
374
+ E95606C01DB926E100EED2F5 /* pangram */,
370
375
  E908CD511C6D7A86005D081E /* pascals-triangle */,
371
376
  1E9A633A1C506EFC00E28AE1 /* perfect-numbers */,
372
377
  1E9A633D1C506EFC00E28AE1 /* phone-number */,
@@ -997,6 +1002,15 @@
997
1002
  path = bob;
998
1003
  sourceTree = "<group>";
999
1004
  };
1005
+ E95606C01DB926E100EED2F5 /* pangram */ = {
1006
+ isa = PBXGroup;
1007
+ children = (
1008
+ E95606C21DB9270D00EED2F5 /* PangramExample.swift */,
1009
+ E95606C41DB9271E00EED2F5 /* PangramTest.swift */,
1010
+ );
1011
+ name = pangram;
1012
+ sourceTree = "<group>";
1013
+ };
1000
1014
  E99365441D6CE2AF00799C70 /* bowling */ = {
1001
1015
  isa = PBXGroup;
1002
1016
  children = (
@@ -1199,6 +1213,7 @@
1199
1213
  E9AFA16B1C5EF4DA006AD72D /* MatrixExample.swift in Sources */,
1200
1214
  1E9A63EE1C506EFD00E28AE1 /* WordyExample.swift in Sources */,
1201
1215
  1E9A63C11C506EFD00E28AE1 /* PigLatinTest.swift in Sources */,
1216
+ E95606C31DB9270D00EED2F5 /* PangramExample.swift in Sources */,
1202
1217
  1E9A63B91C506EFD00E28AE1 /* NucleotideCountTest.swift in Sources */,
1203
1218
  1E9A63BF1C506EFD00E28AE1 /* PhoneNumberTest.swift in Sources */,
1204
1219
  E94BDED01C510E68009318BB /* BinarySearchTest.swift in Sources */,
@@ -1260,6 +1275,7 @@
1260
1275
  E90D62061C653AC000C266D3 /* PalindromeProductsExample.swift in Sources */,
1261
1276
  1E9A63E91C506EFD00E28AE1 /* TrinaryTest.swift in Sources */,
1262
1277
  1E9A63A11C506EFD00E28AE1 /* GigasecondTest.swift in Sources */,
1278
+ E95606C51DB9271E00EED2F5 /* PangramTest.swift in Sources */,
1263
1279
  1E9A63911C506EFD00E28AE1 /* AtbashTest.swift in Sources */,
1264
1280
  1E9A63CD1C506EFD00E28AE1 /* RobotNameTest.swift in Sources */,
1265
1281
  1E4CC79F1C90D48300C8BBEB /* DominoesExample.swift in Sources */,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trackler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.1
4
+ version: 2.0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-22 00:00:00.000000000 Z
11
+ date: 2016-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -205,6 +205,7 @@ files:
205
205
  - common/exercises/go-counting/metadata.yml
206
206
  - common/exercises/grade-school/description.md
207
207
  - common/exercises/grade-school/metadata.yml
208
+ - common/exercises/grains/canonical-data.json
208
209
  - common/exercises/grains/description.md
209
210
  - common/exercises/grains/metadata.yml
210
211
  - common/exercises/grep/canonical-data.json
@@ -517,6 +518,14 @@ files:
517
518
  - tracks/c/config.json
518
519
  - tracks/c/docs/INSTALLATION.md
519
520
  - tracks/c/docs/TESTS.md
521
+ - tracks/c/exercises/allergies/makefile
522
+ - tracks/c/exercises/allergies/src/allergies.h
523
+ - tracks/c/exercises/allergies/src/example.c
524
+ - tracks/c/exercises/allergies/src/example.h
525
+ - tracks/c/exercises/allergies/test/test_allergies.c
526
+ - tracks/c/exercises/allergies/test/vendor/unity.c
527
+ - tracks/c/exercises/allergies/test/vendor/unity.h
528
+ - tracks/c/exercises/allergies/test/vendor/unity_internals.h
520
529
  - tracks/c/exercises/anagram/makefile
521
530
  - tracks/c/exercises/anagram/src/anagram.h
522
531
  - tracks/c/exercises/anagram/src/example.c
@@ -524,6 +533,13 @@ files:
524
533
  - tracks/c/exercises/anagram/test/vendor/unity.c
525
534
  - tracks/c/exercises/anagram/test/vendor/unity.h
526
535
  - tracks/c/exercises/anagram/test/vendor/unity_internals.h
536
+ - tracks/c/exercises/atbash-cipher/makefile
537
+ - tracks/c/exercises/atbash-cipher/src/example.c
538
+ - tracks/c/exercises/atbash-cipher/src/example.h
539
+ - tracks/c/exercises/atbash-cipher/test/test_atbash_cipher.c
540
+ - tracks/c/exercises/atbash-cipher/test/vendor/unity.c
541
+ - tracks/c/exercises/atbash-cipher/test/vendor/unity.h
542
+ - tracks/c/exercises/atbash-cipher/test/vendor/unity_internals.h
527
543
  - tracks/c/exercises/beer-song/makefile
528
544
  - tracks/c/exercises/beer-song/src/example.c
529
545
  - tracks/c/exercises/beer-song/src/example.h
@@ -609,6 +625,13 @@ files:
609
625
  - tracks/c/exercises/pangram/test/vendor/unity.c
610
626
  - tracks/c/exercises/pangram/test/vendor/unity.h
611
627
  - tracks/c/exercises/pangram/test/vendor/unity_internals.h
628
+ - tracks/c/exercises/phone-number/makefile
629
+ - tracks/c/exercises/phone-number/src/example.c
630
+ - tracks/c/exercises/phone-number/src/example.h
631
+ - tracks/c/exercises/phone-number/test/test_phone_number.c
632
+ - tracks/c/exercises/phone-number/test/vendor/unity.c
633
+ - tracks/c/exercises/phone-number/test/vendor/unity.h
634
+ - tracks/c/exercises/phone-number/test/vendor/unity_internals.h
612
635
  - tracks/c/exercises/raindrops/makefile
613
636
  - tracks/c/exercises/raindrops/src/example.c
614
637
  - tracks/c/exercises/raindrops/src/example.h
@@ -1265,6 +1288,8 @@ files:
1265
1288
  - tracks/csharp/exercises/rail-fence-cipher/RailFenceCipherTest.cs
1266
1289
  - tracks/csharp/exercises/raindrops/Example.cs
1267
1290
  - tracks/csharp/exercises/raindrops/RaindropsTest.cs
1291
+ - tracks/csharp/exercises/rectangles/Example.cs
1292
+ - tracks/csharp/exercises/rectangles/RectanglesTest.cs
1268
1293
  - tracks/csharp/exercises/rna-transcription/ComplementTest.cs
1269
1294
  - tracks/csharp/exercises/rna-transcription/Example.cs
1270
1295
  - tracks/csharp/exercises/robot-name/Example.cs
@@ -1811,6 +1836,9 @@ files:
1811
1836
  - tracks/elixir/exercises/grains/example.exs
1812
1837
  - tracks/elixir/exercises/grains/grains.exs
1813
1838
  - tracks/elixir/exercises/grains/grains_test.exs
1839
+ - tracks/elixir/exercises/grep/example.exs
1840
+ - tracks/elixir/exercises/grep/grep.exs
1841
+ - tracks/elixir/exercises/grep/grep_test.exs
1814
1842
  - tracks/elixir/exercises/hamming/example.exs
1815
1843
  - tracks/elixir/exercises/hamming/hamming.exs
1816
1844
  - tracks/elixir/exercises/hamming/hamming_test.exs
@@ -2541,6 +2569,8 @@ files:
2541
2569
  - tracks/go/exercises/custom-set/example.go
2542
2570
  - tracks/go/exercises/custom-set/example_gen.go
2543
2571
  - tracks/go/exercises/custom-set/example_slice.go
2572
+ - tracks/go/exercises/diamond/diamond_test.go
2573
+ - tracks/go/exercises/diamond/example.go
2544
2574
  - tracks/go/exercises/difference-of-squares/difference_of_squares_test.go
2545
2575
  - tracks/go/exercises/difference-of-squares/example.go
2546
2576
  - tracks/go/exercises/diffie-hellman/diffie_hellman_test.go
@@ -4416,6 +4446,9 @@ files:
4416
4446
  - tracks/objective-c/exercises/nucleotide-count/NucleotideCountExample.h
4417
4447
  - tracks/objective-c/exercises/nucleotide-count/NucleotideCountExample.m
4418
4448
  - tracks/objective-c/exercises/nucleotide-count/NucleotideCountTest.m
4449
+ - tracks/objective-c/exercises/pangram/PangramExample.h
4450
+ - tracks/objective-c/exercises/pangram/PangramExample.m
4451
+ - tracks/objective-c/exercises/pangram/PangramTest.m
4419
4452
  - tracks/objective-c/exercises/perfect-numbers/PerfectNumbersExample.h
4420
4453
  - tracks/objective-c/exercises/perfect-numbers/PerfectNumbersExample.m
4421
4454
  - tracks/objective-c/exercises/perfect-numbers/PerfectNumbersTest.m
@@ -4852,6 +4885,8 @@ files:
4852
4885
  - tracks/php/exercises/accumulate/example.php
4853
4886
  - tracks/php/exercises/acronym/acronym_test.php
4854
4887
  - tracks/php/exercises/acronym/example.php
4888
+ - tracks/php/exercises/allergies/allergies_test.php
4889
+ - tracks/php/exercises/allergies/example.php
4855
4890
  - tracks/php/exercises/anagram/anagram_test.php
4856
4891
  - tracks/php/exercises/anagram/example.php
4857
4892
  - tracks/php/exercises/atbash-cipher/atbash-cipher_test.php
@@ -4876,6 +4911,8 @@ files:
4876
4911
  - tracks/php/exercises/connect/example.php
4877
4912
  - tracks/php/exercises/difference-of-squares/difference-of-squares_test.php
4878
4913
  - tracks/php/exercises/difference-of-squares/example.php
4914
+ - tracks/php/exercises/etl/etl_test.php
4915
+ - tracks/php/exercises/etl/example.php
4879
4916
  - tracks/php/exercises/gigasecond/example.php
4880
4917
  - tracks/php/exercises/gigasecond/gigasecond_test.php
4881
4918
  - tracks/php/exercises/hamming/example.php
@@ -4892,6 +4929,8 @@ files:
4892
4929
  - tracks/php/exercises/leap/leap_test.php
4893
4930
  - tracks/php/exercises/minesweeper/example.php
4894
4931
  - tracks/php/exercises/minesweeper/minesweeper_test.php
4932
+ - tracks/php/exercises/nucleotide-count/example.php
4933
+ - tracks/php/exercises/nucleotide-count/nucleotide-count_test.php
4895
4934
  - tracks/php/exercises/pangram/example.php
4896
4935
  - tracks/php/exercises/pangram/pangram_test.php
4897
4936
  - tracks/php/exercises/phone-number/example.php
@@ -4906,6 +4945,10 @@ files:
4906
4945
  - tracks/php/exercises/robot-name/robot-name_test.php
4907
4946
  - tracks/php/exercises/roman-numerals/example.php
4908
4947
  - tracks/php/exercises/roman-numerals/roman-numerals_test.php
4948
+ - tracks/php/exercises/space-age/example.php
4949
+ - tracks/php/exercises/space-age/space-age_test.php
4950
+ - tracks/php/exercises/triangle/example.php
4951
+ - tracks/php/exercises/triangle/triangle_test.php
4909
4952
  - tracks/php/exercises/trinary/example.php
4910
4953
  - tracks/php/exercises/trinary/trinary_test.php
4911
4954
  - tracks/php/exercises/variable-length-quantity/example.php
@@ -5098,6 +5141,8 @@ files:
5098
5141
  - tracks/python/exercises/clock/example.py
5099
5142
  - tracks/python/exercises/crypto-square/crypto_square_test.py
5100
5143
  - tracks/python/exercises/crypto-square/example.py
5144
+ - tracks/python/exercises/diamond/diamond_test.py
5145
+ - tracks/python/exercises/diamond/example.py
5101
5146
  - tracks/python/exercises/difference-of-squares/difference_of_squares_test.py
5102
5147
  - tracks/python/exercises/difference-of-squares/example.py
5103
5148
  - tracks/python/exercises/etl/etl_test.py
@@ -5125,6 +5170,12 @@ files:
5125
5170
  - tracks/python/exercises/largest-series-product/largest_series_product_test.py
5126
5171
  - tracks/python/exercises/leap/example.py
5127
5172
  - tracks/python/exercises/leap/leap_test.py
5173
+ - tracks/python/exercises/linked-list/example.py
5174
+ - tracks/python/exercises/linked-list/linked_list.py
5175
+ - tracks/python/exercises/linked-list/linked_list_test.py
5176
+ - tracks/python/exercises/list-ops/example.py
5177
+ - tracks/python/exercises/list-ops/list_ops.py
5178
+ - tracks/python/exercises/list-ops/list_ops_test.py
5128
5179
  - tracks/python/exercises/luhn/example.py
5129
5180
  - tracks/python/exercises/luhn/luhn_test.py
5130
5181
  - tracks/python/exercises/matrix/example.py
@@ -5382,8 +5433,10 @@ files:
5382
5433
  - tracks/ruby/exercises/binary/example.tt
5383
5434
  - tracks/ruby/exercises/bob/bob_test.rb
5384
5435
  - tracks/ruby/exercises/bob/example.rb
5436
+ - tracks/ruby/exercises/bowling/.version
5385
5437
  - tracks/ruby/exercises/bowling/bowling_test.rb
5386
5438
  - tracks/ruby/exercises/bowling/example.rb
5439
+ - tracks/ruby/exercises/bowling/example.tt
5387
5440
  - tracks/ruby/exercises/bracket-push/.version
5388
5441
  - tracks/ruby/exercises/bracket-push/bracket_push_test.rb
5389
5442
  - tracks/ruby/exercises/bracket-push/example.rb
@@ -5550,6 +5603,14 @@ files:
5550
5603
  - tracks/ruby/exercises/strain/strain_test.rb
5551
5604
  - tracks/ruby/exercises/sum-of-multiples/example.rb
5552
5605
  - tracks/ruby/exercises/sum-of-multiples/sum_of_multiples_test.rb
5606
+ - tracks/ruby/exercises/tournament/.version
5607
+ - tracks/ruby/exercises/tournament/example.rb
5608
+ - tracks/ruby/exercises/tournament/example.tt
5609
+ - tracks/ruby/exercises/tournament/tournament_test.rb
5610
+ - tracks/ruby/exercises/transpose/.version
5611
+ - tracks/ruby/exercises/transpose/example.rb
5612
+ - tracks/ruby/exercises/transpose/example.tt
5613
+ - tracks/ruby/exercises/transpose/transpose_test.rb
5553
5614
  - tracks/ruby/exercises/triangle/example.rb
5554
5615
  - tracks/ruby/exercises/triangle/triangle_test.rb
5555
5616
  - tracks/ruby/exercises/trinary/example.rb
@@ -5573,6 +5634,7 @@ files:
5573
5634
  - tracks/ruby/lib/anagram_cases.rb
5574
5635
  - tracks/ruby/lib/binary_cases.rb
5575
5636
  - tracks/ruby/lib/bookkeeping.md
5637
+ - tracks/ruby/lib/bowling_cases.rb
5576
5638
  - tracks/ruby/lib/bracket_push_cases.rb
5577
5639
  - tracks/ruby/lib/clock_cases.rb
5578
5640
  - tracks/ruby/lib/connect_cases.rb
@@ -5594,6 +5656,8 @@ files:
5594
5656
  - tracks/ruby/lib/roman_numerals_cases.rb
5595
5657
  - tracks/ruby/lib/run_length_encoding_cases.rb
5596
5658
  - tracks/ruby/lib/sieve_cases.rb
5659
+ - tracks/ruby/lib/tournament_cases.rb
5660
+ - tracks/ruby/lib/transpose_cases.rb
5597
5661
  - tracks/ruby/lib/two_bucket_cases.rb
5598
5662
  - tracks/ruby/lib/word_count_cases.rb
5599
5663
  - tracks/rust/.git
@@ -5639,6 +5703,10 @@ files:
5639
5703
  - tracks/rust/exercises/bob/Cargo.toml
5640
5704
  - tracks/rust/exercises/bob/example.rs
5641
5705
  - tracks/rust/exercises/bob/tests/bob.rs
5706
+ - tracks/rust/exercises/bowling/.gitignore
5707
+ - tracks/rust/exercises/bowling/Cargo.toml
5708
+ - tracks/rust/exercises/bowling/example.rs
5709
+ - tracks/rust/exercises/bowling/tests/bowling.rs
5642
5710
  - tracks/rust/exercises/bracket-push/Cargo.lock
5643
5711
  - tracks/rust/exercises/bracket-push/Cargo.toml
5644
5712
  - tracks/rust/exercises/bracket-push/HINTS.md
@@ -5677,6 +5745,11 @@ files:
5677
5745
  - tracks/rust/exercises/grade-school/Cargo.toml
5678
5746
  - tracks/rust/exercises/grade-school/example.rs
5679
5747
  - tracks/rust/exercises/grade-school/tests/grade-school.rs
5748
+ - tracks/rust/exercises/grains/.gitignore
5749
+ - tracks/rust/exercises/grains/Cargo.toml
5750
+ - tracks/rust/exercises/grains/example.rs
5751
+ - tracks/rust/exercises/grains/src/lib.rs
5752
+ - tracks/rust/exercises/grains/tests/grains.rs
5680
5753
  - tracks/rust/exercises/hamming/Cargo.lock
5681
5754
  - tracks/rust/exercises/hamming/Cargo.toml
5682
5755
  - tracks/rust/exercises/hamming/example.rs
@@ -5834,6 +5907,10 @@ files:
5834
5907
  - tracks/scala/exercises/allergies/example.scala
5835
5908
  - tracks/scala/exercises/allergies/src/main/scala/.keep
5836
5909
  - tracks/scala/exercises/allergies/src/test/scala/allergies_test.scala
5910
+ - tracks/scala/exercises/alphametics/build.sbt
5911
+ - tracks/scala/exercises/alphametics/example.scala
5912
+ - tracks/scala/exercises/alphametics/src/main/scala/.keep
5913
+ - tracks/scala/exercises/alphametics/src/test/scala/AlphameticsTest.scala
5837
5914
  - tracks/scala/exercises/anagram/build.sbt
5838
5915
  - tracks/scala/exercises/anagram/example.scala
5839
5916
  - tracks/scala/exercises/anagram/src/main/scala/.keep
@@ -5858,6 +5935,10 @@ files:
5858
5935
  - tracks/scala/exercises/bob/example.scala
5859
5936
  - tracks/scala/exercises/bob/src/main/scala/.keep
5860
5937
  - tracks/scala/exercises/bob/src/test/scala/bob_test.scala
5938
+ - tracks/scala/exercises/bowling/Example.scala
5939
+ - tracks/scala/exercises/bowling/build.sbt
5940
+ - tracks/scala/exercises/bowling/src/main/scala/Bowling.scala
5941
+ - tracks/scala/exercises/bowling/src/test/scala/BowlingSuite.scala
5861
5942
  - tracks/scala/exercises/bracket-push/build.sbt
5862
5943
  - tracks/scala/exercises/bracket-push/example.scala
5863
5944
  - tracks/scala/exercises/bracket-push/src/main/scala/.keep
@@ -5870,6 +5951,7 @@ files:
5870
5951
  - tracks/scala/exercises/clock/example.scala
5871
5952
  - tracks/scala/exercises/clock/src/main/scala/.keep
5872
5953
  - tracks/scala/exercises/clock/src/test/scala/ClockTest.scala
5954
+ - tracks/scala/exercises/connect/README.md
5873
5955
  - tracks/scala/exercises/connect/build.sbt
5874
5956
  - tracks/scala/exercises/connect/example.scala
5875
5957
  - tracks/scala/exercises/connect/src/main/scala/.keep
@@ -5877,7 +5959,7 @@ files:
5877
5959
  - tracks/scala/exercises/crypto-square/build.sbt
5878
5960
  - tracks/scala/exercises/crypto-square/example.scala
5879
5961
  - tracks/scala/exercises/crypto-square/src/main/scala/.keep
5880
- - tracks/scala/exercises/crypto-square/src/test/scala/CrytpoSquareTest.scala
5962
+ - tracks/scala/exercises/crypto-square/src/test/scala/CryptoSquareTest.scala
5881
5963
  - tracks/scala/exercises/custom-set/build.sbt
5882
5964
  - tracks/scala/exercises/custom-set/example.scala
5883
5965
  - tracks/scala/exercises/custom-set/src/main/scala/.keep
@@ -6111,6 +6193,7 @@ files:
6111
6193
  - tracks/scala/project/build.properties
6112
6194
  - tracks/scala/testgen/build.sbt
6113
6195
  - tracks/scala/testgen/src/main/scala/AllYourBaseTestGenerator.scala
6196
+ - tracks/scala/testgen/src/main/scala/BowlingTestGenerator.scala
6114
6197
  - tracks/scala/testgen/src/main/scala/BracketPushTestGenerator.scala
6115
6198
  - tracks/scala/testgen/src/main/scala/CustomSetTestGenerator.scala
6116
6199
  - tracks/scala/testgen/src/main/scala/PangramsTestGenerator.scala
@@ -6181,8 +6264,15 @@ files:
6181
6264
  - tracks/sml/exercises/anagram/test_anagram.sml
6182
6265
  - tracks/sml/exercises/binary/example.sml
6183
6266
  - tracks/sml/exercises/binary/test_binary.sml
6267
+ - tracks/sml/exercises/flatten-array/example.sml
6268
+ - tracks/sml/exercises/flatten-array/test_flatten_array.sml
6184
6269
  - tracks/sml/exercises/hamming/example.sml
6185
6270
  - tracks/sml/exercises/hamming/test_hamming.sml
6271
+ - tracks/sml/exercises/nth-prime/example.sml
6272
+ - tracks/sml/exercises/nth-prime/test_nth_prime.sml
6273
+ - tracks/sml/exercises/raindrops/example.sml
6274
+ - tracks/sml/exercises/raindrops/raindrops.sml
6275
+ - tracks/sml/exercises/raindrops/test_raindrops.sml
6186
6276
  - tracks/sml/img/icon.png
6187
6277
  - tracks/swift/.git
6188
6278
  - tracks/swift/.gitignore
@@ -6281,6 +6371,8 @@ files:
6281
6371
  - tracks/swift/exercises/octal/OctalTest.swift
6282
6372
  - tracks/swift/exercises/palindrome-products/PalindromeProductsExample.swift
6283
6373
  - tracks/swift/exercises/palindrome-products/PalindromeProductsTest.swift
6374
+ - tracks/swift/exercises/pangram/PangramExample.swift
6375
+ - tracks/swift/exercises/pangram/PangramTest.swift
6284
6376
  - tracks/swift/exercises/pascals-triangle/PascalsTriangleExample.swift
6285
6377
  - tracks/swift/exercises/pascals-triangle/PascalsTriangleTest.swift
6286
6378
  - tracks/swift/exercises/perfect-numbers/PerfectNumbersExample.swift