trackler 2.0.8.18 → 2.0.8.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (165) hide show
  1. checksums.yaml +4 -4
  2. data/common/.gitignore +1 -0
  3. data/common/.travis.yml +5 -8
  4. data/common/README.md +18 -5
  5. data/common/exercises/grep/canonical-data.json +290 -269
  6. data/common/exercises/phone-number/canonical-data.json +2 -2
  7. data/common/exercises/pov/canonical-data.json +2 -5
  8. data/common/exercises/roman-numerals/canonical-data.json +112 -74
  9. data/common/exercises/tournament/canonical-data.json +86 -85
  10. data/common/exercises/two-bucket/canonical-data.json +55 -47
  11. data/common/package.json +16 -0
  12. data/common/yarn.lock +195 -0
  13. data/lib/trackler/version.rb +1 -1
  14. data/tracks/c/docs/LEARNING.md +1 -1
  15. data/tracks/c/exercises/space-age/src/example.c +15 -47
  16. data/tracks/c/exercises/space-age/src/example.h +12 -8
  17. data/tracks/c/exercises/space-age/test/test_space_age.c +8 -8
  18. data/tracks/ceylon/docs/TESTS.md +5 -2
  19. data/tracks/ceylon/exercises/TRACK_HINTS.md +5 -2
  20. data/tracks/csharp/.gitignore +0 -4
  21. data/tracks/csharp/.travis.yml +9 -20
  22. data/tracks/csharp/appveyor.yml +2 -4
  23. data/tracks/csharp/build.cake +95 -0
  24. data/tracks/csharp/build.ps1 +189 -0
  25. data/tracks/csharp/build.sh +99 -31
  26. data/tracks/csharp/circle.yml +3 -12
  27. data/tracks/delphi/config.json +8 -0
  28. data/tracks/delphi/exercises/minesweeper/MineSweeper.dpr +60 -0
  29. data/tracks/delphi/exercises/minesweeper/uMineSweeperExample.pas +70 -0
  30. data/tracks/delphi/exercises/minesweeper/uMineSweeperTest.pas +270 -0
  31. data/tracks/dlang/config.json +86 -31
  32. data/tracks/elixir/config.json +7 -0
  33. data/tracks/elixir/exercises/rotational-cipher/example.exs +35 -0
  34. data/tracks/elixir/exercises/rotational-cipher/rotational_cipher.exs +13 -0
  35. data/tracks/elixir/exercises/rotational-cipher/rotational_cipher_test.exs +80 -0
  36. data/tracks/go/exercises/raindrops/raindrops_test.go +4 -1
  37. data/tracks/go/exercises/react/react_test.go +6 -8
  38. data/tracks/go/exercises/rna-transcription/rna_transcription_test.go +4 -1
  39. data/tracks/go/exercises/robot-simulator/robot_simulator_test.go +5 -2
  40. data/tracks/haskell/exercises/allergies/src/Allergies.hs +2 -2
  41. data/tracks/haskell/exercises/atbash-cipher/src/Atbash.hs +2 -2
  42. data/tracks/haskell/exercises/bank-account/src/BankAccount.hs +3 -3
  43. data/tracks/haskell/exercises/binary-search-tree/src/BST.hs +7 -7
  44. data/tracks/haskell/exercises/bowling/src/Bowling.hs +1 -1
  45. data/tracks/haskell/exercises/clock/src/Clock.hs +4 -4
  46. data/tracks/haskell/exercises/connect/src/Connect.hs +1 -1
  47. data/tracks/haskell/exercises/crypto-square/src/CryptoSquare.hs +1 -1
  48. data/tracks/haskell/exercises/custom-set/src/CustomSet.hs +12 -12
  49. data/tracks/haskell/exercises/difference-of-squares/src/Squares.hs +3 -3
  50. data/tracks/haskell/exercises/etl/src/ETL.hs +1 -1
  51. data/tracks/haskell/exercises/forth/src/Forth.hs +2 -2
  52. data/tracks/haskell/exercises/go-counting/src/Counting.hs +2 -2
  53. data/tracks/haskell/exercises/kindergarten-garden/src/Garden.hs +3 -3
  54. data/tracks/haskell/exercises/largest-series-product/src/Series.hs +1 -1
  55. data/tracks/haskell/exercises/lens-person/src/Person.hs +4 -4
  56. data/tracks/julia/.travis.yml +3 -2
  57. data/tracks/ocaml/exercises/all-your-base/test.ml +2 -2
  58. data/tracks/ocaml/exercises/beer-song/test.ml +25 -24
  59. data/tracks/ocaml/exercises/phone-number/test.ml +22 -22
  60. data/tracks/ocaml/exercises/run-length-encoding/test.ml +5 -5
  61. data/tracks/ocaml/exercises/word-count/test.ml +1 -1
  62. data/tracks/ocaml/tools/test-generator/templates/beer-song/template.ml +20 -1
  63. data/tracks/purescript/config.json +7 -0
  64. data/tracks/purescript/exercises/word-count/bower.json +17 -0
  65. data/tracks/purescript/exercises/word-count/examples/src/WordCount.purs +31 -0
  66. data/tracks/purescript/exercises/word-count/src/WordCount.purs +3 -0
  67. data/tracks/purescript/exercises/word-count/test/Main.purs +89 -0
  68. data/tracks/python/exercises/accumulate/accumulate.py +2 -0
  69. data/tracks/python/exercises/acronym/acronym.py +2 -0
  70. data/tracks/python/exercises/allergies/allergies.py +3 -0
  71. data/tracks/python/exercises/allergies/example.py +1 -1
  72. data/tracks/python/exercises/anagram/anagram.py +2 -0
  73. data/tracks/python/exercises/atbash-cipher/atbash_cipher.py +6 -0
  74. data/tracks/python/exercises/beer-song/beer_song.py +6 -0
  75. data/tracks/python/exercises/binary-search/binary_search.py +2 -0
  76. data/tracks/python/exercises/binary/binary.py +2 -0
  77. data/tracks/python/exercises/bob/bob.py +2 -8
  78. data/tracks/python/exercises/bracket-push/bracket_push.py +2 -0
  79. data/tracks/python/exercises/circular-buffer/circular_buffer.py +11 -0
  80. data/tracks/python/exercises/clock/clock.py +3 -0
  81. data/tracks/python/exercises/clock/example.py +1 -1
  82. data/tracks/python/exercises/crypto-square/crypto_square.py +2 -0
  83. data/tracks/python/exercises/diamond/diamond.py +2 -0
  84. data/tracks/python/exercises/difference-of-squares/difference_of_squares.py +10 -0
  85. data/tracks/python/exercises/etl/etl.py +2 -0
  86. data/tracks/python/exercises/flatten-array/flatten_array.py +2 -0
  87. data/tracks/python/exercises/gigasecond/gigasecond.py +2 -0
  88. data/tracks/python/exercises/grade-school/grade_school.py +3 -0
  89. data/tracks/python/exercises/grains/grains.py +6 -0
  90. data/tracks/python/exercises/hamming/hamming.py +2 -0
  91. data/tracks/python/exercises/hello-world/hello_world.py +2 -7
  92. data/tracks/python/exercises/hexadecimal/hexadecimal.py +2 -0
  93. data/tracks/python/exercises/house/house.py +6 -0
  94. data/tracks/python/exercises/kindergarten-garden/kindergarten_garden.py +3 -0
  95. data/tracks/python/exercises/largest-series-product/largest_series_product.py +2 -0
  96. data/tracks/python/exercises/leap/leap.py +2 -0
  97. data/tracks/python/exercises/linked-list/linked_list.py +2 -8
  98. data/tracks/python/exercises/list-ops/list_ops.py +18 -22
  99. data/tracks/python/exercises/luhn/luhn.py +3 -0
  100. data/tracks/python/exercises/matrix/matrix.py +3 -0
  101. data/tracks/python/exercises/meetup/meetup.py +2 -0
  102. data/tracks/python/exercises/minesweeper/minesweeper.py +2 -0
  103. data/tracks/python/exercises/nth-prime/nth_prime.py +2 -0
  104. data/tracks/python/exercises/nucleotide-count/nucleotide_count.py +6 -0
  105. data/tracks/python/exercises/ocr-numbers/ocr_numbers.py +6 -0
  106. data/tracks/python/exercises/ocr-numbers/{ocr_test.py → ocr_numbers_test.py} +0 -0
  107. data/tracks/python/exercises/octal/octal.py +2 -0
  108. data/tracks/python/exercises/palindrome-products/palindrome_products.py +6 -0
  109. data/tracks/python/exercises/pangram/pangram.py +2 -0
  110. data/tracks/python/exercises/pascals-triangle/pascals_triangle.py +10 -0
  111. data/tracks/python/exercises/perfect-numbers/perfect_numbers.py +6 -0
  112. data/tracks/python/exercises/phone-number/phone_number.py +3 -0
  113. data/tracks/python/exercises/pig-latin/pig_latin.py +2 -0
  114. data/tracks/python/exercises/point-mutations/point_mutations.py +2 -0
  115. data/tracks/python/exercises/poker/poker.py +2 -0
  116. data/tracks/python/exercises/prime-factors/prime_factors.py +2 -0
  117. data/tracks/python/exercises/proverb/proverb.py +2 -0
  118. data/tracks/python/exercises/pythagorean-triplet/pythagorean_triplet.py +10 -0
  119. data/tracks/python/exercises/queen-attack/queen_attack.py +6 -0
  120. data/tracks/python/exercises/rail-fence-cipher/rail_fence_cipher.py +10 -0
  121. data/tracks/python/exercises/raindrops/raindrops.py +2 -0
  122. data/tracks/python/exercises/rectangles/example.py +1 -1
  123. data/tracks/python/exercises/rectangles/rectangles.py +2 -0
  124. data/tracks/python/exercises/rectangles/{rectangles_count_test.py → rectangles_test.py} +0 -0
  125. data/tracks/python/exercises/rna-transcription/rna_transcription.py +2 -0
  126. data/tracks/python/exercises/robot-name/robot_name.py +3 -0
  127. data/tracks/python/exercises/robot-simulator/robot_simulator.py +3 -0
  128. data/tracks/python/exercises/roman-numerals/roman_numerals.py +2 -0
  129. data/tracks/python/exercises/run-length-encoding/run_length_encoding.py +6 -0
  130. data/tracks/python/exercises/run-length-encoding/{run_length_test.py → run_length_encoding_test.py} +1 -1
  131. data/tracks/python/exercises/saddle-points/saddle_points.py +2 -0
  132. data/tracks/python/exercises/say/example.py +1 -1
  133. data/tracks/python/exercises/say/say.py +2 -0
  134. data/tracks/python/exercises/say/say_test.py +3 -0
  135. data/tracks/python/exercises/scrabble-score/scrabble_score.py +2 -0
  136. data/tracks/python/exercises/secret-handshake/secret_handshake.py +6 -0
  137. data/tracks/python/exercises/secret-handshake/{handshake_test.py → secret_handshake_test.py} +0 -0
  138. data/tracks/python/exercises/series/series.py +2 -0
  139. data/tracks/python/exercises/sieve/sieve.py +2 -0
  140. data/tracks/python/exercises/simple-cipher/example.py +1 -1
  141. data/tracks/python/exercises/simple-cipher/simple_cipher.py +8 -0
  142. data/tracks/python/exercises/space-age/space_age.py +3 -0
  143. data/tracks/python/exercises/strain/strain.py +6 -0
  144. data/tracks/python/exercises/sublist/sublist.py +2 -0
  145. data/tracks/python/exercises/sum-of-multiples/sum_of_multiples.py +2 -0
  146. data/tracks/python/exercises/triangle/triangle.py +7 -0
  147. data/tracks/python/exercises/trinary/trinary.py +2 -0
  148. data/tracks/python/exercises/twelve-days/twelve_days.py +10 -0
  149. data/tracks/python/exercises/word-count/word_count.py +2 -0
  150. data/tracks/python/exercises/wordy/wordy.py +2 -0
  151. data/tracks/python/exercises/zebra-puzzle/zebra_puzzle.py +2 -0
  152. data/tracks/ruby/exercises/beer-song/.meta/.version +1 -0
  153. data/tracks/ruby/exercises/beer-song/beer_song_test.rb +62 -36
  154. data/tracks/ruby/exercises/beer-song/example.rb +1 -5
  155. data/tracks/ruby/exercises/beer-song/example.tt +22 -0
  156. data/tracks/ruby/lib/beer_song_cases.rb +43 -0
  157. data/tracks/swift/exercises/matrix/Tests/MatrixTests/MatrixTests.swift +1 -1
  158. metadata +94 -13
  159. data/common/bin/jsonlint +0 -27
  160. data/tracks/csharp/.paket/paket.bootstrapper.exe +0 -0
  161. data/tracks/csharp/Zipper.cs +0 -137
  162. data/tracks/csharp/build.cmd +0 -14
  163. data/tracks/csharp/build.fsx +0 -78
  164. data/tracks/csharp/paket.dependencies +0 -2
  165. data/tracks/csharp/paket.lock +0 -3
