trackler 2.0.6.32 → 2.0.6.33

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 (26) hide show
  1. checksums.yaml +4 -4
  2. data/lib/trackler/version.rb +1 -1
  3. data/tracks/csharp/exercises/bank-account/BankAccountTest.cs +8 -8
  4. data/tracks/csharp/exercises/bank-account/Example.cs +9 -6
  5. data/tracks/fsharp/exercises/markdown/Example.fs +2 -2
  6. data/tracks/fsharp/exercises/markdown/Markdown.fs +8 -8
  7. data/tracks/fsharp/exercises/markdown/MarkdownTest.fs +4 -4
  8. data/tracks/go/exercises/bank-account/bank_account_test.go +8 -0
  9. data/tracks/go/exercises/bank-account/example.go +2 -0
  10. data/tracks/go/exercises/beer-song/beer_test.go +6 -6
  11. data/tracks/go/exercises/binary-search-tree/binary_search_tree_test.go +8 -0
  12. data/tracks/go/exercises/binary-search-tree/example.go +2 -0
  13. data/tracks/go/exercises/word-count/cases_test.go +1 -0
  14. data/tracks/java/config.json +7 -1
  15. data/tracks/java/exercises/perfect-numbers/build.gradle +17 -0
  16. data/tracks/java/exercises/perfect-numbers/src/example/java/Classification.java +1 -0
  17. data/tracks/java/exercises/perfect-numbers/src/example/java/NaturalNumber.java +30 -0
  18. data/tracks/java/exercises/perfect-numbers/src/main/java/Classification.java +5 -0
  19. data/tracks/java/exercises/perfect-numbers/src/main/java/NaturalNumber.java +5 -0
  20. data/tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java +61 -0
  21. data/tracks/java/exercises/settings.gradle +1 -0
  22. data/tracks/lua/docs/INSTALLATION.md +70 -6
  23. data/tracks/lua/docs/LEARNING.md +5 -1
  24. data/tracks/lua/docs/RESOURCES.md +6 -6
  25. data/tracks/lua/exercises/minesweeper/example.lua +1 -5
  26. metadata +8 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9f6e3f97fb0442bba06845f093f9ab9ea5d92a79
4
- data.tar.gz: cbb479cfd8d79e854facf50b3e114d21e76e637f
3
+ metadata.gz: e5a4eccbddd152c661534a7ae9a71ad4fd71f6ab
4
+ data.tar.gz: 4d1ec7fec9f35886d314ad5bee617846f3395cd8
5
5
  SHA512:
6
- metadata.gz: 0f08eba9a5d7e964a238e50dc854d66444bd8f05d21e3263f4e8e272312cbb1ad46f628883621a181bdf23e4f7156bdfdb6eaf0312be81020061e927fea4d8c2
7
- data.tar.gz: 7e7956710060f07e599ef66a935d2759340ab4a1598139b7314879db60fc6d863f9714ff36a88c3377ddc51130ba442d195b8769ffa7ac1b295b5a7d06b06786
6
+ metadata.gz: 56de61b12c3dd2fca7521f9ea629f5a0029d68a941156fa335f5f60ff466b19a1425da7eb528d89c18de8b11dfe5791cefc5d41a20fd3f7e2bb5b6d5acfa7d6c
7
+ data.tar.gz: e94acef7c5f3926878c87cf57a3b5fb3ced167acfed7f3662943a0a4a2d934e163ef2dbb06f6811f63685aff89e8061eda64d8bf3869f199a1bf11df0a2ba94f
@@ -1,3 +1,3 @@
1
1
  module Trackler
2
- VERSION = "2.0.6.32"
2
+ VERSION = "2.0.6.33"
3
3
  end
@@ -11,7 +11,7 @@ public class BankAccountTest
11
11
  var account = new BankAccount();
12
12
  account.Open();
13
13
 
14
- Assert.That(account.GetBalance(), Is.EqualTo(0));
14
+ Assert.That(account.Balance, Is.EqualTo(0));
15
15
  }
