trackler 2.0.6.29 → 2.0.6.30

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/c/README.md +2 -2
  4. data/tracks/c/config.json +7 -0
  5. data/tracks/c/exercises/binary/makefile +16 -0
  6. data/tracks/c/exercises/binary/src/example.c +17 -0
  7. data/tracks/c/exercises/binary/src/example.h +7 -0
  8. data/tracks/c/exercises/binary/test/test_binary.c +99 -0
  9. data/tracks/c/exercises/binary/test/vendor/unity.c +1300 -0
  10. data/tracks/c/exercises/binary/test/vendor/unity.h +274 -0
  11. data/tracks/c/exercises/binary/test/vendor/unity_internals.h +701 -0
  12. data/tracks/csharp/exercises/scrabble-score/ScrabbleScoreTest.cs +7 -0
  13. data/tracks/delphi/config.json +8 -0
  14. data/tracks/delphi/docs/RESOURCES.md +20 -0
  15. data/tracks/delphi/exercises/beer-song/uBeerSongTests.pas +48 -15
  16. data/tracks/delphi/exercises/hello-world/uHelloWorldExample.pas +2 -12
  17. data/tracks/delphi/exercises/hello-world/uTestHelloWorld.pas +3 -3
  18. data/tracks/delphi/exercises/rna-transcription/TestRnaTranscription.dpr +60 -0
  19. data/tracks/delphi/exercises/rna-transcription/uRnaTranscriptionExample.pas +55 -0
  20. data/tracks/delphi/exercises/rna-transcription/uTestRnaTranscription.pas +88 -0
  21. data/tracks/go/config.json +4 -2
  22. data/tracks/julia/exercises/anagram/example.jl +29 -30
  23. data/tracks/julia/exercises/anagram/runtests.jl +16 -17
  24. data/tracks/julia/exercises/bob/example.jl +1 -1
  25. data/tracks/julia/exercises/hamming/example.jl +0 -1
  26. data/tracks/julia/exercises/leap/runtests.jl +4 -5
  27. data/tracks/julia/exercises/raindrops/example.jl +9 -9
  28. data/tracks/julia/exercises/raindrops/runtests.jl +54 -54
  29. data/tracks/julia/exercises/rna-transcription/example.jl +5 -6
  30. data/tracks/julia/exercises/rna-transcription/runtests.jl +22 -23
  31. data/tracks/julia/exercises/scrabble-score/example.jl +7 -7
  32. data/tracks/julia/exercises/scrabble-score/runtests.jl +12 -12
  33. data/tracks/julia/exercises/trinary/example.jl +2 -2
  34. data/tracks/julia/exercises/trinary/runtests.jl +11 -11
  35. data/tracks/julia/exercises/word-count/example.jl +7 -7
  36. data/tracks/julia/exercises/word-count/runtests.jl +11 -11
  37. data/tracks/scala/docs/INSTALLATION.md +18 -2
  38. metadata +12 -2
@@ -57,4 +57,11 @@ public class ScrabbleScoreTest
57
57
  {
58
58
  Assert.That(Scrabble.Score("OXYPHENBUTAZONE"), Is.EqualTo(41));
59
59
  }
60
+
61
+ [Ignore("Remove to run test")]
62
+ [Test]
63
+ public void Entire_alphabet()
64
+ {
65
+ Assert.That(Scrabble.Score("abcdefghijklmnopqrstuvwxyz"), Is.EqualTo(87));
66
+ }
60
67
  }
@@ -27,6 +27,14 @@
27
27
  "Integers"
28
28
  ]
29
29
  },
