trackler 2.0.0.1 → 2.0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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