trackler 2.2.1.98 → 2.2.1.99
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/complex-numbers/canonical-data.json +47 -47
- data/problem-specifications/exercises/custom-set/canonical-data.json +13 -7
- data/tracks/delphi/exercises/phone-number/uPhoneNumberTests.pas +1 -1
- data/tracks/elixir/exercises/protein-translation/protein_translation_test.exs +5 -0
- data/tracks/fsharp/config.json +10 -0
- data/tracks/fsharp/exercises/Exercises.sln +6 -0
- data/tracks/fsharp/exercises/accumulate/AccumulateTest.fs +2 -0
- data/tracks/fsharp/exercises/bank-account/BankAccountTest.fs +2 -0
- data/tracks/fsharp/exercises/binary-search-tree/BinarySearchTreeTest.fs +2 -0
- data/tracks/fsharp/exercises/binary/BinaryTest.fs +2 -0
- data/tracks/fsharp/exercises/circular-buffer/CircularBufferTest.fs +121 -117
- data/tracks/fsharp/exercises/complex-numbers/ComplexNumbers.fs +21 -0
- data/tracks/fsharp/exercises/complex-numbers/ComplexNumbers.fsproj +23 -0
- data/tracks/fsharp/exercises/complex-numbers/ComplexNumbersTest.fs +168 -0
- data/tracks/fsharp/exercises/complex-numbers/Example.fs +27 -0
- data/tracks/fsharp/exercises/complex-numbers/Program.fs +1 -0
- data/tracks/fsharp/exercises/complex-numbers/README.md +35 -0
- data/tracks/fsharp/exercises/diamond/DiamondTest.fs +2 -0
- data/tracks/fsharp/exercises/diffie-hellman/DiffieHellmanTest.fs +2 -0
- data/tracks/fsharp/exercises/dot-dsl/DotDslTest.fs +2 -0
- data/tracks/fsharp/exercises/error-handling/ErrorHandlingTest.fs +2 -0
- data/tracks/fsharp/exercises/go-counting/GoCountingTest.fs +2 -0
- data/tracks/fsharp/exercises/grade-school/GradeSchoolTest.fs +2 -0
- data/tracks/fsharp/exercises/hangman/HangmanTest.fs +2 -0
- data/tracks/fsharp/exercises/hexadecimal/HexadecimalTest.fs +2 -0
- data/tracks/fsharp/exercises/ledger/LedgerTest.fs +2 -0
- data/tracks/fsharp/exercises/lens-person/LensPersonTest.fs +2 -0
- data/tracks/fsharp/exercises/linked-list/LinkedListTest.fs +2 -0
- data/tracks/fsharp/exercises/matrix/MatrixTest.fs +2 -0
- data/tracks/fsharp/exercises/octal/OctalTest.fs +2 -0
- data/tracks/fsharp/exercises/parallel-letter-frequency/ParallelLetterFrequencyTest.fs +2 -0
- data/tracks/fsharp/exercises/pov/PovTest.fs +2 -0
- data/tracks/fsharp/exercises/protein-translation/ProteinTranslationTest.fs +2 -0
- data/tracks/fsharp/exercises/pythagorean-triplet/PythagoreanTripletTest.fs +2 -0
- data/tracks/fsharp/exercises/robot-name/RobotNameTest.fs +2 -0
- data/tracks/fsharp/exercises/saddle-points/SaddlePointsTest.fs +2 -0
- data/tracks/fsharp/exercises/say/SayTest.fs +2 -0
- data/tracks/fsharp/exercises/scale-generator/ScaleGeneratorTest.fs +2 -0
- data/tracks/fsharp/exercises/secret-handshake/SecretHandshakeTest.fs +2 -0
- data/tracks/fsharp/exercises/series/SeriesTest.fs +2 -0
- data/tracks/fsharp/exercises/sgf-parsing/SgfParsingTest.fs +2 -0
- data/tracks/fsharp/exercises/sieve/SieveTest.fs +2 -0
- data/tracks/fsharp/exercises/simple-cipher/SimpleCipherTest.fs +2 -0
- data/tracks/fsharp/exercises/simple-linked-list/SimpleLinkedListTest.fs +2 -0
- data/tracks/fsharp/exercises/space-age/SpaceAgeTest.fs +2 -0
- data/tracks/fsharp/exercises/strain/StrainTest.fs +2 -0
- data/tracks/fsharp/exercises/sublist/SublistTest.fs +2 -0
- data/tracks/fsharp/exercises/sum-of-multiples/SumOfMultiplesTest.fs +2 -0
- data/tracks/fsharp/exercises/tournament/TournamentTest.fs +2 -0
- data/tracks/fsharp/exercises/transpose/TransposeTest.fs +2 -0
- data/tracks/fsharp/exercises/transpose/TrinaryTest.fs +3 -1
- data/tracks/fsharp/exercises/tree-building/TreeBuildingTest.fs +2 -0
- data/tracks/fsharp/exercises/triangle/TriangleTest.fs +2 -0
- data/tracks/fsharp/exercises/trinary/TrinaryTest.fs +2 -0
- data/tracks/fsharp/exercises/two-bucket/TwoBucketTest.fs +2 -0
- data/tracks/fsharp/exercises/variable-length-quantity/VariableLengthQuantityTest.fs +2 -0
- data/tracks/fsharp/exercises/word-count/WordCountTest.fs +2 -0
- data/tracks/fsharp/exercises/word-search/WordSearchTest.fs +2 -0
- data/tracks/fsharp/exercises/wordy/WordyTest.fs +2 -0
- data/tracks/fsharp/exercises/zebra-puzzle/ZebraPuzzleTest.fs +2 -0
- data/tracks/fsharp/exercises/zipper/ZipperTest.fs +2 -0
- data/tracks/fsharp/generators/CanonicalData.fs +1 -1
- data/tracks/fsharp/generators/Generators.fs +89 -0
- data/tracks/go/config.json +16 -0
- data/tracks/go/exercises/rail-fence-cipher/.meta/gen.go +82 -0
- data/tracks/go/exercises/rail-fence-cipher/README.md +83 -0
- data/tracks/go/exercises/rail-fence-cipher/cases_test.go +50 -0
- data/tracks/go/exercises/rail-fence-cipher/example.go +58 -0
- data/tracks/go/exercises/rail-fence-cipher/rail_fence_cipher_test.go +15 -0
- data/tracks/go/exercises/say/.meta/gen.go +5 -3
- data/tracks/go/exercises/say/cases_test.go +2 -2
- data/tracks/go/exercises/scrabble-score/.meta/gen.go +5 -3
- data/tracks/go/exercises/scrabble-score/cases_test.go +2 -2
- data/tracks/go/exercises/secret-handshake/.meta/gen.go +5 -3
- data/tracks/go/exercises/secret-handshake/cases_test.go +2 -2
- data/tracks/go/exercises/transpose/.meta/gen.go +5 -3
- data/tracks/go/exercises/transpose/cases_test.go +30 -76
- data/tracks/go/exercises/word-count/.meta/gen.go +5 -3
- data/tracks/go/exercises/word-count/cases_test.go +2 -2
- data/tracks/go/exercises/wordy/.meta/gen.go +5 -3
- data/tracks/go/exercises/wordy/cases_test.go +2 -2
- data/tracks/java/exercises/largest-series-product/.meta/src/reference/java/LargestSeriesProductCalculator.java +1 -3
- data/tracks/java/exercises/largest-series-product/.meta/version +1 -0
- data/tracks/java/exercises/largest-series-product/src/test/java/LargestSeriesProductCalculatorTest.java +9 -44
- data/tracks/ocaml/exercises/grade-school/.meta/description.md +21 -0
- data/tracks/ocaml/exercises/palindrome-products/.meta/description.md +35 -0
- data/tracks/ocaml/exercises/palindrome-products/README.md +13 -9
- metadata +16 -2
@@ -0,0 +1,21 @@
|
|
1
|
+
module ComplexNumbers
|
2
|
+
|
3
|
+
let create real imaginary = failwith "You need to implement this function."
|
4
|
+
|
5
|
+
let mul z1 z2 = failwith "You need to implement this function."
|
6
|
+
|
7
|
+
let add z1 z2 = failwith "You need to implement this function."
|
8
|
+
|
9
|
+
let sub z1 z2 = failwith "You need to implement this function."
|
10
|
+
|
11
|
+
let div z1 z2 = failwith "You need to implement this function."
|
12
|
+
|
13
|
+
let abs z = failwith "You need to implement this function."
|
14
|
+
|
15
|
+
let conjugate z = failwith "You need to implement this function."
|
16
|
+
|
17
|
+
let real z = failwith "You need to implement this function."
|
18
|
+
|
19
|
+
let imaginary z = failwith "You need to implement this function."
|
20
|
+
|
21
|
+
let exp z = failwith "You need to implement this function."
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
2
|
+
|
3
|
+
<PropertyGroup>
|
4
|
+
<TargetFramework>netcoreapp2.0</TargetFramework>
|
5
|
+
|
6
|
+
<IsPackable>false</IsPackable>
|
7
|
+
</PropertyGroup>
|
8
|
+
|
9
|
+
<ItemGroup>
|
10
|
+
<Compile Include="ComplexNumbers.fs" />
|
11
|
+
<Compile Include="ComplexNumbersTest.fs" />
|
12
|
+
<Compile Include="Program.fs" />
|
13
|
+
</ItemGroup>
|
14
|
+
|
15
|
+
<ItemGroup>
|
16
|
+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.5.0" />
|
17
|
+
<PackageReference Include="xunit" Version="2.3.1" />
|
18
|
+
<PackageReference Include="xunit.runner.visualstudio" Version="2.3.1" />
|
19
|
+
<PackageReference Include="FsUnit.xUnit" Version="3.0.0" />
|
20
|
+
<DotNetCliToolReference Include="dotnet-xunit" Version="2.3.1" />
|
21
|
+
</ItemGroup>
|
22
|
+
|
23
|
+
</Project>
|
@@ -0,0 +1,168 @@
|
|
1
|
+
// This file was auto-generated based on version 1.0.0 of the canonical data.
|
2
|
+
|
3
|
+
module ComplexNumbersTest
|
4
|
+
|
5
|
+
open FsUnit.Xunit
|
6
|
+
open Xunit
|
7
|
+
open System
|
8
|
+
|
9
|
+
open ComplexNumbers
|
10
|
+
|
11
|
+
[<Fact>]
|
12
|
+
let ``Imaginary unit`` () =
|
13
|
+
let sut = mul (create 0.0 1.0) (create 0.0 1.0)
|
14
|
+
real sut |> should (equalWithin 0.000000001) -1.0
|
15
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
16
|
+
|
17
|
+
[<Fact(Skip = "Remove to run test")>]
|
18
|
+
let ``Add purely real numbers`` () =
|
19
|
+
let sut = add (create 1.0 0.0) (create 2.0 0.0)
|
20
|
+
real sut |> should (equalWithin 0.000000001) 3.0
|
21
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
22
|
+
|
23
|
+
[<Fact(Skip = "Remove to run test")>]
|
24
|
+
let ``Add purely imaginary numbers`` () =
|
25
|
+
let sut = add (create 0.0 1.0) (create 0.0 2.0)
|
26
|
+
real sut |> should (equalWithin 0.000000001) 0.0
|
27
|
+
imaginary sut |> should (equalWithin 0.000000001) 3.0
|
28
|
+
|
29
|
+
[<Fact(Skip = "Remove to run test")>]
|
30
|
+
let ``Add numbers with real and imaginary part`` () =
|
31
|
+
let sut = add (create 1.0 2.0) (create 3.0 4.0)
|
32
|
+
real sut |> should (equalWithin 0.000000001) 4.0
|
33
|
+
imaginary sut |> should (equalWithin 0.000000001) 6.0
|
34
|
+
|
35
|
+
[<Fact(Skip = "Remove to run test")>]
|
36
|
+
let ``Subtract purely real numbers`` () =
|
37
|
+
let sut = sub (create 1.0 0.0) (create 2.0 0.0)
|
38
|
+
real sut |> should (equalWithin 0.000000001) -1.0
|
39
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
40
|
+
|
41
|
+
[<Fact(Skip = "Remove to run test")>]
|
42
|
+
let ``Subtract purely imaginary numbers`` () =
|
43
|
+
let sut = sub (create 0.0 1.0) (create 0.0 2.0)
|
44
|
+
real sut |> should (equalWithin 0.000000001) 0.0
|
45
|
+
imaginary sut |> should (equalWithin 0.000000001) -1.0
|
46
|
+
|
47
|
+
[<Fact(Skip = "Remove to run test")>]
|
48
|
+
let ``Subtract numbers with real and imaginary part`` () =
|
49
|
+
let sut = sub (create 1.0 2.0) (create 3.0 4.0)
|
50
|
+
real sut |> should (equalWithin 0.000000001) -2.0
|
51
|
+
imaginary sut |> should (equalWithin 0.000000001) -2.0
|
52
|
+
|
53
|
+
[<Fact(Skip = "Remove to run test")>]
|
54
|
+
let ``Multiply purely real numbers`` () =
|
55
|
+
let sut = mul (create 1.0 0.0) (create 2.0 0.0)
|
56
|
+
real sut |> should (equalWithin 0.000000001) 2.0
|
57
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
58
|
+
|
59
|
+
[<Fact(Skip = "Remove to run test")>]
|
60
|
+
let ``Multiply purely imaginary numbers`` () =
|
61
|
+
let sut = mul (create 0.0 1.0) (create 0.0 2.0)
|
62
|
+
real sut |> should (equalWithin 0.000000001) -2.0
|
63
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
64
|
+
|
65
|
+
[<Fact(Skip = "Remove to run test")>]
|
66
|
+
let ``Multiply numbers with real and imaginary part`` () =
|
67
|
+
let sut = mul (create 1.0 2.0) (create 3.0 4.0)
|
68
|
+
real sut |> should (equalWithin 0.000000001) -5.0
|
69
|
+
imaginary sut |> should (equalWithin 0.000000001) 10.0
|
70
|
+
|
71
|
+
[<Fact(Skip = "Remove to run test")>]
|
72
|
+
let ``Divide purely real numbers`` () =
|
73
|
+
let sut = div (create 1.0 0.0) (create 2.0 0.0)
|
74
|
+
real sut |> should (equalWithin 0.000000001) 0.5
|
75
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
76
|
+
|
77
|
+
[<Fact(Skip = "Remove to run test")>]
|
78
|
+
let ``Divide purely imaginary numbers`` () =
|
79
|
+
let sut = div (create 0.0 1.0) (create 0.0 2.0)
|
80
|
+
real sut |> should (equalWithin 0.000000001) 0.5
|
81
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
82
|
+
|
83
|
+
[<Fact(Skip = "Remove to run test")>]
|
84
|
+
let ``Divide numbers with real and imaginary part`` () =
|
85
|
+
let sut = div (create 1.0 2.0) (create 3.0 4.0)
|
86
|
+
real sut |> should (equalWithin 0.000000001) 0.44
|
87
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.08
|
88
|
+
|
89
|
+
[<Fact(Skip = "Remove to run test")>]
|
90
|
+
let ``Absolute value of a positive purely real number`` () =
|
91
|
+
abs (create 5.0 0.0) |> should equal 5.0
|
92
|
+
|
93
|
+
[<Fact(Skip = "Remove to run test")>]
|
94
|
+
let ``Absolute value of a negative purely real number`` () =
|
95
|
+
abs (create -5.0 0.0) |> should equal 5.0
|
96
|
+
|
97
|
+
[<Fact(Skip = "Remove to run test")>]
|
98
|
+
let ``Absolute value of a purely imaginary number with positive imaginary part`` () =
|
99
|
+
abs (create 0.0 5.0) |> should equal 5.0
|
100
|
+
|
101
|
+
[<Fact(Skip = "Remove to run test")>]
|
102
|
+
let ``Absolute value of a purely imaginary number with negative imaginary part`` () =
|
103
|
+
abs (create 0.0 -5.0) |> should equal 5.0
|
104
|
+
|
105
|
+
[<Fact(Skip = "Remove to run test")>]
|
106
|
+
let ``Absolute value of a number with real and imaginary part`` () =
|
107
|
+
abs (create 3.0 4.0) |> should equal 5.0
|
108
|
+
|
109
|
+
[<Fact(Skip = "Remove to run test")>]
|
110
|
+
let ``Conjugate a purely real number`` () =
|
111
|
+
let sut = conjugate (create 5.0 0.0)
|
112
|
+
real sut |> should (equalWithin 0.000000001) 5.0
|
113
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
114
|
+
|
115
|
+
[<Fact(Skip = "Remove to run test")>]
|
116
|
+
let ``Conjugate a purely imaginary number`` () =
|
117
|
+
let sut = conjugate (create 0.0 5.0)
|
118
|
+
real sut |> should (equalWithin 0.000000001) 0.0
|
119
|
+
imaginary sut |> should (equalWithin 0.000000001) -5.0
|
120
|
+
|
121
|
+
[<Fact(Skip = "Remove to run test")>]
|
122
|
+
let ``Conjugate a number with real and imaginary part`` () =
|
123
|
+
let sut = conjugate (create 1.0 1.0)
|
124
|
+
real sut |> should (equalWithin 0.000000001) 1.0
|
125
|
+
imaginary sut |> should (equalWithin 0.000000001) -1.0
|
126
|
+
|
127
|
+
[<Fact(Skip = "Remove to run test")>]
|
128
|
+
let ``Real part of a purely real number`` () =
|
129
|
+
real (create 1.0 0.0) |> should equal 1.0
|
130
|
+
|
131
|
+
[<Fact(Skip = "Remove to run test")>]
|
132
|
+
let ``Real part of a purely imaginary number`` () =
|
133
|
+
real (create 0.0 1.0) |> should equal 0.0
|
134
|
+
|
135
|
+
[<Fact(Skip = "Remove to run test")>]
|
136
|
+
let ``Real part of a number with real and imaginary part`` () =
|
137
|
+
real (create 1.0 2.0) |> should equal 1.0
|
138
|
+
|
139
|
+
[<Fact(Skip = "Remove to run test")>]
|
140
|
+
let ``Imaginary part of a purely real number`` () =
|
141
|
+
imaginary (create 1.0 0.0) |> should equal 0.0
|
142
|
+
|
143
|
+
[<Fact(Skip = "Remove to run test")>]
|
144
|
+
let ``Imaginary part of a purely imaginary number`` () =
|
145
|
+
imaginary (create 0.0 1.0) |> should equal 1.0
|
146
|
+
|
147
|
+
[<Fact(Skip = "Remove to run test")>]
|
148
|
+
let ``Imaginary part of a number with real and imaginary part`` () =
|
149
|
+
imaginary (create 1.0 2.0) |> should equal 2.0
|
150
|
+
|
151
|
+
[<Fact(Skip = "Remove to run test")>]
|
152
|
+
let ``Euler's identity/formula`` () =
|
153
|
+
let sut = exp (create 0.0 Math.PI)
|
154
|
+
real sut |> should (equalWithin 0.000000001) -1.0
|
155
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
156
|
+
|
157
|
+
[<Fact(Skip = "Remove to run test")>]
|
158
|
+
let ``Exponential of 0`` () =
|
159
|
+
let sut = exp (create 0.0 0.0)
|
160
|
+
real sut |> should (equalWithin 0.000000001) 1.0
|
161
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
162
|
+
|
163
|
+
[<Fact(Skip = "Remove to run test")>]
|
164
|
+
let ``Exponential of a purely real number`` () =
|
165
|
+
let sut = exp (create 1.0 0.0)
|
166
|
+
real sut |> should (equalWithin 0.000000001) Math.E
|
167
|
+
imaginary sut |> should (equalWithin 0.000000001) 0.0
|
168
|
+
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module ComplexNumbers
|
2
|
+
|
3
|
+
open System
|
4
|
+
|
5
|
+
type ComplexNumber = { real: float; imaginary: float }
|
6
|
+
|
7
|
+
let create real imaginary = { real = real; imaginary = imaginary }
|
8
|
+
|
9
|
+
let mul z1 z2 = { real = z1.real * z2.real - z1.imaginary * z2.imaginary; imaginary = z1.imaginary * z2.real + z1.real * z2.imaginary }
|
10
|
+
|
11
|
+
let add z1 z2 = { real = z1.real + z2.real; imaginary = z1.imaginary + z2.imaginary }
|
12
|
+
|
13
|
+
let sub z1 z2 = { real = z1.real - z2.real; imaginary = z1.imaginary - z2.imaginary }
|
14
|
+
|
15
|
+
let div z1 z2 =
|
16
|
+
{ real = (z1.real * z2.real + z1.imaginary * z2.imaginary) / (Math.Pow(z2.real, 2.0) + Math.Pow(z2.imaginary, 2.0))
|
17
|
+
imaginary = (z1.imaginary * z2.real - z1.real * z2.imaginary) / (Math.Pow(z2.real, 2.0) + Math.Pow(z2.imaginary, 2.0)) }
|
18
|
+
|
19
|
+
let abs z = Math.Sqrt(Math.Pow(z.real, 2.0) + Math.Pow(z.imaginary, 2.0))
|
20
|
+
|
21
|
+
let conjugate z = { z with imaginary = -z.imaginary }
|
22
|
+
|
23
|
+
let real z = z.real
|
24
|
+
|
25
|
+
let imaginary z = z.imaginary
|
26
|
+
|
27
|
+
let exp z = { real = Math.Cos(z.imaginary) * Math.Exp(z.real); imaginary = Math.Sin(z.imaginary) * Math.Exp(z.real) }
|
@@ -0,0 +1 @@
|
|
1
|
+
module Program = let [<EntryPoint>] main _ = 0
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# Complex numbers
|
2
|
+
|
3
|
+
A complex number is a number in the form `a + b * i` where `a` and `b` are real and `i` satisfies `i^2 = -1`.
|
4
|
+
|
5
|
+
`a` is called the real part and `b` is called the imaginary part of `z`.
|
6
|
+
The conjugate of the number `a + b * i` is the number `a - b * i`.
|
7
|
+
The absolute value of a complex number `z = a + b * i` is a real number `|z| = sqrt(a^2 + b^2)`. The square of the absolute value `|z|^2` is the result of multiplication of `z` by its complex conjugate.
|
8
|
+
|
9
|
+
The sum/difference of two complex numbers involves adding/subtracting their real and imaginary parts separately:
|
10
|
+
`(a + i * b) + (c + i * d) = (a + c) + (b + d) * i`,
|
11
|
+
`(a + i * b) - (c + i * d) = (a - c) + (b - d) * i`.
|
12
|
+
|
13
|
+
Multiplication result is by definition
|
14
|
+
`(a + i * b) * (c + i * d) = (a * c - b * d) + (b * c + a * d) * i`.
|
15
|
+
|
16
|
+
The reciprocal of a non-zero complex number is
|
17
|
+
`1 / (a + i * b) = a/(a^2 + b^2) - b/(a^2 + b^2) * i`.
|
18
|
+
|
19
|
+
Dividing a complex number `a + i * b` by another `c + i * d` gives:
|
20
|
+
`(a + i * b) / (c + i * d) = (a * c + b * d)/(c^2 + d^2) + (b * c - a * d)/(c^2 + d^2) * i`.
|
21
|
+
|
22
|
+
Exponent of a complex number can be expressed as
|
23
|
+
`exp(a + i * b) = exp(a) * exp(i * b)`,
|
24
|
+
and the last term is given by Euler's formula `exp(i * b) = cos(b) + i * sin(b)`.
|
25
|
+
|
26
|
+
|
27
|
+
Implement the following operations:
|
28
|
+
- addition, subtraction, multiplication and division of two complex numbers,
|
29
|
+
- conjugate, absolute value, exponent of a given complex number.
|
30
|
+
|
31
|
+
|
32
|
+
Assume the programming language you are using does not have an implementation of complex numbers.
|
33
|
+
|
34
|
+
## Submitting Incomplete Solutions
|
35
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|