trackler 2.1.0.40 → 2.1.0.41

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.
Files changed (31) hide show
  1. checksums.yaml +4 -4
  2. data/bin/update +3 -3
  3. data/common/exercises/bowling/canonical-data.json +10 -10
  4. data/lib/trackler/version.rb +1 -1
  5. data/tracks/delphi/config.json +9 -0
  6. data/tracks/delphi/exercises/collatz-conjecture/Collatzconjecture.dpr +60 -0
  7. data/tracks/delphi/exercises/collatz-conjecture/uCollatzconjectureExample.pas +35 -0
  8. data/tracks/delphi/exercises/collatz-conjecture/uCollatzconjectureTest.pas +83 -0
  9. data/tracks/java/exercises/acronym/src/main/java/Acronym.java +1 -1
  10. data/tracks/java/exercises/all-your-base/src/main/java/BaseConverter.java +1 -1
  11. data/tracks/java/exercises/bracket-push/src/main/java/BracketChecker.java +1 -1
  12. data/tracks/java/exercises/change/src/main/java/ChangeCalculator.java +1 -1
  13. data/tracks/java/exercises/diamond/src/main/java/DiamondPrinter.java +1 -1
  14. data/tracks/java/exercises/flatten-array/src/main/java/Flattener.java +1 -1
  15. data/tracks/java/exercises/luhn/src/main/java/LuhnValidator.java +1 -1
  16. data/tracks/java/exercises/minesweeper/src/main/java/MinesweeperBoard.java +1 -1
  17. data/tracks/java/exercises/ocr-numbers/src/main/java/OpticalCharacterReader.java +1 -1
  18. data/tracks/java/exercises/perfect-numbers/src/main/java/NaturalNumber.java +1 -1
  19. data/tracks/java/exercises/queen-attack/src/main/java/BoardCoordinate.java +1 -1
  20. data/tracks/java/exercises/queen-attack/src/main/java/QueenAttackCalculator.java +1 -1
  21. data/tracks/java/exercises/rectangles/src/main/java/RectangleCounter.java +1 -1
  22. data/tracks/java/exercises/robot-simulator/src/main/java/GridPosition.java +1 -1
  23. data/tracks/java/exercises/robot-simulator/src/main/java/Robot.java +1 -1
  24. data/tracks/java/exercises/saddle-points/src/main/java/Matrix.java +1 -1
  25. data/tracks/java/exercises/saddle-points/src/main/java/MatrixCoordinate.java +1 -1
  26. data/tracks/java/exercises/scrabble-score/src/main/java/Scrabble.java +1 -1
  27. data/tracks/java/exercises/secret-handshake/src/main/java/HandshakeCalculator.java +1 -1
  28. data/tracks/java/exercises/sublist/src/main/java/RelationshipComputer.java +1 -1
  29. data/tracks/java/exercises/wordy/src/main/java/WordProblemSolver.java +1 -1
  30. data/tracks/vbnet/config.json +1 -1
  31. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb7b55ba97eeed894dce4891877a33184b8ff108
4
- data.tar.gz: 7e5d39a933d5f377fca1d19b0211815877a46df8
3
+ metadata.gz: 459eb1c7e1f02ca9820277f1b0c2d702b6eff98f
4
+ data.tar.gz: 9aa711fe94d135c348739c92dbe9cbc6705a8f56
5
5
  SHA512:
6
- metadata.gz: fab2f459cf90bc7993f1f86a95b33093b2affb33bf0751d58a9004bf34e2fa6f9bfffbd572cb6a5c422178ab35456fef648affeed00a03524f926f7b66547826
7
- data.tar.gz: 2745237c7192a89c5e98515770eadf7387bba1c3d302f11d35b3e1f6db8e3574fac00f871b4f032d72f1b6d9a7a32b12477b2df432374f5c456d61e2a0390f00
6
+ metadata.gz: 708eaabff40770358ec9088fd995750a7fbf1a82c0f4af9262b66db028ad747287ed411dbdd5e3ccb644243551706d3961dede0824bc567a0cd32ec33cb76b18
7
+ data.tar.gz: dff6a0a9f1eae6c6da446a08701d3105441ee311309348afc528fa673d0e8b00dd756f2c91cac35320816ac4b65aa953ac497f8f518a677c4fd68c48a337d462
data/bin/update CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/bin/bash
2
2
 