@@ -20,6 +20,13 @@
20
20
  "enumerables"
21
21
  ]
22
22
  },
23
+ {
24
+ "slug": "rotational-cipher",
25
+ "difficulty": 2,
26
+ "topics": [
27
+ "string processing"
28
+ ]
29
+ },
23
30
  {
24
31
  "slug": "space-age",
25
32
  "difficulty": 2,
@@ -0,0 +1,35 @@
1
+ defmodule RotationalCipher do
2
+ @alphabet "abcdefghijklmnopqrstuvwxyz"
3
+ @alphabet_size String.length(@alphabet)
4
+
5
+ for shift <- 0..25 do
6
+ plain = String.split(@alphabet, "", trim: true)
7
+ cipher = @alphabet
8
+ |> Kernel.<>(@alphabet)
9
+ |> String.split("", trim: true)
10
+ |> Enum.drop(shift)
11
+ |> Enum.take(@alphabet_size)
12
+ for {p, c} <- Enum.zip(plain, cipher) do
13
+ def translate(unquote(p), unquote(shift)), do: unquote(c)
14
+ def translate(unquote(p |> String.upcase), unquote(shift)), do: unquote(c |> String.upcase)
15
+ end
16
+ end
17
+
18
+ # Non a-zA-Z just returns the original character
19
+ def translate(plaintext, _), do: plaintext
20
+
21
+ @doc """
22
+ Given a plaintext and amount to shift by, return a rotated string.
23
+
24
+ Example:
25
+ iex> RotationalCipher.rotate("Attack at dawn", 13)
26
+ "Nggnpx ng qnja"
27
+ """
28
+ @spec rotate(text :: String.t(), shift :: integer) :: String.t()
29
+ def rotate(text, shift) do
30
+ text
31
+ |> String.split("", trim: true)
32
+ |> Enum.map_join(&(translate(&1, shift)))
33
+ end
34
+ end
35
+
@@ -0,0 +1,13 @@
1
+ defmodule RotationalCipher do
2
+ @doc """
3
+ Given a plaintext and amount to shift by, return a rotated string.
4
+
5
+ Example:
6
+ iex> RotationalCipher.rotate("Attack at dawn", 13)
7
+ "Nggnpx ng qnja"
8
+ """
9
+ @spec rotate(text :: String.t(), shift :: integer) :: String.t()
10
+ def rotate(text, shift) do
11
+ end
12
+ end
13
+
@@ -0,0 +1,80 @@
1
+ if !System.get_env("EXERCISM_TEST_EXAMPLES") do
2
+ Code.load_file("rotational_cipher.exs", __DIR__)
3
+ end
4
+
5
+ ExUnit.start
6
+ ExUnit.configure exclude: :pending, trace: true
7
+
8
+ defmodule RotationalCipherTest do
9
+ use ExUnit.Case
10
+
11
+ #@tag :pending
12
+ test "rotate a by 1" do
13
+ plaintext = "a"
14
+ shift = 1
15
+ assert RotationalCipher.rotate(plaintext, shift) == "b"
16
+ end
17
+
18
+ @tag :pending
19
+ test "rotate a by 26, same output as input" do
20
+ plaintext = "a"
21
+ shift = 26
22
+ assert RotationalCipher.rotate(plaintext, shift) == "a"
23
+ end
24
+
25
+ @tag :pending
26
+ test "rotate a by 0, same output as input" do
27
+ plaintext = "a"
28
+ shift = 0
29
+ assert RotationalCipher.rotate(plaintext, shift) == "a"
30
+ end
31
+
32
+ @tag :pending
33
+ test "rotate m by 13" do
34
+ plaintext = "m"
35
+ shift = 13
36
+ assert RotationalCipher.rotate(plaintext, shift) == "z"
37
+ end
38
+
39
+ @tag :pending
40
+ test "rotate n by 13 with wrap around alphabet" do
41
+ plaintext = "n"
42
+ shift = 13
43
+ assert RotationalCipher.rotate(plaintext, shift) == "a"
44
+ end
45
+
46
+ @tag :pending
47
+ test "rotate capital letters" do
48
+ plaintext = "OMG"
49
+ shift = 5
50
+ assert RotationalCipher.rotate(plaintext, shift) == "TRL"
51
+ end
52
+
53
+ @tag :pending
54
+ test "rotate spaces" do
55
+ plaintext = "O M G"
56
+ shift = 5
57
+ assert RotationalCipher.rotate(plaintext, shift) == "T R L"
58
+ end
59
+
60
+ @tag :pending
61
+ test "rotate numbers" do
62
+ plaintext = "Testing 1 2 3 testing"
63
+ shift = 4
64
+ assert RotationalCipher.rotate(plaintext, shift) == "Xiwxmrk 1 2 3 xiwxmrk"
65
+ end
66
+
67
+ @tag :pending
68
+ test "rotate punctuation" do
69
+ plaintext = "Let's eat, Grandma!"
70
+ shift = 21
71
+ assert RotationalCipher.rotate(plaintext, shift) == "Gzo'n zvo, Bmviyhv!"
72
+ end
73
+
74
+ @tag :pending
75
+ test "rotate all letters" do
76
+ plaintext = "The quick brown fox jumps over the lazy dog."
77
+ shift = 13
78
+ assert RotationalCipher.rotate(plaintext, shift) == "Gur dhvpx oebja sbk whzcf bire gur ynml qbt."
79
+ end
80
+ end
@@ -4,10 +4,13 @@ import "testing"
4
4
 
5
5
  const targetTestVersion = 2
6
6
 
7
- func TestConvert(t *testing.T) {
7
+ func TestTestVersion(t *testing.T) {
8
8
  if testVersion != targetTestVersion {
9
9
  t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
10
10
  }
11
+ }
12
+
13
+ func TestConvert(t *testing.T) {
11
14
  for _, test := range tests {
12
15
  if actual := Convert(test.input); actual != test.expected {
13
16
  t.Errorf("Convert(%d) = %q, expected %q.",
@@ -16,14 +16,6 @@ const targetTestVersion = 5
16
16
  // This is a compile time check to see if you've properly implemented New().
17
17
  var _ Reactor = New()
18
18
 
19
- // If this test fails and you've proprly defined testVersion the requirements
20
- // of the tests have changed since you wrote your submission.
21
- func TestTestVersion(t *testing.T) {
22
- if testVersion != targetTestVersion {
23
- t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
24
- }
25
- }
26
-
27
19
  func assertCellValue(t *testing.T, c Cell, expected int, explanation string) {
28
20
  observed := c.Value()
29
21
  _, _, line, _ := runtime.Caller(1)
@@ -32,6 +24,12 @@ func assertCellValue(t *testing.T, c Cell, expected int, explanation string) {
32
24
  }
33
25
  }
34
26
 
27
+ func TestTestVersion(t *testing.T) {
28
+ if testVersion != targetTestVersion {
29
+ t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
30
+ }
31
+ }
32
+
35
33
  // Setting the value of an input cell changes the observable Value()
36
34
  func TestSetInput(t *testing.T) {
37
35
  r := New()
@@ -4,10 +4,13 @@ import "testing"
4
4
 
5
5
  const targetTestVersion = 3
6
6
 
7
- func TestRNATranscription(t *testing.T) {
7
+ func TestTestVersion(t *testing.T) {
8
8
  if testVersion != targetTestVersion {
9
9
  t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
10
10
  }
11
+ }
12
+
13
+ func TestRNATranscription(t *testing.T) {
11
14
  for _, test := range rnaTests {
12
15
  if actual := ToRNA(test.input); actual != test.expected {
13
16
  t.Errorf("ToRNA(%s): %s, expected %s",
@@ -27,11 +27,14 @@ import (
27
27
 
28
28
  const targetTestVersion = 3
29
29
 
30
- func TestStep1(t *testing.T) {
31
-
30
+ func TestTestVersion(t *testing.T) {
32
31
  if testVersion != targetTestVersion {
33
32
  t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
34
33
  }
34
+ }
35
+
36
+ func TestStep1(t *testing.T) {
37
+
35
38
  want := func(x, y int, dir Dir) {
36
39
  _, _, line, _ := runtime.Caller(1)
37
40
  if Step1Robot.X != x || Step1Robot.Y != y {
@@ -11,7 +11,7 @@ data Allergen = Eggs
11
11
  deriving (Eq)
12
12
 
13
13
  allergies :: Int -> [Allergen]
14
- allergies = error "You need to implement this function."
14
+ allergies score = error "You need to implement this function."
15
15
 
16
16
  isAllergicTo :: Allergen -> Int -> Bool
17
- isAllergicTo = error "You need to implement this function."
17
+ isAllergicTo allergen score = error "You need to implement this function."
@@ -1,7 +1,7 @@
1
1
  module Atbash (decode, encode) where
2
2
 
3
3
  decode :: String -> String
4
- decode = error "You need to implement this function."
4
+ decode phrase = error "You need to implement this function."
5
5
 
6
6
  encode :: String -> String
7
- encode = error "You need to implement this function."
7
+ encode phrase = error "You need to implement this function."
@@ -9,13 +9,13 @@ module BankAccount
9
9
  data BankAccount = Dummy
10
10
 
11
11
  closeAccount :: BankAccount -> IO ()
12
- closeAccount = error "You need to implement this function."
12
+ closeAccount account = error "You need to implement this function."
13
13
 
14
14
  getBalance :: BankAccount -> IO (Maybe Integer)
15
- getBalance = error "You need to implement this function."
15
+ getBalance account = error "You need to implement this function."
16
16
 
17
17
  incrementBalance :: BankAccount -> Integer -> IO (Maybe Integer)
18
- incrementBalance = error "You need to implement this function."
18
+ incrementBalance account amount = error "You need to implement this function."
19
19
 
20
20
  openAccount :: IO BankAccount
21
21
  openAccount = error "You need to implement this function."
@@ -13,25 +13,25 @@ module BST
13
13
  data BST a = Dummy deriving (Eq, Show)
14
14
 
15
15
  bstLeft :: BST a -> Maybe (BST a)
16
- bstLeft = error "You need to implement this function."
16
+ bstLeft tree = error "You need to implement this function."
17
17
 
18
18
  bstRight :: BST a -> Maybe (BST a)
19
- bstRight = error "You need to implement this function."
19
+ bstRight tree = error "You need to implement this function."
20
20
 
21
21
  bstValue :: BST a -> Maybe a
22
- bstValue = error "You need to implement this function."
22
+ bstValue tree = error "You need to implement this function."
23
23
 
24
24
  empty :: BST a
25
25
  empty = error "You need to implement this function."
26
26
 
27
27
  fromList :: Ord a => [a] -> BST a
28
- fromList = error "You need to implement this function."
28
+ fromList xs = error "You need to implement this function."
29
29
 
30
30
  insert :: Ord a => a -> BST a -> BST a
31
- insert = error "You need to implement this function."
31
+ insert x tree = error "You need to implement this function."
32
32
 
33
33
  singleton :: a -> BST a
34
- singleton = error "You need to implement this function."
34
+ singleton x = error "You need to implement this function."
35
35
 
36
36
  toList :: BST a -> [a]
37
- toList = error "You need to implement this function."
37
+ toList tree = error "You need to implement this function."
@@ -5,5 +5,5 @@ data BowlingError = IncompleteGame
5
5
  deriving (Eq, Show)
6
6
 
7
7
  score :: [Int] -> Either BowlingError Int
8
- score = error "You need to implement this function."
8
+ score rolls = error "You need to implement this function."
9
9
 
@@ -3,13 +3,13 @@ module Clock (clockHour, clockMin, fromHourMin, toString) where
3
3
  data Clock = Dummy
4
4
 
5
5
  clockHour :: Clock -> Int
6
- clockHour = error "You need to implement this function."
6
+ clockHour clock = error "You need to implement this function."
7
7
 
8
8
  clockMin :: Clock -> Int
9
- clockMin = error "You need to implement this function."
9
+ clockMin clock = error "You need to implement this function."
10
10
 
11
11
  fromHourMin :: Int -> Int -> Clock
12
- fromHourMin = error "You need to implement this function."
12
+ fromHourMin hour min = error "You need to implement this function."
13
13
 
14
14
  toString :: Clock -> String
15
- toString = error "You need to implement this function."
15
+ toString clock = error "You need to implement this function."
@@ -3,4 +3,4 @@ module Connect (Mark(..), winner) where
3
3
  data Mark = Cross | Nought deriving (Eq, Show)
4
4
 
5
5
  winner :: [String] -> Maybe Mark
6
- winner = error "You need to implement this function."
6
+ winner board = error "You need to implement this function."
@@ -1,4 +1,4 @@
1
1
  module CryptoSquare (encode) where
2
2
 
3
3
  encode :: String -> String
4
- encode = error "You need to implement this function."
4
+ encode xs = error "You need to implement this function."
@@ -19,40 +19,40 @@ import Prelude hiding (null)
19
19
  data CustomSet a = Dummy deriving (Eq, Show)
20
20
 
21
21
  delete :: a -> CustomSet a -> CustomSet a
22
- delete = error "You need to implement this function."
22
+ delete x set = error "You need to implement this function."
23
23
 
24
24
  difference :: CustomSet a -> CustomSet a -> CustomSet a
25
- difference = error "You need to implement this function."
25
+ difference setA setB = error "You need to implement this function."
26
26
 
27
27
  empty :: CustomSet a
28
28
  empty = error "You need to implement this function."
29
29
 
30
30
  fromList :: [a] -> CustomSet a
31
- fromList = error "You need to implement this function."
31
+ fromList xs = error "You need to implement this function."
32
32
 
33
33
  insert :: a -> CustomSet a -> CustomSet a
34
- insert = error "You need to implement this function."
34
+ insert x set = error "You need to implement this function."
35
35
 
36
36
  intersection :: CustomSet a -> CustomSet a -> CustomSet a
37
- intersection = error "You need to implement this function."
37
+ intersection setA setB = error "You need to implement this function."
38
38
 
39
39
  isDisjointFrom :: CustomSet a -> CustomSet a -> Bool
40
- isDisjointFrom = error "You need to implement this function."
40
+ isDisjointFrom setA setB = error "You need to implement this function."
41
41
 
42
42
  isSubsetOf :: CustomSet a -> CustomSet a -> Bool
43
- isSubsetOf = error "You need to implement this function."
43
+ isSubsetOf setA setB = error "You need to implement this function."
44
44
 
45
45
  member :: a -> CustomSet a -> Bool
46
- member = error "You need to implement this function."
46
+ member x set = error "You need to implement this function."
47
47
 
48
48
  null :: CustomSet a -> Bool
49
- null = error "You need to implement this function."
49
+ null set = error "You need to implement this function."
50
50
 
51
51
  size :: CustomSet a -> Int
52
- size = error "You need to implement this function."
52
+ size set = error "You need to implement this function."
53
53
 
54
54
  toList :: CustomSet a -> [a]
55
- toList = error "You need to implement this function."
55
+ toList set = error "You need to implement this function."
56
56
 
57
57
  union :: CustomSet a -> CustomSet a -> CustomSet a
58
- union = error "You need to implement this function."
58
+ union setA setB = error "You need to implement this function."
@@ -1,10 +1,10 @@
1
1
  module Squares (difference, squareOfSums, sumOfSquares) where
2
2
 
3
3
  difference :: Integral a => a -> a
4
- difference = error "You need to implement this function."
4
+ difference n = error "You need to implement this function."
5
5
 
6
6
  squareOfSums :: Integral a => a -> a
7
- squareOfSums = error "You need to implement this function."
7
+ squareOfSums n = error "You need to implement this function."
8
8
 
9
9
  sumOfSquares :: Integral a => a -> a
10
- sumOfSquares = error "You need to implement this function."
10
+ sumOfSquares n = error "You need to implement this function."
@@ -3,4 +3,4 @@ module ETL (transform) where
3
3
  import Data.Map (Map)
4
4
 
5
5
  transform :: Map a String -> Map Char a
6
- transform = error "You need to implement this function."
6
+ transform legacyData = error "You need to implement this function."
@@ -23,7 +23,7 @@ empty :: ForthState
23
23
  empty = error "You need to implement this function."
24
24
 
25
25
  evalText :: Text -> ForthState -> Either ForthError ForthState
26
- evalText = error "You need to implement this function."
26
+ evalText text stack = error "You need to implement this function."
27
27
 
28
28
  toList :: ForthState -> [Int]
29
- toList = error "You need to implement this function."
29
+ toList stack = error "You need to implement this function."
@@ -10,7 +10,7 @@ data Color = Black | White deriving (Eq, Ord, Show)
10
10
  type Coord = (Int, Int)
11
11
 
12
12
  territories :: [String] -> [(Set Coord, Maybe Color)]
13
- territories = error "You need to implement this function."
13
+ territories board = error "You need to implement this function."
14
14
 
15
15
  territoryFor :: [String] -> Coord -> Maybe (Set Coord, Maybe Color)
16
- territoryFor = error "You need to implement this function."
16
+ territoryFor board coord = error "You need to implement this function."
@@ -14,10 +14,10 @@ data Plant = Clover
14
14
  deriving (Eq, Show)
15
15
 
16
16
  defaultGarden :: String -> Map String [Plant]
17
- defaultGarden = error "You need to implement this function."
17
+ defaultGarden plants = error "You need to implement this function."
18
18
 
19
19
  garden :: [String] -> String -> Map String [Plant]
20
- garden = error "You need to implement this function."
20
+ garden students plants = error "You need to implement this function."
21
21
 
22
22
  lookupPlants :: String -> Map String [Plant] -> [Plant]
23
- lookupPlants = error "You need to implement this function."
23
+ lookupPlants student garden = error "You need to implement this function."