16
16
 
17
17
  [Ignore("Remove to run test")]
@@ -21,10 +21,10 @@ public class BankAccountTest
21
21
  var account = new BankAccount();
22
22
  account.Open();
23
23
 
24
- var openingBalance = account.GetBalance();
24
+ var openingBalance = account.Balance;
25
25
 
26
26
  account.UpdateBalance(10);
27
- var updatedBalance = account.GetBalance();
27
+ var updatedBalance = account.Balance;
28
28
 
29
29
  Assert.That(openingBalance, Is.EqualTo(0));
30
30
  Assert.That(updatedBalance, Is.EqualTo(10));
@@ -36,13 +36,13 @@ public class BankAccountTest
36
36
  {
37
37
  var account = new BankAccount();
38
38
  account.Open();
39
- var openingBalance = account.GetBalance();
39
+ var openingBalance = account.Balance;
40
40
 
41
41
  account.UpdateBalance(10);
42
- var addedBalance = account.GetBalance();
42
+ var addedBalance = account.Balance;
43
43
 
44
44
  account.UpdateBalance(-15);
45
- var subtractedBalance = account.GetBalance();
45
+ var subtractedBalance = account.Balance;
46
46
 
47
47
  Assert.That(openingBalance, Is.EqualTo(0));
48
48
  Assert.That(addedBalance, Is.EqualTo(10));
@@ -57,7 +57,7 @@ public class BankAccountTest
57
57
  account.Open();
58
58
  account.Close();
59
59
 
60
- Assert.Throws<InvalidOperationException>(() => account.GetBalance());
60
+ Assert.That(() => account.Balance, Throws.InvalidOperationException);
61
61
  }
62
62
 
63
63
  [Ignore("Remove to run test")]
@@ -84,6 +84,6 @@ public class BankAccountTest
84
84
  }
85
85
  Task.WaitAll(tasks.ToArray());
86
86
 
87
- Assert.That(account.GetBalance(), Is.EqualTo(0));
87
+ Assert.That(account.Balance, Is.EqualTo(0));
88
88
  }
89
89
  }
@@ -23,16 +23,19 @@ public class BankAccount
23
23
  }
24
24
  }
25
25
 
26
- public float GetBalance()
26
+ public float Balance
27
27
  {
28
- lock(_lock)
28
+ get
29
29
  {
30
- if (!isOpen)
30
+ lock (_lock)
31
31
  {
32
- throw new InvalidOperationException("Cannot get balance on an account that isn't open");
33
- }
32
+ if (!isOpen)
33
+ {
34
+ throw new InvalidOperationException("Cannot get balance on an account that isn't open");
35
+ }
34
36
 
35
- return balance;
37
+ return balance;
38
+ }
36
39
  }
37
40
  }
38
41
 
@@ -12,8 +12,8 @@ let boldMarkdown = "__"
12
12
  let italicMarkdown = "_"
13
13
  let listItemMarkdown = "*"
14
14
 
15
- let boldTag = "em"
16
- let italicTag = "i"
15
+ let boldTag = "strong"
16
+ let italicTag = "em"
17
17
  let paragraphTag = "p"
18
18
  let listTag = "ul"
19
19
  let listItemTag = "li"
@@ -26,10 +26,10 @@ let rec parse (markdown: string) =
26
26
 
27
27
  if __pos' > -1 then
28
28
  if __pos + 2 >= (line.Length - 1) then
29
- line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 2 .. __pos' - 1] + "</em>"
29
+ line <- line.[0.. __pos - 1] + "<strong>" + line.[__pos + 2 .. __pos' - 1] + "</strong>"
30
30
  __pos <- __pos' + 1
31
31
  else
32
- line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 2 .. __pos' - 1] + "</em>" + line.[__pos' + 2 ..]
32
+ line <- line.[0.. __pos - 1] + "<strong>" + line.[__pos + 2 .. __pos' - 1] + "</strong>" + line.[__pos' + 2 ..]
33
33
  __pos <- __pos' + 1