3
- git checkout master
4
- git fetch origin master
5
- git reset --hard origin/master
3
+ # git checkout master
4
+ # git fetch origin master
5
+ # git reset --hard origin/master
6
6
 
7
7
  git submodule foreach git pull origin master
8
8
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "exercise": "bowling",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "comments": [
5
5
  "Students should implement roll and score methods.",
6
6
  "Roll should accept a single integer.",
@@ -91,31 +91,31 @@
91
91
  "previous_rolls": [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10],
92
92
  "expected": 300
93
93
  }, {
94
- "description": "rolls can not score negative points",
94
+ "description": "rolls cannot score negative points",
95
95
  "property": "roll",
96
96
  "previous_rolls": [],
97
97
  "roll": -1,
98
98
  "expected": {"error": "Negative roll is invalid"}
99
99
  }, {
100
- "description": "a roll can not score more than 10 points",
100
+ "description": "a roll cannot score more than 10 points",
101
101
  "property": "roll",
102
102
  "previous_rolls": [],
103
103
  "roll": 11,
104
104
  "expected": {"error": "Pin count exceeds pins on the lane"}
105
105
  }, {
106
- "description": "two rolls in a frame can not score more than 10 points",
106
+ "description": "two rolls in a frame cannot score more than 10 points",
107
107
  "property": "roll",
108
108
  "previous_rolls": [5],
109
109
  "roll": 6,
110
110
  "expected": {"error": "Pin count exceeds pins on the lane"}
111
111
  }, {
112
- "description": "bonus roll after a strike in the last frame can not score more than 10 points",
112
+ "description": "bonus roll after a strike in the last frame cannot score more than 10 points",
113
113
  "property": "roll",
114
114
  "previous_rolls": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10],
115
115
  "roll": 11,
116
116
  "expected": {"error": "Pin count exceeds pins on the lane"}
117
117
  }, {
118
- "description": "two bonus rolls after a strike in the last frame can not score more than 10 points",
118
+ "description": "two bonus rolls after a strike in the last frame cannot score more than 10 points",
119
119
  "property": "roll",
120
120
  "previous_rolls": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 5],
121
121
  "roll": 6,
@@ -126,24 +126,24 @@
126
126
  "previous_rolls": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10, 6],
127
127
  "expected": 26
128
128
  }, {
129
- "description": "the second bonus rolls after a strike in the last frame can not be a strike if the first one is not a strike",
129
+ "description": "the second bonus rolls after a strike in the last frame cannot be a strike if the first one is not a strike",
130
130
  "property": "roll",
131
131
  "previous_rolls": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 6],
132
132
  "roll": 10,
133
133
  "expected": {"error": "Pin count exceeds pins on the lane"}
134
134
  }, {
135
- "description": "second bonus roll after a strike in the last frame can not score than 10 points",
135
+ "description": "second bonus roll after a strike in the last frame cannot score more than 10 points",
136
136
  "property": "roll",
137
137
  "previous_rolls": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 10],
138
138
  "roll": 11,
139
139
  "expected": {"error": "Pin count exceeds pins on the lane"}
140
140
  }, {
141
- "description": "an unstarted game can not be scored",
141
+ "description": "an unstarted game cannot be scored",
142
142
  "property": "score",
143
143
  "previous_rolls": [],
144
144
  "expected": {"error": "Score cannot be taken until the end of the game"}
145
145
  }, {
146
- "description": "an incomplete game can not be scored",
146
+ "description": "an incomplete game cannot be scored",
147
147
  "property": "score",
148
148
  "previous_rolls": [0, 0],
149
149
  "expected": {"error": "Score cannot be taken until the end of the game"}
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.1.0.40"
2
+ VERSION = "2.1.0.41"
3
3
  end
@@ -90,6 +90,15 @@
90
90
  "Recursion"
91
91
  ]
92
92
  },