30
+ {
31
+ "slug": "rna-transcription",
32
+ "difficulty": 1,
33
+ "topics": [
34
+ "Strings",
35
+ "Transforming"
36
+ ]
37
+ },
30
38
  {
31
39
  "slug": "hamming",
32
40
  "difficulty": 2,
@@ -0,0 +1,20 @@
1
+ ## Recommended Learning Resources
2
+
3
+ The [Delphi Basics](http://www.delphibasics.co.uk/) is a good reference on Delphi.
4
+
5
+ I also recommend reading [delphi.about.com](http://delphi.about.com/)'s "[A Beginner's Guide to Delphi Programming](http://delphi.about.com/od/beginners/a/delphicourse.htm)", which is a nice primer to Delphi programming.
6
+
7
+ Here is a list of topics that you should find helpful from the beginner's guide mentioned above:
8
+
9
+ 1. [String Handling Routines](http://delphi.about.com/od/beginners/fl/String-Handling-Routines-Delphi-Programming.htm)
10
+ 2. [Ordinal Data Types](http://delphi.about.com/od/faqstipstricks/fl/Ordinal-Data-Types-in-Delphi.htm)
11
+ 3. [Returning multiple values from a function](http://delphi.about.com/od/beginners/a/return-multiple-values-from-a-delphi-function.htm)
12
+ 4. [Overloading and Default Parameters](http://delphi.about.com/od/objectpascalide/a/overloading.htm)
13
+ 5. [Class and Record Helpers](http://delphi.about.com/od/oopindelphi/a/understanding-delphi-class-and-record-helpers.htm)
14
+ 6. [Record Helpers for sets and other simple types](http://delphi.about.com/od/objectpascalide/a/delphi-record-helpers-for-sets-and-other-simple-types.htm)
15
+ 7. [Using TDictionary hash tables](http://delphi.about.com/od/beginners/a/using-t-dictionary-hash-tables-in-delphi.htm)
16
+ 8. [Understanding generic types](http://delphi.about.com/od/objectpascalide/a/understanding-generic-types-in-delphi.htm)
17
+ 9. [Interfaces](http://delphi.about.com/od/oopindelphi/a/interfaces-in-delphi-programming-101.htm)
18
+ 10. [More on Interfaces](http://delphi.about.com/od/oopindelphi/a/interfaces-delphi-programming-102.htm)
19
+ 11. [Handling exceptions](http://delphi.about.com/od/objectpascalide/a/on-handling-exceptions-in-delphi-exception-handling.htm)
20
+ 12. [Threading libraries](http://delphi.about.com/od/kbthread/tp/threading-libraries-for-Delphi.htm)
@@ -10,17 +10,23 @@ type
10
10
  BeerSongTests = class(TObject)
11
11
  public
12
12
  [Test]
13
- [TestCase('verse 8', '8, 0')]
14
- // [TestCase('verse 2', '2, 1')] //Uncomment to run test case
15
- // [TestCase('verse 1', '1, 2')] //Uncomment to run test case
16
- // [TestCase('verse 0', '0, 3')] //Uncomment to run test case
17
- procedure Verse(const verseNumber: integer; const verseResult: integer);
13
+ procedure Verse_8;
18
14
 
19
15
  [Test]
20
- [Ignore] //Comment or remove [Ignore] to run this test
21
- [TestCase('verse 8 to 6','8, 6, 0')]
22
- [TestCase('verse 3 to 0','3, 0, 1')]
23
- procedure Sing(const start : Integer;const stop : Integer; singResult: integer);
16
+ [Ignore('Comment this line to run this test')]
17
+ procedure Verse_2;
18
+
19
+ [Test]
20
+ [Ignore('Comment this line to run this test')]
21
+ procedure Verse_0;
22
+
23
+ [Test]
24
+ [Ignore('Comment this line to run this test')]
25
+ procedure Verse_8_to_6;
26
+
27
+ [Test]
28
+ [Ignore('Comment this line to run this test')]
29
+ procedure Verse_3_to_0;
24
30
  end;
25
31
 
26
32
  implementation
@@ -61,21 +67,48 @@ const verseResults: array[0..3] of string = ('8 bottles of beer on the wall, 8 b
61
67
  'Go to the store and buy some more, 99 bottles of beer on the wall.' + sLineBreak +
62
68
  sLineBreak);
63
69
 
64
- procedure BeerSongTests.Verse(const verseNumber: integer; const verseResult: integer);
70
+ procedure BeerSongTests.Verse_8;
71
+ var Expected,
72
+ Actual: string;
73
+ begin
74
+ Expected := verseResults[0];
75
+ Actual := Beer.Verse(8);
76
+ Assert.AreEqual(Expected, Actual);
77
+ end;
78
+
79
+ procedure BeerSongTests.Verse_2;
80
+ var Expected,
81
+ Actual: string;
82
+ begin
83
+ Expected := verseResults[1];
84
+ Actual := Beer.Verse(2);
85
+ Assert.AreEqual(Expected, Actual);
86
+ end;
87
+
88
+ procedure BeerSongTests.Verse_0;
89
+ var Expected,
90
+ Actual: string;
91
+ begin
92
+ Expected := verseResults[3];
93
+ Actual := Beer.Verse(0);
94
+ Assert.AreEqual(Expected, Actual);
95
+ end;
96
+
97
+ procedure BeerSongTests.Verse_8_to_6;
65
98
  var Expected,
66
99
  Actual: string;
67
100
  begin
68
- Expected := verseResults[verseResult];
69
- Actual := Beer.Verse(verseNumber);
101
+ Expected := singResults[0];
102
+ Actual := Beer.Sing(8, 6);
70
103
  assert.AreEqual(Expected, Actual);
71
104
  end;
72
105
 
73
- procedure BeerSongTests.Sing(const start : Integer;const stop : Integer; singResult: integer);
106
+ procedure BeerSongTests.Verse_3_to_0;
74
107
  var Expected,
75
108
  Actual: string;
76
109
  begin
77
- Expected := singResults[singResult];
78
- Actual := Beer.Sing(start, stop);
110
+ Expected := singResults[1];
111
+ Actual := Beer.Sing(3, 0);
79
112
  assert.AreEqual(Expected, Actual);
80
113
  end;
81
114
 
@@ -1,22 +1,12 @@
1
- //========================================================
2
- // Example solution to exercise.
3
- //
4
- // A simple hello function would suffice, however this
5
- // solution is mimicking the Ruby hello-world exercise
6
- //========================================================
7
1
  unit uHelloWorld;
8
2
 
9
3
  interface
10
4
 
11
- type
12
- THelloWorld = class
13
- public
14
- class function hello(name: string='World'): string; static;
15
- end;
5
+ function Hello(name: string='World'): string;
16
6
 
17
7
  implementation
18
8
 
19
- class function THelloWorld.hello(name: string='World'): string;
9
+ function Hello(name: string='World'): string;
20
10
  begin
21
11
  result := 'Hello, ' + name + '!';
22
12
  end;
@@ -50,17 +50,17 @@ uses uHelloWorld;
50
50
 
51
51
  procedure HelloWorldTest.test_no_name;
52
52
  begin
53
- assert.AreEqual('Hello, World!', THelloWorld.hello);
53
+ assert.AreEqual('Hello, World!', Hello);
54
54
  end;
55
55
 
56
56
  procedure HelloWorldTest.test_sample_name;
57
57
  begin
58
- assert.AreEqual('Hello, Alice!',THelloWorld.hello('Alice'));
58
+ assert.AreEqual('Hello, Alice!',Hello('Alice'));
59
59
  end;
60
60
 
61
61
  procedure HelloWorldTest.test_other_sample_name;
62
62
  begin
63
- assert.AreEqual('Hello, Bob!', THelloWorld.hello('Bob'));
63
+ assert.AreEqual('Hello, Bob!', Hello('Bob'));
64
64
  end;
65
65
 
66
66
  initialization
@@ -0,0 +1,60 @@
1
+ program TestRNATranscription;
2
+
3
+ {$IFNDEF TESTINSIGHT}
4
+ {$APPTYPE CONSOLE}
5
+ {$ENDIF}{$STRONGLINKTYPES ON}
6
+ uses
7
+ System.SysUtils,
8
+ {$IFDEF TESTINSIGHT}
9
+ TestInsight.DUnitX,
10
+ {$ENDIF }
11
+ DUnitX.Loggers.Console,
12
+ DUnitX.Loggers.Xml.NUnit,
13
+ DUnitX.TestFramework,
14
+ uTestRnaTranscription in 'uTestRnaTranscription.pas',
15
+ uRnaTranscription in 'uRnaTranscription.pas';
16
+
17
+ var
18
+ runner : ITestRunner;
19
+ results : IRunResults;
20
+ logger : ITestLogger;
21
+ nunitLogger : ITestLogger;
22
+ begin
23
+ {$IFDEF TESTINSIGHT}
24
+ TestInsight.DUnitX.RunRegisteredTests;
25
+ exit;
26
+ {$ENDIF}
27
+ try
28
+ //Check command line options, will exit if invalid
29
+ TDUnitX.CheckCommandLine;
30
+ //Create the test runner
31
+ runner := TDUnitX.CreateRunner;
32
+ //Tell the runner to use RTTI to find Fixtures
33
+ runner.UseRTTI := True;
34
+ //tell the runner how we will log things
35
+ //Log to the console window
36
+ logger := TDUnitXConsoleLogger.Create(true);
37
+ runner.AddLogger(logger);
38
+ //Generate an NUnit compatible XML File
39
+ nunitLogger := TDUnitXXMLNUnitFileLogger.Create(TDUnitX.Options.XMLOutputFile);
40
+ runner.AddLogger(nunitLogger);
41
+ runner.FailsOnNoAsserts := False; //When true, Assertions must be made during tests;
42
+
43
+ //Run tests
44
+ results := runner.Execute;
45
+ if not results.AllPassed then
46
+ System.ExitCode := EXIT_ERRORS;
47
+
48
+ {$IFNDEF CI}
49
+ //We don't want this happening when running under CI.
50
+ if TDUnitX.Options.ExitBehavior = TDUnitXExitBehavior.Pause then
51
+ begin
52
+ System.Write('Done.. press <Enter> key to quit.');
53
+ System.Readln;
54
+ end;
55
+ {$ENDIF}
56
+ except
57
+ on E: Exception do
58
+ System.Writeln(E.ClassName, ': ', E.Message);
59
+ end;
60
+ end.
@@ -0,0 +1,55 @@
1
+ unit uRnaTranscription;
2
+
3
+ interface
4
+ uses Generics.Collections;
5
+
6
+ type
7
+ complement = class
8
+ private
9
+ class var
10
+ fDnaToRna: TDictionary<char, char>;
11
+ public
12
+ class function OfDna(nucleotide: string): string; static;
13
+ end;
14
+
15
+ implementation
16
+ uses SysUtils;
17
+
18
+ class function complement.OfDna(nucleotide: string): string;
19
+ var i: integer;
20
+ lRNA: string;
21
+ elements: TArray<char>;
22
+ RNAelement: char;
23
+ begin
24
+ result := '';
25
+ lRNA := '';
26
+ if not trim(nucleotide).IsEmpty then
27
+ begin
28
+ fDnaToRna := TDictionary<char, char>.Create;
29
+ with fDnatoRna do
30
+ begin
31
+ add('G','C');
32
+ add('C','G');
33
+ add('T','A');
34
+ add('A','U');
35
+ end;
36
+ elements := nucleotide.ToUpper.ToCharArray;
37
+ i := 0;
38
+ while i <= high(elements) do
39
+ begin
40
+ if fDnaToRna.TryGetValue(elements[i],RNAelement) then
41
+ begin
42
+ lRNA := lRNA + RNAelement;
43
+ inc(i);
44
+ end
45
+ else
46
+ begin
47
+ lRNA := '';
48
+ break;
49
+ end;
50
+ end;
51
+ end;
52
+ result := lRNA;
53
+ end;
54
+
55
+ end.
@@ -0,0 +1,88 @@
1
+ unit uTestRnaTranscription;
2
+
3
+ interface
4
+ uses
5
+ DUnitX.TestFramework;
6
+
7
+ type
8
+ [TestFixture]
9
+ RnaTranscriptionTest = class(TObject)
10
+ public
11
+ [Test]
12
+ procedure Rna_complement_of_cytosine_is_guanine;
13
+
14
+ [Test]
15
+ [Ignore('Comment this line to run this test')]
16
+ procedure Rna_complement_of_guanine_is_cytosine;
17
+
18
+ [Test]
19
+ [Ignore('Comment this line to run this test')]
20
+ procedure Rna_complement_of_thymine_is_adenine;
21
+
22
+ [Test]
23
+ [Ignore('Comment this line to run this test')]
24
+ procedure Rna_complement_of_adenine_is_uracil;
25
+
26
+ [Test]
27
+ [Ignore('Comment this line to run this test')]
28
+ procedure Rna_complement;
29
+
30
+ [Test]
31
+ [Ignore('Comment this line to run this test')]
32
+ procedure Dna_correctly_handles_invalid_input;
33
+
34
+ [Test]
35
+ [Ignore('Comment this line to run this test')]
36
+ procedure Dna_correctly_handles_completely_invalid_input;
37
+
38
+ [Test]
39
+ [Ignore('Comment this line to run this test')]
40
+ procedure Dna_correctly_handles_partially_invalid_input;
41
+ end;
42
+
43
+ implementation
44
+ uses uRnaTranscription;
45
+
46
+ procedure RnaTranscriptionTest.Rna_complement_of_cytosine_is_guanine;
47
+ begin
48
+ Assert.AreEqual('G', complement.OfDna('C'));
49
+ end;
50
+
51
+ procedure RnaTranscriptionTest.Rna_complement_of_guanine_is_cytosine;
52
+ begin
53
+ Assert.AreEqual('C', complement.OfDna('G'));
54
+ end;
55
+
56
+ procedure RnaTranscriptionTest.Rna_complement_of_thymine_is_adenine;
57
+ begin
58
+ Assert.AreEqual('A', complement.OfDna('T'));
59
+ end;
60
+
61
+ procedure RnaTranscriptionTest.Rna_complement_of_adenine_is_uracil;
62
+ begin
63
+ Assert.AreEqual('U', complement.OfDna('A'));
64
+ end;
65
+
66
+ procedure RnaTranscriptionTest.Rna_complement;
67
+ begin
68
+ Assert.AreEqual('UGCACCAGAAUU', complement.OfDna('ACGTGGTCTTAA'));
69
+ end;
70
+
71
+ procedure RnaTranscriptionTest.Dna_correctly_handles_invalid_input;
72
+ begin
73
+ Assert.AreEqual('', complement.OfDna('U'));
74
+ end;
75
+
76
+ procedure RnaTranscriptionTest.Dna_correctly_handles_completely_invalid_input;
77
+ begin
78
+ Assert.AreEqual('', complement.OfDna('XXX'));
79
+ end;
80
+
81
+ procedure RnaTranscriptionTest.Dna_correctly_handles_partially_invalid_input;
82
+ begin
83
+ Assert.AreEqual('', complement.OfDna('ACGTXXXCTTAA'));
84
+ end;
85
+
86
+ initialization
87
+ TDUnitX.RegisterTestFixture(RnaTranscriptionTest);
88
+ end.
@@ -185,9 +185,11 @@
185
185
  ]
186
186
  },
187
187
  {
188
- "difficulty": 1,
188
+ "difficulty": 3,
189
189
  "slug": "parallel-letter-frequency",
190
- "topics": []
190
+ "topics": [
191
+ "Concurrency"
192
+ ]
191
193
  },
192
194
  {
193
195
  "difficulty": 1,
@@ -1,43 +1,42 @@
1
1
  # Anagrams are two or more words that composed of the same characters but in a different order
2
2
 
3
3
  function is_anagram(s1::AbstractString, s2::AbstractString)
4
- # Disable case sensitivity
5
- s1 = lowercase(s1)
6
- s2 = lowercase(s2)
4
+ # Disable case sensitivity
5
+ s1 = lowercase(s1)
6
+ s2 = lowercase(s2)
7
7
 
8
- # Similar and different-length strings are not anagrams
9
- if length(s1) != length(s2) || s1 == s2
10
- return false
11
- end
8
+ # Similar and different-length strings are not anagrams
9
+ if length(s1) != length(s2) || s1 == s2
10
+ return false
11
+ end
12
12
 
13
- # Calculate count of every character in the first string
14
- chr_count = Dict()
15
- for c in s1
16
- chr_count[c] = get(chr_count, c, 0) + 1
17
- end
13
+ # Calculate count of every character in the first string
14
+ chr_count = Dict()
15
+ for c in s1
16
+ chr_count[c] = get(chr_count, c, 0) + 1
17
+ end
18
18
 
19
- # Reduce the count by every character from the second string
20
- for c in s2
21
- t = get(chr_count, c, 0) - 1
22
- if t < 0
23
- # Got character that not exist in the first string
24
- return false
25
- else
26
- chr_count[c] = t
19
+ # Reduce the count by every character from the second string
20
+ for c in s2
21
+ t = get(chr_count, c, 0) - 1
22
+ if t < 0
23
+ # Got character that not exist in the first string
24
+ return false
25
+ else
26
+ chr_count[c] = t
27
+ end
27
28
  end
28
- end
29
29
 
30
- # Check all counts to be zeroes
31
- return all(i->(i==0), values(chr_count))
30
+ # Check all counts to be zeroes
31
+ return all(i->(i==0), values(chr_count))
32
32
  end
33
33
 
34
34
  function detect_anagrams(subject::AbstractString, candidates::AbstractArray)
35
- result = []
36
- for candidate = candidates
37
- if is_anagram(subject, candidate)
38
- push!(result, candidate)
35
+ result = []
36
+ for candidate = candidates
37
+ if is_anagram(subject, candidate)
38
+ push!(result, candidate)
39
+ end
39
40
  end
40
- end
41
- result
41
+ result
42
42
  end
43
-