34
34
  else
35
35
  __pos <- -1
@@ -41,10 +41,10 @@ let rec parse (markdown: string) =
41
41
 
42
42
  if __pos' > -1 then
43
43
  if __pos + 1 >= (line.Length - 1) then
44
- line <- line.[0.. __pos - 1] + "<i>" + line.[__pos + 1 .. __pos' - 1] + "</i>"
44
+ line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 1 .. __pos' - 1] + "</em>"
45
45
  __pos <- __pos' + 1
46
46
  else
47
- line <- line.[0.. __pos - 1] + "<i>" + line.[__pos + 1 .. __pos' - 1] + "</i>" + line.[__pos' + 1 ..]
47
+ line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 1 .. __pos' - 1] + "</em>" + line.[__pos' + 1 ..]
48
48
  __pos <- __pos' + 1
49
49
  else
50
50
  __pos <- -1
@@ -75,10 +75,10 @@ let rec parse (markdown: string) =
75
75
 
76
76
  if __pos' > -1 then
77
77
  if __pos + 2 >= (line.Length - 1) then
78
- line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 2 .. __pos' - 1] + "</em>"
78
+ line <- line.[0.. __pos - 1] + "<strong>" + line.[__pos + 2 .. __pos' - 1] + "</strong>"
79
79
  __pos <- __pos' + 1
80
80
  else
81
- line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 2 .. __pos' - 1] + "</em>" + line.[__pos' + 2 ..]
81
+ line <- line.[0.. __pos - 1] + "<strong>" + line.[__pos + 2 .. __pos' - 1] + "</strong>" + line.[__pos' + 2 ..]
82
82
  __pos <- __pos' + 1
83
83
  else
84
84
  __pos <- -1
@@ -90,10 +90,10 @@ let rec parse (markdown: string) =
90
90
 
91
91
  if __pos' > -1 then
92
92
  if __pos + 1 >= (line.Length - 1) then