93
+ {
94
+ "slug": "collatz-conjecture",
95
+ "difficulty": 2,
96
+ "topics": [
97
+ "Algorithms",
98
+ "Looping",
99
+ "Raising Exceptions"
100
+ ]
101
+ },
93
102
  {
94
103
  "slug": "beer-song",
95
104
  "difficulty": 3,
@@ -0,0 +1,60 @@
1
+ program Collatzconjecture;
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
+ uCollatzconjectureTest in 'uCollatzconjectureTest.pas',
15
+ uCollatzconjecture in 'uCollatzconjecture.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,35 @@
1
+ unit uCollatzconjecture;
2
+
3
+ interface
4
+ uses System.SysUtils;
5
+
6
+ type
7
+ EIllegalNumber = class(Exception);
8
+
9
+ function collatzSteps(aNumber: integer): integer;
10
+
11
+ implementation
12
+
13
+ function collatzSteps(aNumber: integer): integer;
14
+
15
+ function computeCollatzValue(aValue: integer): integer;
16
+ begin
17
+ if odd(aValue) then
18
+ result := aValue * 3 + 1
19
+ else
20
+ result := aValue div 2;
21
+ end;
22
+
23
+ begin
24
+ if aNumber <= 0 then
25
+ raise EIllegalNumber.Create('error: Only positive numbers are allowed');
26
+
27
+ result := 0;
28
+ while (aNumber > 1) and (result < 1000) do
29
+ begin
30
+ aNumber := computeCollatzValue(aNumber);
31
+ inc(result);
32
+ end;
33
+ end;
34
+
35
+ end.
@@ -0,0 +1,83 @@
1
+ unit uCollatzconjectureTest;
2
+
3
+ interface
4
+ uses
5
+ DUnitX.TestFramework;
6
+
7
+ type
8
+ [TestFixture]
9
+ CollatzconjectureTest = class(TObject)
10
+ public
11
+ [Testcase('Zero steps for one', '1, 0')]
12
+ // [Ignore('Comment the "[Ignore]" statement to run the test')]
13
+ procedure Zero_steps_for_one(const aNumber: integer; const aExpected: integer);
14
+
15
+ [Testcase('Divide if even','16, 4')]
16
+ [Ignore]
17
+ procedure Divide_if_even(const aNumber: integer; const aExpected: integer);
18
+
19
+ [Testcase('Even and odd steps','12, 9')]
20
+ [Ignore]
21
+ procedure Even_and_odd_steps(const aNumber: integer; const aExpected: integer);
22
+
23
+ [Testcase('Large number of even and odd steps', '1000000, 152')]
24
+ [Ignore]
25
+ procedure Large_number_of_even_and_odd_steps(const aNumber: integer; const aExpected: integer);
26
+
27
+ [Testcase('Zero is an error', '0,error: Only positive numbers are allowed')]
28
+ [Ignore]
29
+ procedure Zero_is_an_error(const aNumber: integer; const aExpected: string);
30
+
31
+ [Testcase('Negative value is an error', '-15,error: Only positive numbers are allowed')]
32
+ [Ignore]
33
+ procedure Negative_value_is_an_error(const aNumber: integer; const aExpected: string);
34
+ end;
35
+
36
+ implementation
37
+ uses uCollatzconjecture;
38
+
39
+ procedure CollatzconjectureTest.Zero_steps_for_one(const aNumber: integer; const aExpected: integer);
40
+ begin
41
+ Assert.AreEqual(aExpected, collatzSteps(aNumber));
42
+ end;
43
+
44
+ procedure CollatzconjectureTest.Divide_if_even(const aNumber: integer; const aExpected: integer);
45
+ begin
46
+ Assert.AreEqual(aExpected, collatzSteps(aNumber));
47
+ end;
48
+
49
+ procedure CollatzconjectureTest.Even_and_odd_steps(const aNumber: integer; const aExpected: integer);
50
+ begin
51
+ Assert.AreEqual(aExpected, collatzSteps(aNumber));
52
+ end;
53
+
54
+ procedure CollatzconjectureTest.Large_number_of_even_and_odd_steps(const aNumber: integer; const aExpected: integer);
55
+ begin
56
+ Assert.AreEqual(aExpected, collatzSteps(aNumber));
57
+ end;
58
+
59
+ procedure CollatzconjectureTest.Zero_is_an_error(const aNumber: integer; const aExpected: string);
60
+ var MyProc: TTestLocalMethod;
61
+ begin
62
+ MyProc := procedure
63
+ begin
64
+ collatzSteps(aNumber);
65
+ end;
66
+
67
+ Assert.WillRaiseWithMessage(MyProc, EIllegalNumber, aExpected);
68
+ end;
69
+
70
+ procedure CollatzconjectureTest.Negative_value_is_an_error(const aNumber: integer; const aExpected: string);
71
+ var MyProc: TTestLocalMethod;
72
+ begin
73
+ MyProc := procedure
74
+ begin
75
+ collatzSteps(aNumber);
76
+ end;
77
+
78
+ Assert.WillRaiseWithMessage(MyProc, EIllegalNumber, aExpected);
79
+ end;
80
+
81
+ initialization
82
+ TDUnitX.RegisterTestFixture(CollatzconjectureTest);
83
+ end.
@@ -1,4 +1,4 @@
1
- final class Acronym {
1
+ class Acronym {
2
2
 
3
3
  Acronym(String phrase) {
4
4
  throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
@@ -1,4 +1,4 @@
1
- final class BaseConverter {
1
+ class BaseConverter {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class BracketChecker {
1
+ class BracketChecker {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class ChangeCalculator {
1
+ class ChangeCalculator {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class DiamondPrinter {
1
+ class DiamondPrinter {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class Flattener {
1
+ class Flattener {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class LuhnValidator {
1
+ class LuhnValidator {
2
2
 
3
3
  boolean isValid(String candidate) {
4
4
  throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
@@ -1,4 +1,4 @@
1
- public final class MinesweeperBoard {
1
+ public class MinesweeperBoard {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class OpticalCharacterReader {
1
+ class OpticalCharacterReader {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class NaturalNumber {
1
+ class NaturalNumber {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- public final class BoardCoordinate {
1
+ public class BoardCoordinate {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- public final class QueenAttackCalculator {
1
+ public class QueenAttackCalculator {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class RectangleCounter {
1
+ class RectangleCounter {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class GridPosition {
1
+ class GridPosition {
2
2
 
3
3
  final int x;
4
4
 
@@ -1,4 +1,4 @@
1
- final class Robot {
1
+ class Robot {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class Matrix {
1
+ class Matrix {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class MatrixCoordinate {
1
+ class MatrixCoordinate {
2
2
 
3
3
  private final int row;
4
4
 
@@ -1,4 +1,4 @@
1
- final class Scrabble {
1
+ class Scrabble {
2
2
 
3
3
  Scrabble(String word) {
4
4
  throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
@@ -1,6 +1,6 @@
1
1
  import java.util.List;
2
2
 
3
- final class HandshakeCalculator {
3
+ class HandshakeCalculator {
4
4
 
5
5
  List<Signal> calculateHandshake(int number) {
6
6
  throw new UnsupportedOperationException("Delete this statement and write your own implementation.");
@@ -1,4 +1,4 @@
1
- final class RelationshipComputer<T> {
1
+ class RelationshipComputer<T> {
2
2
 
3
3
 
4
4
 
@@ -1,4 +1,4 @@
1
- final class WordProblemSolver {
1
+ class WordProblemSolver {
2
2
 
3
3
 
4
4
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "slug": "vbnet",
3
3
  "language": "VB.NET",
4
- "repository": "https://github.com/exercism/xvbnet",
4
+ "repository": "https://github.com/exercism/vbnet",
5
5
  "checklist_issue": 3,
6
6
  "active": false,
7
7
  "deprecated": [
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.1.0.40
4
+ version: 2.1.0.41
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-06-17 00:00:00.000000000 Z
11
+ date: 2017-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -2036,6 +2036,9 @@ files:
2036
2036
  - tracks/delphi/exercises/clock/Clock.dpr
2037
2037
  - tracks/delphi/exercises/clock/uClockExample.pas
2038
2038
  - tracks/delphi/exercises/clock/uClockTest.pas
2039
+ - tracks/delphi/exercises/collatz-conjecture/Collatzconjecture.dpr
2040
+ - tracks/delphi/exercises/collatz-conjecture/uCollatzconjectureExample.pas
2041
+ - tracks/delphi/exercises/collatz-conjecture/uCollatzconjectureTest.pas
2039
2042
  - tracks/delphi/exercises/etl/ETL.dpr
2040
2043
  - tracks/delphi/exercises/etl/uETLexample.pas
2041
2044
  - tracks/delphi/exercises/etl/uETLtests.pas