trackler 2.2.1.57 → 2.2.1.58

Sign up to get free protection for your applications and to get access to all the features.
Files changed (141) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/problem-specifications/exercises/custom-set/canonical-data.json +8 -1
  4. data/tracks/c/README.md +2 -44
  5. data/tracks/c/docs/CONTRIBUTING.md +93 -0
  6. data/tracks/c/docs/C_STYLE_GUIDE.md +1 -1
  7. data/tracks/clojure/config.json +27 -0
  8. data/tracks/clojure/exercises/accumulate/project.clj +1 -1
  9. data/tracks/clojure/exercises/acronym/project.clj +1 -1
  10. data/tracks/clojure/exercises/all-your-base/project.clj +1 -1
  11. data/tracks/clojure/exercises/allergies/project.clj +1 -1
  12. data/tracks/clojure/exercises/anagram/project.clj +1 -1
  13. data/tracks/clojure/exercises/atbash-cipher/project.clj +1 -1
  14. data/tracks/clojure/exercises/bank-account/project.clj +1 -1
  15. data/tracks/clojure/exercises/beer-song/project.clj +1 -1
  16. data/tracks/clojure/exercises/binary/project.clj +1 -1
  17. data/tracks/clojure/exercises/binary-search/project.clj +1 -1
  18. data/tracks/clojure/exercises/binary-search-tree/project.clj +1 -1
  19. data/tracks/clojure/exercises/bob/project.clj +1 -1
  20. data/tracks/clojure/exercises/bracket-push/project.clj +1 -1
  21. data/tracks/clojure/exercises/change/project.clj +1 -1
  22. data/tracks/clojure/exercises/clock/project.clj +1 -1
  23. data/tracks/clojure/exercises/collatz-conjecture/project.clj +1 -1
  24. data/tracks/clojure/exercises/complex-numbers/project.clj +1 -1
  25. data/tracks/clojure/exercises/crypto-square/project.clj +1 -1
  26. data/tracks/clojure/exercises/diamond/README.md +51 -0
  27. data/tracks/clojure/exercises/diamond/project.clj +4 -0
  28. data/tracks/clojure/exercises/diamond/src/example.clj +22 -0
  29. data/tracks/clojure/exercises/diamond/test/diamond_test.clj +79 -0
  30. data/tracks/clojure/exercises/difference-of-squares/project.clj +1 -1
  31. data/tracks/clojure/exercises/etl/project.clj +1 -1
  32. data/tracks/clojure/exercises/flatten-array/project.clj +1 -1
  33. data/tracks/clojure/exercises/gigasecond/project.clj +1 -1
  34. data/tracks/clojure/exercises/grade-school/project.clj +1 -1
  35. data/tracks/clojure/exercises/grains/project.clj +1 -1
  36. data/tracks/clojure/exercises/hamming/project.clj +1 -1
  37. data/tracks/clojure/exercises/hello-world/project.clj +1 -1
  38. data/tracks/clojure/exercises/hexadecimal/project.clj +1 -1
  39. data/tracks/clojure/exercises/isogram/project.clj +1 -1
  40. data/tracks/clojure/exercises/kindergarten-garden/project.clj +1 -1
  41. data/tracks/clojure/exercises/largest-series-product/project.clj +1 -1
  42. data/tracks/clojure/exercises/leap/project.clj +1 -1
  43. data/tracks/clojure/exercises/luhn/project.clj +1 -1
  44. data/tracks/clojure/exercises/meetup/project.clj +1 -1
  45. data/tracks/clojure/exercises/minesweeper/project.clj +1 -1
  46. data/tracks/clojure/exercises/nth-prime/project.clj +1 -1
  47. data/tracks/clojure/exercises/nucleotide-count/project.clj +1 -1
  48. data/tracks/clojure/exercises/octal/project.clj +1 -1
  49. data/tracks/clojure/exercises/pascals-triangle/project.clj +1 -1
  50. data/tracks/clojure/exercises/perfect-numbers/project.clj +1 -1
  51. data/tracks/clojure/exercises/phone-number/project.clj +1 -1
  52. data/tracks/clojure/exercises/pig-latin/project.clj +1 -1
  53. data/tracks/clojure/exercises/prime-factors/project.clj +1 -1
  54. data/tracks/clojure/exercises/protein-translation/README.md +40 -0
  55. data/tracks/clojure/exercises/protein-translation/project.clj +4 -0
  56. data/tracks/clojure/exercises/protein-translation/src/example.clj +19 -0
  57. data/tracks/clojure/exercises/protein-translation/test/protein_translation_test.clj +36 -0
  58. data/tracks/clojure/exercises/queen-attack/project.clj +1 -1
  59. data/tracks/clojure/exercises/raindrops/project.clj +1 -1
  60. data/tracks/clojure/exercises/rna-transcription/project.clj +1 -1
  61. data/tracks/clojure/exercises/robot-name/project.clj +1 -1
  62. data/tracks/clojure/exercises/robot-simulator/project.clj +1 -1
  63. data/tracks/clojure/exercises/roman-numerals/project.clj +1 -1
  64. data/tracks/clojure/exercises/rotational-cipher/project.clj +1 -1
  65. data/tracks/clojure/exercises/run-length-encoding/README.md +36 -0
  66. data/tracks/clojure/exercises/run-length-encoding/project.clj +4 -0
  67. data/tracks/clojure/exercises/run-length-encoding/src/example.clj +20 -0
  68. data/tracks/clojure/exercises/run-length-encoding/src/run_length_encoding.clj +11 -0
  69. data/tracks/clojure/exercises/run-length-encoding/test/run_length_encoding_test.clj +57 -0
  70. data/tracks/clojure/exercises/scrabble-score/project.clj +1 -1
  71. data/tracks/clojure/exercises/secret-handshake/project.clj +1 -1
  72. data/tracks/clojure/exercises/series/project.clj +1 -1
  73. data/tracks/clojure/exercises/sieve/project.clj +1 -1
  74. data/tracks/clojure/exercises/space-age/project.clj +1 -1
  75. data/tracks/clojure/exercises/spiral-matrix/project.clj +1 -1
  76. data/tracks/clojure/exercises/strain/project.clj +1 -1
  77. data/tracks/clojure/exercises/sublist/project.clj +1 -1
  78. data/tracks/clojure/exercises/sum-of-multiples/project.clj +1 -1
  79. data/tracks/clojure/exercises/triangle/project.clj +1 -1
  80. data/tracks/clojure/exercises/trinary/project.clj +1 -1
  81. data/tracks/clojure/exercises/word-count/project.clj +1 -1
  82. data/tracks/clojure/exercises/wordy/project.clj +1 -1
  83. data/tracks/clojure/project.clj +2 -2
  84. data/tracks/ecmascript/config.json +10 -15
  85. data/tracks/ecmascript/docs/TESTS.md +15 -0
  86. data/tracks/ecmascript/exercises/complex-numbers/README.md +68 -0
  87. data/tracks/ecmascript/exercises/complex-numbers/complex-numbers.spec.js +216 -0
  88. data/tracks/ecmascript/exercises/complex-numbers/example.js +43 -0
  89. data/tracks/ecmascript/exercises/{transpose → complex-numbers}/package.json +2 -2
  90. data/tracks/elixir/config.json +22 -1
  91. data/tracks/elixir/exercises/isbn-verifier/README.md +80 -0
  92. data/tracks/elixir/exercises/isbn-verifier/example.exs +36 -0
  93. data/tracks/elixir/exercises/isbn-verifier/isbn_verifier.exs +18 -0
  94. data/tracks/elixir/exercises/isbn-verifier/isbn_verifier_test.exs +75 -0
  95. data/tracks/elixir/exercises/spiral-matrix/README.md +65 -0
  96. data/tracks/elixir/exercises/spiral-matrix/example.exs +27 -0
  97. data/tracks/elixir/exercises/spiral-matrix/spiral.exs +9 -0
  98. data/tracks/elixir/exercises/spiral-matrix/spiral_test.exs +58 -0
  99. data/tracks/erlang/config.json +10 -0
  100. data/tracks/erlang/exercises/complex-numbers/HINTS.md +2 -0
  101. data/tracks/erlang/exercises/complex-numbers/README.md +85 -0
  102. data/tracks/erlang/exercises/complex-numbers/include/exercism.hrl +11 -0
  103. data/tracks/erlang/exercises/complex-numbers/rebar.config +30 -0
  104. data/tracks/erlang/exercises/complex-numbers/src/complex_numbers.app.src +9 -0
  105. data/tracks/erlang/exercises/complex-numbers/src/complex_numbers.erl +29 -0
  106. data/tracks/erlang/exercises/complex-numbers/src/example.erl +44 -0
  107. data/tracks/erlang/exercises/complex-numbers/test/complex_numbers_tests.erl +152 -0
  108. data/tracks/erlang/testgen/src/tgen.erl +1 -1
  109. data/tracks/erlang/testgen/src/tgen_complex-numbers.erl +75 -0
  110. data/tracks/java/config.json +10 -5
  111. data/tracks/javascript/config.json +13 -0
  112. data/tracks/javascript/exercises/isbn-verifier/README.md +66 -0
  113. data/tracks/javascript/exercises/isbn-verifier/example.js +24 -0
  114. data/tracks/javascript/exercises/isbn-verifier/isbn-verifier.spec.js +68 -0
  115. data/tracks/perl6/config/maintainers.json +4 -4
  116. data/tracks/perl6/config.json +21 -21
  117. data/tracks/php/README.md +1 -0
  118. data/tracks/python/config/maintainers.json +3 -3
  119. data/tracks/python/exercises/alphametics/alphametics_test.py +6 -6
  120. data/tracks/python/exercises/queen-attack/queen_attack_test.py +60 -40
  121. data/tracks/sml/config.json +13 -2
  122. data/tracks/sml/exercises/flatten-array/{HINTS.md → .meta/hints.md} +0 -0
  123. data/tracks/sml/exercises/nth-prime/{HINTS.md → .meta/hints.md} +0 -0
  124. data/tracks/sml/exercises/pig-latin/README.md +54 -0
  125. data/tracks/sml/exercises/pig-latin/example.sml +23 -0
  126. data/tracks/sml/exercises/pig-latin/pig-latin.sml +2 -0
  127. data/tracks/sml/exercises/pig-latin/test.sml +90 -0
  128. data/tracks/sml/exercises/pig-latin/testlib.sml +159 -0
  129. data/tracks/typescript/config.json +16 -0
  130. data/tracks/typescript/exercises/ocr-numbers/README.md +110 -0
  131. data/tracks/typescript/exercises/ocr-numbers/ocr-numbers.example.ts +92 -0
  132. data/tracks/typescript/exercises/ocr-numbers/ocr-numbers.test.ts +155 -0
  133. data/tracks/typescript/exercises/ocr-numbers/ocr-numbers.ts +3 -0
  134. data/tracks/typescript/exercises/ocr-numbers/package.json +36 -0
  135. data/tracks/typescript/exercises/ocr-numbers/tsconfig.json +22 -0
  136. data/tracks/typescript/exercises/ocr-numbers/tslint.json +127 -0
  137. data/tracks/typescript/exercises/ocr-numbers/yarn.lock +2624 -0
  138. metadata +55 -8
  139. data/tracks/ecmascript/exercises/transpose/README.md +0 -94
  140. data/tracks/ecmascript/exercises/transpose/example.js +0 -12
  141. data/tracks/ecmascript/exercises/transpose/transpose.spec.js +0 -67
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.2.1.57
4
+ version: 2.2.1.58
5
5
  platform: ruby