93
- line <- line.[0.. __pos - 1] + "<i>" + line.[__pos + 1 .. __pos' - 1] + "</i>"
93
+ line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 1 .. __pos' - 1] + "</em>"
94
94
  __pos <- __pos' + 1
95
95
  else
96
- line <- line.[0.. __pos - 1] + "<i>" + line.[__pos + 1 .. __pos' - 1] + "</i>" + line.[__pos' + 1 ..]
96
+ line <- line.[0.. __pos - 1] + "<em>" + line.[__pos + 1 .. __pos' - 1] + "</em>" + line.[__pos' + 1 ..]
97
97
  __pos <- __pos' + 1
98
98
  else
99
99
  __pos <- -1
@@ -13,19 +13,19 @@ let ``Parses normal text as a paragraph`` () =
13
13
  [<Test>]
14
14
  let ``Parsing italics`` () =
15
15
  let input = "_This will be italic_"
16
- let expected = "<p><i>This will be italic</i></p>"
16
+ let expected = "<p><em>This will be italic</em></p>"
17
17
  Assert.That(parse input, Is.EqualTo(expected))
18
18
 
19
19
  [<Test>]
20
20
  let ``Parsing bold text`` () =
21
21
  let input = "__This will be bold__"
22
- let expected = "<p><em>This will be bold</em></p>"
22
+ let expected = "<p><strong>This will be bold</strong></p>"
23
23
  Assert.That(parse input, Is.EqualTo(expected))
24
24
 
25
25
  [<Test>]
26
26
  let ``Mixed normal, italics and bold text`` () =
27
27
  let input = "This will _be_ __mixed__"
28
- let expected = "<p>This will <i>be</i> <em>mixed</em></p>"
28
+ let expected = "<p>This will <em>be</em> <strong>mixed</strong></p>"
29
29
  Assert.That(parse input, Is.EqualTo(expected))
30
30
 
31
31
  [<Test>]
@@ -55,5 +55,5 @@ let ``Unordered lists`` () =
55
55
  [<Test>]
56
56
  let ``With a little bit of everything`` () =
57
57
  let input = "# Header!\n* __Bold Item__\n* _Italic Item_"
58
- let expected = "<h1>Header!</h1><ul><li><em>Bold Item</em></li><li><i>Italic Item</i></li></ul>"
58
+ let expected = "<h1>Header!</h1><ul><li><strong>Bold Item</strong></li><li><em>Italic Item</em></li></ul>"
59
59
  Assert.That(parse input, Is.EqualTo(expected))
@@ -20,6 +20,14 @@ import (
20
20
  "time"
21
21
  )
22
22
 
23
+ const targetTestVersion = 1
24
+
25
+ func TestTestVersion(t *testing.T) {
26
+ if testVersion != targetTestVersion {
27
+ t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
28
+ }
29
+ }
30
+
23
31
  func TestSeqOpenBalanceClose(t *testing.T) {
24
32
  // open account
25
33
  const amt = 10
@@ -2,6 +2,8 @@ package account
2
2
 
3
3
  import "sync"
4
4
 
5
+ const testVersion = 1
6
+
5
7
  type Account struct {
6
8
  sync.RWMutex
7
9
  open bool
@@ -6,12 +6,6 @@ import (
6
6
 
7
7
  const targetTestVersion = 1
8
8
 
9
- func TestTestVersion(t *testing.T) {
10
- if testVersion != targetTestVersion {
11
- t.Errorf("Found testVersion = %v, want %v.", testVersion, targetTestVersion)
12
- }
13
- }
14
-
15
9
  const verse8 = "8 bottles of beer on the wall, 8 bottles of beer.\nTake one down and pass it around, 7 bottles of beer on the wall.\n"
16
10
  const verse3 = "3 bottles of beer on the wall, 3 bottles of beer.\nTake one down and pass it around, 2 bottles of beer on the wall.\n"
17
11
  const verse2 = "2 bottles of beer on the wall, 2 bottles of beer.\nTake one down and pass it around, 1 bottle of beer on the wall.\n"
@@ -54,6 +48,12 @@ var verseTestCases = []struct {
54
48
  {"invalid verse", 104, "", true},
55
49
  }
56
50
 
51
+ func TestTestVersion(t *testing.T) {
52
+ if testVersion != targetTestVersion {
53
+ t.Fatalf("Found testVersion = %v, want %v.", testVersion, targetTestVersion)
54
+ }
55
+ }
56
+
57
57
  func TestBottlesVerse(t *testing.T) {
58
58
  for _, tt := range verseTestCases {
59
59
  actualVerse, err := Verse(tt.verse)
@@ -19,6 +19,14 @@ import (
19
19
  "testing"
20
20
  )
21
21
 
22
+ const targetTestVersion = 1
23
+
24
+ func TestTestVersion(t *testing.T) {
25
+ if testVersion != targetTestVersion {
26
+ t.Fatalf("Found testVersion = %v, want %v", testVersion, targetTestVersion)
27
+ }
28
+ }
29
+
22
30
  func TestDataIsRetained(t *testing.T) {
23
31
  actual := Bst(4).data
24
32
  expected := 4
@@ -1,5 +1,7 @@
1
1
  package binarysearchtree
2
2
 
3
+ const testVersion = 1
4
+
3
5
  type SearchTreeData struct {
4
6
  left *SearchTreeData
5
7
  data int
@@ -1,6 +1,7 @@
1
1
  package wordcount
2
2
 
3
3
  // Source: exercism/x-common
4
+ // Commit: f2ab262 word-count: replace underscore with space in description (#483)
4
5
 
5
6
  var testCases = []struct {
6
7
  description string
@@ -61,7 +61,8 @@
61
61
  "clock",
62
62
  "diamond",
63
63
  "secret-handshake",
64
- "flatten-array"
64
+ "flatten-array",
65
+ "perfect-numbers"
65
66
  ],
66
67
  "exercises": [
67
68
  {
@@ -353,6 +354,11 @@
353
354
  "slug": "flatten-array",
354
355
  "difficulty": 1,
355
356
  "topics": []
357
+ },
358
+ {
359
+ "slug": "perfect-numbers",
360
+ "difficulty": 1,
361
+ "topics": []
356
362
  }
357
363
  ],
358
364
  "deprecated": [
@@ -0,0 +1,17 @@
1
+ apply plugin: "java"
2
+ apply plugin: "eclipse"
3
+ apply plugin: "idea"
4
+
5
+ repositories {
6
+ mavenCentral()
7
+ }
8
+
9
+ dependencies {
10
+ testCompile "junit:junit:4.12"
11
+ }
12
+ test {
13
+ testLogging {
14
+ exceptionFormat = 'full'
15
+ events = ["passed", "failed", "skipped"]
16
+ }
17
+ }
@@ -0,0 +1 @@
1
+ tracks/java/exercises/perfect-numbers/src/example/java/../../main/java/Classification.java
@@ -0,0 +1,30 @@
1
+ import java.util.stream.IntStream;
2
+
3
+ final class NaturalNumber {
4
+
5
+ private final int naturalNumber;
6
+
7
+ NaturalNumber(int naturalNumber) {
8
+ if (naturalNumber <= 0) throw new IllegalStateException("Natural numbers are all positive.");
9
+ this.naturalNumber = naturalNumber;
10
+ }
11
+
12
+ Classification getClassification() {
13
+ final int aliquotSum = computeAliquotSum();
14
+
15
+ if (aliquotSum == naturalNumber) {
16
+ return Classification.PERFECT;
17
+ } else if (aliquotSum > naturalNumber) {
18
+ return Classification.ABUNDANT;
19
+ } else {
20
+ return Classification.DEFICIENT;
21
+ }
22
+ }
23
+
24
+ private int computeAliquotSum() {
25
+ return IntStream.range(1, naturalNumber)
26
+ .filter(it -> naturalNumber % it == 0)
27
+ .sum();
28
+ }
29
+
30
+ }
@@ -0,0 +1,5 @@
1
+ enum Classification {
2
+
3
+ DEFICIENT, PERFECT, ABUNDANT
4
+
5
+ }
@@ -0,0 +1,5 @@
1
+ final class NaturalNumber {
2
+
3
+
4
+
5
+ }
@@ -0,0 +1,61 @@
1
+ import org.junit.Ignore;
2
+ import org.junit.Test;
3
+
4
+ import static org.junit.Assert.assertEquals;
5
+
6
+ public final class NaturalNumberTest {
7
+
8
+ @Test
9
+ public void testSmallPerfectNumberIsClassifiedCorrectly() {
10
+ assertEquals(Classification.PERFECT, new NaturalNumber(6).getClassification());
11
+ }
12
+
13
+ @Ignore
14
+ @Test
15
+ public void testMediumPerfectNumberIsClassifiedCorrectly() {
16
+ assertEquals(Classification.PERFECT, new NaturalNumber(28).getClassification());
17
+ }
18
+
19
+ @Ignore
20
+ @Test
21
+ public void testLargePerfectNumberIsClassifiedCorrectly() {
22
+ assertEquals(Classification.PERFECT, new NaturalNumber(33550336).getClassification());
23
+ }
24
+
25
+ @Ignore
26
+ @Test
27
+ public void testSmallAbundantNumberIsClassifiedCorrectly() {
28
+ assertEquals(Classification.ABUNDANT, new NaturalNumber(12).getClassification());
29
+ }
30
+
31
+ @Ignore
32
+ @Test
33
+ public void testMediumAbundantNumberIsClassifiedCorrectly() {
34
+ assertEquals(Classification.ABUNDANT, new NaturalNumber(24).getClassification());
35
+ }
36
+
37
+ @Ignore
38
+ @Test
39
+ public void testLargeAbundantNumberIsClassifiedCorrectly() {
40
+ assertEquals(Classification.ABUNDANT, new NaturalNumber(33550335).getClassification());
41
+ }
42
+
43
+ @Ignore
44
+ @Test
45
+ public void testSmallDeficientNumberIsClassifiedCorrectly() {
46
+ assertEquals(Classification.DEFICIENT, new NaturalNumber(8).getClassification());
47
+ }
48
+
49
+ @Ignore
50
+ @Test
51
+ public void testMediumNumberIsClassifiedCorrectly() {
52
+ assertEquals(Classification.DEFICIENT, new NaturalNumber(31).getClassification());
53
+ }
54
+
55
+ @Ignore
56
+ @Test
57
+ public void testLargeDeficientNumberIsClassifiedCorrectly() {
58
+ assertEquals(Classification.DEFICIENT, new NaturalNumber(33550337).getClassification());
59
+ }
60
+
61
+ }
@@ -34,6 +34,7 @@ include 'octal'
34
34
  include 'palindrome-products'
35
35
  include 'pangram'
36
36
  include 'pascals-triangle'
37
+ include 'perfect-numbers'
37
38
  include 'phone-number'
38
39
  include 'pig-latin'
39
40
  include 'prime-factors'
@@ -1,15 +1,79 @@
1
- First install lua using [homebrew][1]
1
+ ## Installing Lua
2
2
 
3
- $ brew install lua
3
+ - [MacOS](#mac)
4
+ - [Ubuntu](#ubuntu)
5
+ - [Windows](#windows)
4
6
 
5
- Then install [luarocks][2] to install packages for lua
7
+ #### [MacOS](#mac)
6
8
 
7
- $ brew install luarocks
9
+ First install Lua and [Luarocks][2] using [Homebrew][1]:
8
10
 
9
- Then install [busted][3] testing framework for lua
11
+ ```shell
12
+ $ brew install lua
13
+ ```
10
14
 
11
- $ luarocks install busted
15
+ Then install the [Busted][3] testing framework for Lua:
16
+
17
+ ```shell
18
+ $ luarocks install busted
19
+ ```
20
+
21
+ Then run your tests:
22
+
23
+ ```shell
24
+ $ busted .
25
+ ```
26
+
27
+ #### [Ubuntu](#ubuntu)
28
+
29
+ First install Lua and [Luarocks][2] using [Apt][6]:
30
+
31
+ ```shell
32
+ $ sudo apt-get install lua5.3 luarocks
33
+ ```
34
+
35
+ Then install the [Busted][3] testing framework for Lua:
36
+
37
+ ```shell
38
+ $ luarocks install busted
39
+ ```
40
+
41
+ If this fails, you may need to use `sudo`:
42
+
43
+ ```shell
44
+ $ sudo luarocks install busted
45
+ ```
46
+
47
+ Then run your tests:
48
+
49
+ ```shell
50
+ $ busted .
51
+ ```
52
+
53
+ #### [Windows](#windows)
54
+
55
+ First install Lua and [Luarocks][2] using [Chocolatey][7]:
56
+
57
+ C:\> choco install lua
58
+
59
+ Then install the [Busted][3] testing framework for Lua:
60
+
61
+ C:\> luarocks install busted
62
+
63
+ Then run your tests:
64
+
65
+ C:\> busted .
12
66
 
13
67
  [1]: http://brew.sh/
68
+
14
69
  [2]: http://luarocks.org/
70
+
15
71
  [3]: http://olivinelabs.com/busted/
72
+
73
+ [4]: https://github.com/Olivine-Labs/lua-style-guide
74
+
75
+ [5]: http://tylerneylon.com/a/learn-lua/
76
+
77
+ [6]: https://help.ubuntu.com/lts/serverguide/apt.html
78
+
79
+ [7]: http://chocolatey.org/
@@ -1 +1,5 @@
1
- Lua is a very small language and you can [learn the basics of the language in 15 minutes](tylerneylon.com/a/learn-lua/). For an exhaustive look at the language, written by the authors of Lua, you can read [Programming in Lua](https://www.lua.org/pil/) (the first edition which covers Lua 5.1 [is available online for free](https://www.lua.org/pil/contents.html)).
1
+ Lua is a very small language and you can [learn the basics of the language in 15 minutes][1]. For an exhaustive look at the language, written by the authors of Lua, you can read [Programming in Lua][2] (the first edition which covers Lua 5.1 [is available online for free][3]).
2
+
3
+ [1]: http://tylerneylon.com/a/learn-lua/
4
+ [2]: http://www.lua.org/pil/
5
+ [3]: https://www.lua.org/pil/contents.html
@@ -1,11 +1,11 @@
1
1
  There are many great free online resources for Lua including:
2
2
 
3
- 1. [lua.org][8]
4
- 2. A highly recommended detailed and authoritative introduction to all aspects of Lua programming by Lua's chief architect: [Programming in Lua, by Roberto Ierusalimschy][6]
5
- 3. For an official definition of the Lua language, consult the [Lua 5.1 Reference Manual][7], by R. Ierusalimschy, L. H. de Figueiredo, W. Celes.
6
- 4. [Lua Style Guide][4]
7
- 5. [Learn Lua in 15 minutes][5]
8
- 6. [Some][9] [options][10] [for][11] [linting][12]
3
+ 1. [lua.org][8]
4
+ 2. A highly recommended detailed and authoritative introduction to all aspects of Lua programming by Lua's chief architect: [Programming in Lua, by Roberto Ierusalimschy][6]
5
+ 3. For an official definition of the Lua language, consult the [Lua 5.1 Reference Manual][7], by R. Ierusalimschy, L. H. de Figueiredo, W. Celes.
6
+ 4. [Lua Style Guide][4]
7
+ 5. [Learn Lua in 15 minutes][5]
8
+ 6. [Some][9] [options][10] [for][11] [linting][12]
9
9
 
10
10
  [4]: https://github.com/Olivine-Labs/lua-style-guide
11
11
  [5]: http://tylerneylon.com/a/learn-lua/
@@ -53,10 +53,6 @@ function board:empty_spaces()
53
53
  end)
54
54
  end
55
55
 
56
- function board:__tostring()
57
- return self.rep
58
- end
59
-
60
56
  local function transform(board)
61
57
  local board = Board(board)
62
58
 
@@ -68,7 +64,7 @@ local function transform(board)
68
64
  if mines > 0 then board:set(x, y, tostring(mines)) end
69
65
  end
70
66
 
71
- return tostring(board)
67
+ return board.rep
72
68
  end
73
69
 
74
70
  return {
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.0.6.32
4
+ version: 2.0.6.33
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-02-05 00:00:00.000000000 Z
11
+ date: 2017-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubyzip
@@ -3955,6 +3955,12 @@ files:
3955
3955
  - tracks/java/exercises/pascals-triangle/src/example/java/PascalsTriangle.java
3956
3956
  - tracks/java/exercises/pascals-triangle/src/main/java/.keep
3957
3957
  - tracks/java/exercises/pascals-triangle/src/test/java/PascalsTriangleTest.java
3958
+ - tracks/java/exercises/perfect-numbers/build.gradle
3959
+ - tracks/java/exercises/perfect-numbers/src/example/java/Classification.java
3960
+ - tracks/java/exercises/perfect-numbers/src/example/java/NaturalNumber.java
3961
+ - tracks/java/exercises/perfect-numbers/src/main/java/Classification.java
3962
+ - tracks/java/exercises/perfect-numbers/src/main/java/NaturalNumber.java
3963
+ - tracks/java/exercises/perfect-numbers/src/test/java/NaturalNumberTest.java
3958
3964
  - tracks/java/exercises/phone-number/build.gradle
3959
3965
  - tracks/java/exercises/phone-number/src/example/java/PhoneNumber.java
3960
3966
  - tracks/java/exercises/phone-number/src/main/java/.keep