6
6
  authors:
7
7
  - Katrina Owen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-31 00:00:00.000000000 Z
11
+ date: 2017-11-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -652,6 +652,7 @@ files:
652
652
  - tracks/c/config.json
653
653
  - tracks/c/config/exercise_readme.go.tmpl
654
654
  - tracks/c/docs/ABOUT.md
655
+ - tracks/c/docs/CONTRIBUTING.md
655
656
  - tracks/c/docs/C_STYLE_GUIDE.md
656
657
  - tracks/c/docs/EXERCISE_README_INSERT.md
657
658
  - tracks/c/docs/INSTALLATION.md
@@ -1429,6 +1430,10 @@ files:
1429
1430
  - tracks/clojure/exercises/crypto-square/project.clj
1430
1431
  - tracks/clojure/exercises/crypto-square/src/example.clj
1431
1432
  - tracks/clojure/exercises/crypto-square/test/crypto_square_test.clj
1433
+ - tracks/clojure/exercises/diamond/README.md
1434
+ - tracks/clojure/exercises/diamond/project.clj
1435
+ - tracks/clojure/exercises/diamond/src/example.clj
1436
+ - tracks/clojure/exercises/diamond/test/diamond_test.clj
1432
1437
  - tracks/clojure/exercises/difference-of-squares/README.md
1433
1438
  - tracks/clojure/exercises/difference-of-squares/project.clj
1434
1439
  - tracks/clojure/exercises/difference-of-squares/src/example.clj
@@ -1537,6 +1542,10 @@ files:
1537
1542
  - tracks/clojure/exercises/prime-factors/project.clj
1538
1543
  - tracks/clojure/exercises/prime-factors/src/example.clj
1539
1544
  - tracks/clojure/exercises/prime-factors/test/prime_factors_test.clj
1545
+ - tracks/clojure/exercises/protein-translation/README.md
1546
+ - tracks/clojure/exercises/protein-translation/project.clj
1547
+ - tracks/clojure/exercises/protein-translation/src/example.clj
1548
+ - tracks/clojure/exercises/protein-translation/test/protein_translation_test.clj
1540
1549
  - tracks/clojure/exercises/queen-attack/README.md
1541
1550
  - tracks/clojure/exercises/queen-attack/project.clj
1542
1551
  - tracks/clojure/exercises/queen-attack/src/example.clj
@@ -1566,6 +1575,11 @@ files:
1566
1575
  - tracks/clojure/exercises/rotational-cipher/project.clj
1567
1576
  - tracks/clojure/exercises/rotational-cipher/src/example.clj
1568
1577
  - tracks/clojure/exercises/rotational-cipher/test/rotational_cipher_test.clj
1578
+ - tracks/clojure/exercises/run-length-encoding/README.md
1579
+ - tracks/clojure/exercises/run-length-encoding/project.clj
1580
+ - tracks/clojure/exercises/run-length-encoding/src/example.clj
1581
+ - tracks/clojure/exercises/run-length-encoding/src/run_length_encoding.clj
1582
+ - tracks/clojure/exercises/run-length-encoding/test/run_length_encoding_test.clj
1569
1583
  - tracks/clojure/exercises/scrabble-score/README.md
1570
1584
  - tracks/clojure/exercises/scrabble-score/project.clj
1571
1585
  - tracks/clojure/exercises/scrabble-score/src/example.clj
@@ -3382,6 +3396,10 @@ files:
3382
3396
  - tracks/ecmascript/exercises/collatz-conjecture/collatz-conjecture.spec.js
3383
3397
  - tracks/ecmascript/exercises/collatz-conjecture/example.js
3384
3398
  - tracks/ecmascript/exercises/collatz-conjecture/package.json
3399
+ - tracks/ecmascript/exercises/complex-numbers/README.md
3400
+ - tracks/ecmascript/exercises/complex-numbers/complex-numbers.spec.js
3401
+ - tracks/ecmascript/exercises/complex-numbers/example.js
3402
+ - tracks/ecmascript/exercises/complex-numbers/package.json
3385
3403
  - tracks/ecmascript/exercises/connect/README.md
3386
3404
  - tracks/ecmascript/exercises/connect/connect.spec.js
3387
3405
  - tracks/ecmascript/exercises/connect/example.js
@@ -3617,10 +3635,6 @@ files:
3617
3635
  - tracks/ecmascript/exercises/sum-of-multiples/example.js
3618
3636
  - tracks/ecmascript/exercises/sum-of-multiples/package.json
3619
3637
  - tracks/ecmascript/exercises/sum-of-multiples/sum-of-multiples.spec.js
3620
- - tracks/ecmascript/exercises/transpose/README.md
3621
- - tracks/ecmascript/exercises/transpose/example.js
3622
- - tracks/ecmascript/exercises/transpose/package.json
3623
- - tracks/ecmascript/exercises/transpose/transpose.spec.js
3624
3638
  - tracks/ecmascript/exercises/triangle/README.md
3625
3639
  - tracks/ecmascript/exercises/triangle/example.js
3626
3640
  - tracks/ecmascript/exercises/triangle/package.json
@@ -3916,6 +3930,10 @@ files:
3916
3930
  - tracks/elixir/exercises/hexadecimal/example.exs
3917
3931
  - tracks/elixir/exercises/hexadecimal/hexadecimal.exs
3918
3932
  - tracks/elixir/exercises/hexadecimal/hexadecimal_test.exs
3933
+ - tracks/elixir/exercises/isbn-verifier/README.md
3934
+ - tracks/elixir/exercises/isbn-verifier/example.exs
3935
+ - tracks/elixir/exercises/isbn-verifier/isbn_verifier.exs
3936
+ - tracks/elixir/exercises/isbn-verifier/isbn_verifier_test.exs
3919
3937
  - tracks/elixir/exercises/isogram/README.md
3920
3938
  - tracks/elixir/exercises/isogram/example.exs
3921
3939
  - tracks/elixir/exercises/isogram/isogram.exs
@@ -4085,6 +4103,10 @@ files:
4085
4103
  - tracks/elixir/exercises/space-age/example.exs
4086
4104
  - tracks/elixir/exercises/space-age/space_age.exs
4087
4105
  - tracks/elixir/exercises/space-age/space_age_test.exs
4106
+ - tracks/elixir/exercises/spiral-matrix/README.md
4107
+ - tracks/elixir/exercises/spiral-matrix/example.exs
4108
+ - tracks/elixir/exercises/spiral-matrix/spiral.exs
4109
+ - tracks/elixir/exercises/spiral-matrix/spiral_test.exs
4088
4110
  - tracks/elixir/exercises/strain/HINTS.md
4089
4111
  - tracks/elixir/exercises/strain/README.md
4090
4112
  - tracks/elixir/exercises/strain/example.exs
@@ -4506,6 +4528,14 @@ files:
4506
4528
  - tracks/erlang/exercises/collatz-conjecture/src/collatz_conjecture.erl
4507
4529
  - tracks/erlang/exercises/collatz-conjecture/src/example.erl
4508
4530
  - tracks/erlang/exercises/collatz-conjecture/test/collatz_conjecture_tests.erl
4531
+ - tracks/erlang/exercises/complex-numbers/HINTS.md
4532
+ - tracks/erlang/exercises/complex-numbers/README.md
4533
+ - tracks/erlang/exercises/complex-numbers/include/exercism.hrl
4534
+ - tracks/erlang/exercises/complex-numbers/rebar.config
4535
+ - tracks/erlang/exercises/complex-numbers/src/complex_numbers.app.src
4536
+ - tracks/erlang/exercises/complex-numbers/src/complex_numbers.erl
4537
+ - tracks/erlang/exercises/complex-numbers/src/example.erl
4538
+ - tracks/erlang/exercises/complex-numbers/test/complex_numbers_tests.erl
4509
4539
  - tracks/erlang/exercises/difference-of-squares/README.md
4510
4540
  - tracks/erlang/exercises/difference-of-squares/include/exercism.hrl
4511
4541
  - tracks/erlang/exercises/difference-of-squares/rebar.config
@@ -4735,6 +4765,7 @@ files:
4735
4765
  - tracks/erlang/testgen/src/tgen.erl
4736
4766
  - tracks/erlang/testgen/src/tgen_bob.erl
4737
4767
  - tracks/erlang/testgen/src/tgen_collatz-conjecture.erl
4768
+ - tracks/erlang/testgen/src/tgen_complex-numbers.erl
4738
4769
  - tracks/erlang/testgen/src/tgen_hamming.erl
4739
4770
  - tracks/erlang/testgen/src/tgen_hello-world.erl
4740
4771
  - tracks/erlang/testgen/src/tgen_leap.erl
@@ -7500,6 +7531,9 @@ files:
7500
7531
  - tracks/javascript/exercises/hexadecimal/README.md
7501
7532
  - tracks/javascript/exercises/hexadecimal/example.js
7502
7533
  - tracks/javascript/exercises/hexadecimal/hexadecimal.spec.js
7534
+ - tracks/javascript/exercises/isbn-verifier/README.md
7535
+ - tracks/javascript/exercises/isbn-verifier/example.js
7536
+ - tracks/javascript/exercises/isbn-verifier/isbn-verifier.spec.js
7503
7537
  - tracks/javascript/exercises/isogram/README.md
7504
7538
  - tracks/javascript/exercises/isogram/example.js
7505
7539
  - tracks/javascript/exercises/isogram/isogram.spec.js
@@ -12765,7 +12799,7 @@ files:
12765
12799
  - tracks/sml/exercises/difference-of-squares/example.sml
12766
12800
  - tracks/sml/exercises/difference-of-squares/test.sml
12767
12801
  - tracks/sml/exercises/difference-of-squares/testlib.sml
12768
- - tracks/sml/exercises/flatten-array/HINTS.md
12802
+ - tracks/sml/exercises/flatten-array/.meta/hints.md
12769
12803
  - tracks/sml/exercises/flatten-array/README.md
12770
12804
  - tracks/sml/exercises/flatten-array/example.sml
12771
12805
  - tracks/sml/exercises/flatten-array/flatten-array.sml
@@ -12791,7 +12825,7 @@ files:
12791
12825
  - tracks/sml/exercises/list-ops/list-ops.sml
12792
12826
  - tracks/sml/exercises/list-ops/test.sml
12793
12827
  - tracks/sml/exercises/list-ops/testlib.sml
12794
- - tracks/sml/exercises/nth-prime/HINTS.md
12828
+ - tracks/sml/exercises/nth-prime/.meta/hints.md
12795
12829
  - tracks/sml/exercises/nth-prime/README.md
12796
12830
  - tracks/sml/exercises/nth-prime/example.sml
12797
12831
  - tracks/sml/exercises/nth-prime/nth-prime.sml
@@ -12812,6 +12846,11 @@ files:
12812
12846
  - tracks/sml/exercises/phone-number/phone-number.sml
12813
12847
  - tracks/sml/exercises/phone-number/test.sml
12814
12848
  - tracks/sml/exercises/phone-number/testlib.sml
12849
+ - tracks/sml/exercises/pig-latin/README.md
12850
+ - tracks/sml/exercises/pig-latin/example.sml
12851
+ - tracks/sml/exercises/pig-latin/pig-latin.sml
12852
+ - tracks/sml/exercises/pig-latin/test.sml
12853
+ - tracks/sml/exercises/pig-latin/testlib.sml
12815
12854
  - tracks/sml/exercises/prime-factors/README.md
12816
12855
  - tracks/sml/exercises/prime-factors/example.sml
12817
12856
  - tracks/sml/exercises/prime-factors/prime-factors.sml
@@ -13581,6 +13620,14 @@ files:
13581
13620
  - tracks/typescript/exercises/nth-prime/tsconfig.json
13582
13621
  - tracks/typescript/exercises/nth-prime/tslint.json
13583
13622
  - tracks/typescript/exercises/nth-prime/yarn.lock
13623
+ - tracks/typescript/exercises/ocr-numbers/README.md
13624
+ - tracks/typescript/exercises/ocr-numbers/ocr-numbers.example.ts
13625
+ - tracks/typescript/exercises/ocr-numbers/ocr-numbers.test.ts
13626
+ - tracks/typescript/exercises/ocr-numbers/ocr-numbers.ts
13627
+ - tracks/typescript/exercises/ocr-numbers/package.json
13628
+ - tracks/typescript/exercises/ocr-numbers/tsconfig.json
13629
+ - tracks/typescript/exercises/ocr-numbers/tslint.json
13630
+ - tracks/typescript/exercises/ocr-numbers/yarn.lock
13584
13631
  - tracks/typescript/exercises/pangram/README.md
13585
13632
  - tracks/typescript/exercises/pangram/package.json
13586
13633
  - tracks/typescript/exercises/pangram/pangram.example.ts
@@ -1,94 +0,0 @@
1
- # Transpose
2
-
3
- Given an input text output it transposed.
4
-
5
- Roughly explained, the transpose of a matrix:
6
-
7
- ```text
8
- ABC
9
- DEF
10
- ```
11
-
12
- is given by:
13
-
14
- ```text
15
- AD
16
- BE
17
- CF
18
- ```
19
-
20
- Rows become columns and columns become rows. See <https://en.wikipedia.org/wiki/Transpose>.
21
-
22
- If the input has rows of different lengths, this is to be solved as follows:
23
-
24
- - Pad to the left with spaces.
25
- - Don't pad to the right.
26
-
27
- Therefore, transposing this matrix:
28
-
29
- ```text
30
- ABC
31
- DE
32
- ```
33
-
34
- results in:
35
-
36
- ```text
37
- AD
38
- BE
39
- C
40
- ```
41
-
42
- And transposing:
43
-
44
- ```text
45
- AB
46
- DEF
47
- ```
48
-
49
- results in:
50
-
51
- ```text
52
- AD
53
- BE
54
- F
55
- ```
56
-
57
- In general, all characters from the input should also be present in the transposed output.
58
- That means that if a column in the input text contains only spaces on its bottom-most row(s),
59
- the corresponding output row should contain the spaces in its right-most column(s).
60
-
61
- ## Setup
62
-
63
- Go through the setup instructions for ECMAScript to
64
- install the necessary dependencies:
65
-
66
- http://exercism.io/languages/ecmascript/installation
67
-
68
- ## Requirements
69
-
70
- Install assignment dependencies:
71
-
72
- ```bash
73
- $ npm install
74
- ```
75
-
76
- ## Making the Test Suite Pass
77
-
78
- Execute the tests with:
79
-
80
- ```bash
81
- $ npm test
82
- ```
83
-
84
- In the test suite, all tests but the first have been skipped.
85
-
86
- Once you get a test passing, you can enable the next one by
87
- changing `xtest` to `test`.
88
-
89
- ## Source
90
-
91
- Reddit r/dailyprogrammer challenge #270 [Easy]. [https://www.reddit.com/r/dailyprogrammer/comments/4msu2x/challenge_270_easy_transpose_the_input_text](https://www.reddit.com/r/dailyprogrammer/comments/4msu2x/challenge_270_easy_transpose_the_input_text)
92
-
93
- ## Submitting Incomplete Solutions
94
- It's possible to submit an incomplete solution so you can see how others have completed the exercise.
@@ -1,12 +0,0 @@
1
- export default function transpose(text) {
2
- const result = [];
3
- text.forEach((line, lineNo) => {
4
- [...line].forEach((value, key) => {
5
- if (typeof result[key] === 'undefined') {
6
- result[key] = ' '.repeat(lineNo);
7
- }
8
- result[key] += value;
9
- });
10
- });
11
- return result;
12
- }
@@ -1,67 +0,0 @@
1
- import transpose from './transpose';
2
-
3
- describe('Transpose', () => {
4
- test('test empty string', () => {
5
- expect(transpose([])).toEqual([]);
6
- });
7
-
8
- xtest('test two characters in a row', () => {
9
- const input = ['A1'];
10
- const expected = ['A', '1'];
11
- expect(transpose(input)).toEqual(expected);
12
- });
13
-
14
- xtest('test two characters in a column', () => {
15
- const input = ['A', '1'];
16
- const expected = ['A1'];
17
- expect(transpose(input)).toEqual(expected);
18
- });
19
-
20
- xtest('test simple', () => {
21
- const input = ['ABC', '123'];
22
- const expected = ['A1', 'B2', 'C3'];
23
- expect(transpose(input)).toEqual(expected);
24
- });
25
-
26
- xtest('test single line', () => {
27
- const input = ['Single line.'];
28
- const expected = ['S', 'i', 'n', 'g', 'l', 'e', ' ', 'l', 'i', 'n', 'e', '.'];
29
- expect(transpose(input)).toEqual(expected);
30
- });
31
-
32
- xtest('test first line longer than second line', () => {
33
- const input = ['The fourth line.', 'The fifth line.'];
34
- const expected = ['TT', 'hh', 'ee', ' ', 'ff', 'oi', 'uf', 'rt', 'th', 'h ', ' l', 'li', 'in', 'ne', 'e.', '.'];
35
- expect(transpose(input)).toEqual(expected);
36
- });
37
-
38
- xtest('test second line longer than first line', () => {
39
- const input = ['The first line.', 'The second line.'];
40
- const expected = ['TT', 'hh', 'ee', ' ', 'fs', 'ie', 'rc', 'so', 'tn', ' d', 'l ', 'il', 'ni', 'en', '.e', ' .'];
41
- expect(transpose(input)).toEqual(expected);
42
- });
43
-
44
- xtest('test square', () => {
45
- const input = ['HEART', 'EMBER', 'ABUSE', 'RESIN', 'TREND'];
46
- const expected = ['HEART', 'EMBER', 'ABUSE', 'RESIN', 'TREND'];
47
- expect(transpose(input)).toEqual(expected);
48
- });
49
-
50
- xtest('test rectangle', () => {
51
- const input = ['FRACTURE', 'OUTLINED', 'BLOOMING', 'SEPTETTE'];
52
- const expected = ['FOBS', 'RULE', 'ATOP', 'CLOT', 'TIME', 'UNIT', 'RENT', 'EDGE'];
53
- expect(transpose(input)).toEqual(expected);
54
- });
55
-
56
- xtest('test triangle', () => {
57
- const input = ['T', 'EE', 'AAA', 'SSSS', 'EEEEE', 'RRRRRR'];
58
- const expected = ['TEASER', ' EASER', ' ASER', ' SER', ' ER', ' R'];
59
- expect(transpose(input)).toEqual(expected);
60
- });
61
-
62
- xtest('test many lines', () => {
63
- const input = ['Chor. Two households, both alike in dignity,', 'In fair Verona, where we lay our scene,', 'From ancient grudge break to new mutiny,', 'Where civil blood makes civil hands unclean.', 'From forth the fatal loins of these two foes', 'A pair of star-cross\'d lovers take their life;', 'Whose misadventur\'d piteous overthrows', 'Doth with their death bury their parents\' strife.', 'The fearful passage of their death-mark\'d love,', 'And the continuance of their parents\' rage,', 'Which, but their children\'s end, naught could remove,', 'Is now the two hours\' traffic of our stage;', 'The which if you with patient ears attend,', 'What here shall miss, our toil shall strive to mend.'];
64
- const expected = ['CIFWFAWDTAWITW', 'hnrhr hohnhshh', 'o oeopotedi ea', 'rfmrmash cn t', '.a e ie fthow ', ' ia fr weh,whh', 'Trnco miae ie', 'w ciroitr btcr', 'oVivtfshfcuhhe', ' eeih a uote ', 'hrnl sdtln is', 'oot ttvh tttfh', 'un bhaeepihw a', 'saglernianeoyl', 'e,ro -trsui ol', 'h uofcu sarhu ', 'owddarrdan o m', 'lhg to\'egccuwi', 'deemasdaeehris', 'sr als t ists', ',ebk \'phool\'h,', ' reldi ffd ', 'bweso tb rtpo', 'oea ileutterau', 't kcnoorhhnatr', 'hl isvuyee\'fi ', ' atv es iisfet', 'ayoior trr ino', 'l lfsoh ecti', 'ion vedpn l', 'kuehtteieadoe ', 'erwaharrar,fas', ' nekt te rh', 'ismdsehphnnosa', 'ncuse ra-tau l', ' et tormsural', 'dniuthwea\'g t ', 'iennwesnr hsts', 'g,ycoitkrttet', 'n,l rs\'a anr', 'ief \'dgcgdi', 'taol eoe,v', 'yneisl,u;e', ',.sftol ', ' ervdt', ' ;ie o', ' f,r ', ' eem', ' .me', ' on', ' vd', ' e.', ' ,'];
65
- expect(transpose(input)).toEqual(expected);
66
- });
67
- });