trackler 2.2.1.148 → 2.2.1.149
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/trackler/version.rb +1 -1
- data/problem-specifications/exercises/bracket-push/description.md +3 -2
- data/problem-specifications/exercises/forth/canonical-data.json +26 -1
- data/problem-specifications/exercises/list-ops/canonical-data.json +10 -2
- data/tracks/dart/exercises/bob/README.md +2 -0
- data/tracks/delphi/exercises/bracket-push/README.md +3 -2
- data/tracks/elisp/config.json +16 -0
- data/tracks/elisp/exercises/armstrong-numbers/README.md +19 -0
- data/tracks/elisp/exercises/armstrong-numbers/armstrong-numbers-test.el +41 -0
- data/tracks/elisp/exercises/armstrong-numbers/armstrong-numbers.el +8 -0
- data/tracks/elisp/exercises/armstrong-numbers/example.el +13 -0
- data/tracks/elisp/exercises/hello-world/example.el +2 -4
- data/tracks/elisp/exercises/hello-world/hello-world-test.el +2 -5
- data/tracks/elisp/exercises/two-fer/README.md +19 -0
- data/tracks/elisp/exercises/two-fer/example.el +13 -0
- data/tracks/elisp/exercises/two-fer/two-fer-test.el +21 -0
- data/tracks/elisp/exercises/two-fer/two-fer.el +9 -0
- data/tracks/java/exercises/poker/.meta/src/reference/java/Card.java +5 -2
- data/tracks/java/exercises/poker/.meta/src/reference/java/Hand.java +51 -12
- data/tracks/java/exercises/poker/.meta/version.txt +1 -0
- data/tracks/java/exercises/poker/src/test/java/PokerTest.java +133 -56
- metadata +11 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42008f25c06e6b05e9f0ec0cba67f543bca6dbb1
|
4
|
+
data.tar.gz: f39be98e422e1df1bfc7ce5d221c7190e22ab4c8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f64e08b7041c734026adbb3034e64aadd14bc5eb666168b358f60ff158f6476326b788d1df596e8afa0f72eb5a98e8d81cf37ba4fb9dc741fc18cd9a47f6e8eb
|
7
|
+
data.tar.gz: 30293b1538d99bdcd9fc29a0676a31b5a7817af48f1413c2582babcc0548e2bd7ed4c76edd1bc3bbc8de7bbbc7eae5db8133af063450f1a33978ae30d197edfc
|
data/lib/trackler/version.rb
CHANGED
@@ -1,2 +1,3 @@
|
|
1
|
-
Given a string containing brackets `[]`, braces `{}
|
2
|
-
verify that all
|
1
|
+
Given a string containing brackets `[]`, braces `{}`, parentheses `()`,
|
2
|
+
or any combination thereof, verify that any and all pairs are matched
|
3
|
+
and nested correctly.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "forth",
|
3
|
-
"version": "1.
|
3
|
+
"version": "1.6.0",
|
4
4
|
"comments": [
|
5
5
|
"The cases are split into multiple sections, all with the same structure.",
|
6
6
|
"In all cases, the `expected` key is the resulting stack",
|
@@ -364,6 +364,31 @@
|
|
364
364
|
},
|
365
365
|
"expected": [12]
|
366
366
|
},
|
367
|
+
{
|
368
|
+
"description": "can use different words with the same name",
|
369
|
+
"property": "evaluate",
|
370
|
+
"input": {
|
371
|
+
"instructions": [
|
372
|
+
": foo 5 ;",
|
373
|
+
": bar foo ;",
|
374
|
+
": foo 6 ;",
|
375
|
+
"bar foo"
|
376
|
+
]
|
377
|
+
},
|
378
|
+
"expected": [5, 6]
|
379
|
+
},
|
380
|
+
{
|
381
|
+
"description": "can define word that uses word with the same name",
|
382
|
+
"property": "evaluate",
|
383
|
+
"input": {
|
384
|
+
"instructions": [
|
385
|
+
": foo 10 ;",
|
386
|
+
": foo foo 1 + ;",
|
387
|
+
"foo"
|
388
|
+
]
|
389
|
+
},
|
390
|
+
"expected": [11]
|
391
|
+
},
|
367
392
|
{
|
368
393
|
"description": "cannot redefine numbers",
|
369
394
|
"property": "evaluate",
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"exercise": "list-ops",
|
3
|
-
"version": "2.
|
3
|
+
"version": "2.3.0",
|
4
4
|
"comments": [
|
5
5
|
"Though there are no specifications here for dealing with large lists,",
|
6
6
|
"implementers may add tests for handling large lists to ensure that the",
|
@@ -40,7 +40,7 @@
|
|
40
40
|
]
|
41
41
|
},
|
42
42
|
{
|
43
|
-
"description": "
|
43
|
+
"description": "concatenate a list of lists",
|
44
44
|
"cases": [
|
45
45
|
{
|
46
46
|
"description": "empty list",
|
@@ -57,6 +57,14 @@
|
|
57
57
|
"lists": [[1, 2], [3], [], [4, 5, 6]]
|
58
58
|
},
|
59
59
|
"expected": [1, 2, 3, 4, 5, 6]
|
60
|
+
},
|
61
|
+
{
|
62
|
+
"description": "list of nested lists",
|
63
|
+
"property": "concat",
|
64
|
+
"input": {
|
65
|
+
"lists": [[[1], [2]], [[3]], [[]], [[4, 5, 6]]]
|
66
|
+
},
|
67
|
+
"expected": [[1], [2], [3], [], [4, 5, 6]]
|
60
68
|
}
|
61
69
|
]
|
62
70
|
},
|
@@ -6,6 +6,8 @@ Bob answers 'Sure.' if you ask him a question.
|
|
6
6
|
|
7
7
|
He answers 'Whoa, chill out!' if you yell at him.
|
8
8
|
|
9
|
+
He answers 'Calm down, I know what I'm doing!' if you yell a question at him.
|
10
|
+
|
9
11
|
He says 'Fine. Be that way!' if you address him without actually saying
|
10
12
|
anything.
|
11
13
|
|
@@ -1,7 +1,8 @@
|
|
1
1
|
# Bracket Push
|
2
2
|
|
3
|
-
Given a string containing brackets `[]`, braces `{}
|
4
|
-
verify that all
|
3
|
+
Given a string containing brackets `[]`, braces `{}`, parentheses `()`,
|
4
|
+
or any combination thereof, verify that any and all pairs are matched
|
5
|
+
and nested correctly.
|
5
6
|
|
6
7
|
## Testing
|
7
8
|
|
data/tracks/elisp/config.json
CHANGED
@@ -9,6 +9,14 @@
|
|
9
9
|
"unlocked_by": null,
|
10
10
|
"uuid": "c4fdc935-885b-44bd-84e4-fae4a09e8c39"
|
11
11
|
},
|
12
|
+
{
|
13
|
+
"core": false,
|
14
|
+
"difficulty": 1,
|
15
|
+
"slug": "two-fer",
|
16
|
+
"topics": null,
|
17
|
+
"unlocked_by": null,
|
18
|
+
"uuid": "36e5dc3a-2122-484a-ae82-beb7b813e2cd"
|
19
|
+
},
|
12
20
|
{
|
13
21
|
"core": false,
|
14
22
|
"difficulty": 1,
|
@@ -176,6 +184,14 @@
|
|
176
184
|
"topics": null,
|
177
185
|
"unlocked_by": null,
|
178
186
|
"uuid": "a252e137-8a63-4f26-b119-7264f12a257a"
|
187
|
+
},
|
188
|
+
{
|
189
|
+
"core": false,
|
190
|
+
"difficulty": 1,
|
191
|
+
"slug": "armstrong-numbers",
|
192
|
+
"topics": null,
|
193
|
+
"unlocked_by": null,
|
194
|
+
"uuid": "059141f0-f28d-4d10-a03a-7852dbfc2d2e"
|
179
195
|
}
|
180
196
|
],
|
181
197
|
"foregone": [],
|
@@ -0,0 +1,19 @@
|
|
1
|
+
## Armstrong numbers
|
2
|
+
|
3
|
+
An [Armstrong number](https://en.wikipedia.org/wiki/Narcissistic_number) is a number that is the sum of its own digits each raised to the power of the number of digits.
|
4
|
+
|
5
|
+
For example:
|
6
|
+
|
7
|
+
- 9 is an Armstrong number, because `9 = 9^1 = 9`
|
8
|
+
- 10 is *not* an Armstrong number, because `10 != 1^2 + 0^2 = 1`
|
9
|
+
- 153 is an Armstrong number, because: `153 = 1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153`
|
10
|
+
- 154 is *not* an Armstrong number, because: `154 != 1^3 + 5^3 + 4^3 = 1 + 125 + 64 = 190`
|
11
|
+
|
12
|
+
Write some code to determine whether a number is an Armstrong number.
|
13
|
+
|
14
|
+
## Source
|
15
|
+
|
16
|
+
See more at [wikipedia](https://en.wikipedia.org/wiki/Narcissistic_number)
|
17
|
+
|
18
|
+
## Submitting Incomplete Solutions
|
19
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,41 @@
|
|
1
|
+
;;; armstrong-numbers-test.el --- Tests for armstrong-numbers (exercism)
|
2
|
+
|
3
|
+
;;; Commentary:
|
4
|
+
|
5
|
+
;;; Code:
|
6
|
+
|
7
|
+
(load-file "armstrong-numbers.el")
|
8
|
+
|
9
|
+
(ert-deftest armstrong-number-5 ()
|
10
|
+
"Single digit numbers are Armstrong numbers"
|
11
|
+
(should (armstrong-p 5)))
|
12
|
+
|
13
|
+
(ert-deftest not-armstrong-number-10 ()
|
14
|
+
"There are no 2 digit Armstrong numbers"
|
15
|
+
(should (not (armstrong-p 10))))
|
16
|
+
|
17
|
+
(ert-deftest armstrong-number-153 ()
|
18
|
+
"Three digit number that should an Armstrong number"
|
19
|
+
(should (armstrong-p 153)))
|
20
|
+
|
21
|
+
(ert-deftest not-armstrong-number-100 ()
|
22
|
+
"Three digit number that should an Armstrong number"
|
23
|
+
(should (not (armstrong-p 100))))
|
24
|
+
|
25
|
+
(ert-deftest armstrong-number-9474 ()
|
26
|
+
"Four digit number that should an Armstrong number"
|
27
|
+
(should (armstrong-p 9474)))
|
28
|
+
|
29
|
+
(ert-deftest not-armstrong-number-9475 ()
|
30
|
+
"Four digit number that should not an Armstrong number"
|
31
|
+
(should (not (armstrong-p 9476))))
|
32
|
+
|
33
|
+
(ert-deftest armstrong-number-9926315 ()
|
34
|
+
"Seven digit number that should an Armstrong number"
|
35
|
+
(should (armstrong-p 9926315)))
|
36
|
+
|
37
|
+
(ert-deftest not-armstrong-number-9926314 ()
|
38
|
+
"Seven digit number that should not an Armstrong number"
|
39
|
+
(should (not (armstrong-p 9926314))))
|
40
|
+
|
41
|
+
;;; armstrong-numbers-test.el ends here
|
@@ -0,0 +1,13 @@
|
|
1
|
+
;;; armstrong-numbers.el --- armstrong-numbers Exercise (exercism)
|
2
|
+
|
3
|
+
;;; Commentary:
|
4
|
+
|
5
|
+
;;; Code:
|
6
|
+
|
7
|
+
(defun armstrong-p (n)
|
8
|
+
(let* ((digits (mapcar #'(lambda (d) (- d ?0)) (string-to-list (int-to-string n))))
|
9
|
+
(p (length digits)))
|
10
|
+
(= n (apply '+ (mapcar #'(lambda (d) (expt d p)) digits)))))
|
11
|
+
|
12
|
+
(provide 'armstrong-numbers)
|
13
|
+
;;; armstrong-numbers.el ends here
|
@@ -1,18 +1,15 @@
|
|
1
1
|
;;; hello-world-test.el --- Tests for Hello World (exercism)
|
2
2
|
|
3
3
|
;;; Commentary:
|
4
|
+
;; Common test data version: 1.1.0 be3ae66
|
4
5
|
|
5
6
|
;;; Code:
|
6
7
|
|
7
8
|
(load-file "hello-world.el")
|
8
9
|
|
9
|
-
(ert-deftest
|
10
|
+
(ert-deftest hello-world-test ()
|
10
11
|
(should (equal (hello) "Hello, World!")))
|
11
12
|
|
12
|
-
(ert-deftest with-args ()
|
13
|
-
(should (equal (hello "Emacs") "Hello, Emacs!"))
|
14
|
-
(should (equal (hello "Exercism") "Hello, Exercism!")))
|
15
|
-
|
16
13
|
(provide 'hello-world-test)
|
17
14
|
|
18
15
|
;;; hello-world-test.el ends here
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Two Fer
|
2
|
+
|
3
|
+
`Two-fer` or `2-fer` is short for two for one. One for you and one for me.
|
4
|
+
|
5
|
+
```text
|
6
|
+
"One for X, one for me."
|
7
|
+
```
|
8
|
+
|
9
|
+
When X is a name or "you".
|
10
|
+
|
11
|
+
If the given name is "Alice", the result should be "One for Alice, one for me."
|
12
|
+
If no name is given, the result should be "One for you, one for me."
|
13
|
+
|
14
|
+
## Source
|
15
|
+
|
16
|
+
[https://en.wikipedia.org/wiki/Two-fer](https://en.wikipedia.org/wiki/Two-fer)
|
17
|
+
|
18
|
+
## Submitting Incomplete Solutions
|
19
|
+
It's possible to submit an incomplete solution so you can see how others have completed the exercise.
|
@@ -0,0 +1,21 @@
|
|
1
|
+
;;; two-fer-test.el --- Tests for Two-fer (exercism)
|
2
|
+
|
3
|
+
;;; Commentary:
|
4
|
+
;; Common test data version: 1.2.0 4fc1acb
|
5
|
+
|
6
|
+
;;; Code:
|
7
|
+
|
8
|
+
(load-file "two-fer.el")
|
9
|
+
|
10
|
+
(ert-deftest no-name-given ()
|
11
|
+
(should (equal (two-fer) "One for you, one for me.")))
|
12
|
+
|
13
|
+
(ert-deftest a-name-given ()
|
14
|
+
(should (equal (two-fer "Alice") "One for Alice, one for me.")))
|
15
|
+
|
16
|
+
(ert-deftest another-name-given ()
|
17
|
+
(should (equal (two-fer "Bob") "One for Bob, one for me.")))
|
18
|
+
|
19
|
+
(provide 'two-fer-test)
|
20
|
+
|
21
|
+
;;; two-fer-test.el ends here
|
@@ -16,10 +16,13 @@ class Card {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
private int parseRank(String card) {
|
19
|
-
|
19
|
+
if (card.substring(0, 2).equals("10")) {
|
20
|
+
return 10;
|
21
|
+
}
|
22
|
+
return "..23456789TJQKA".indexOf(card.charAt(0));
|
20
23
|
}
|
21
24
|
|
22
25
|
private int parseSuit(String card) {
|
23
|
-
return ".HSDC".indexOf(card.charAt(1));
|
26
|
+
return ".HSDC".indexOf(card.charAt(card.length() - 1));
|
24
27
|
}
|
25
28
|
}
|
@@ -38,10 +38,9 @@ class Hand {
|
|
38
38
|
}
|
39
39
|
return frequencyMap;
|
40
40
|
}
|
41
|
-
|
41
|
+
|
42
42
|
private int scoreHand(List<Card> cards) {
|
43
|
-
List<Card> cardsByRank = cards
|
44
|
-
.stream()
|
43
|
+
List<Card> cardsByRank = cards.stream()
|
45
44
|
.sorted(Comparator.comparing(Card::getRank))
|
46
45
|
.unordered()
|
47
46
|
.collect(Collectors.toList());
|
@@ -63,7 +62,10 @@ class Hand {
|
|
63
62
|
.stream()
|
64
63
|
.map(Map.Entry::getValue)
|
65
64
|
.collect(Collectors.toList());
|
66
|
-
List<Integer> suits = cards
|
65
|
+
List<Integer> suits = cards
|
66
|
+
.stream()
|
67
|
+
.map(Card::getSuit)
|
68
|
+
.collect(Collectors.toList());
|
67
69
|
|
68
70
|
return calculatedScore(frequencyMap, cardsByRank, ranks, rankCounts, suits);
|
69
71
|
}
|
@@ -74,9 +76,15 @@ class Hand {
|
|
74
76
|
ranks = Arrays.asList(5, 4, 3, 2, 1);
|
75
77
|
}
|
76
78
|
|
77
|
-
boolean flush = suits
|
78
|
-
|
79
|
+
boolean flush = suits
|
80
|
+
.stream()
|
81
|
+
.distinct()
|
82
|
+
.count() == 1;
|
83
|
+
boolean straight = ranks.stream().distinct().count() == 5
|
84
|
+
&& ranks.get(0) - ranks.get(4) == 4;
|
85
|
+
|
79
86
|
Iterator<Integer> iteratorOverFrequencies = frequencyMap.keySet().iterator();
|
87
|
+
|
80
88
|
int highestFrequency = iteratorOverFrequencies.next();
|
81
89
|
|
82
90
|
if (straight && flush) {
|
@@ -86,24 +94,55 @@ class Hand {
|
|
86
94
|
return 700 + cardsByRank.get(0).getRank();
|
87
95
|
}
|
88
96
|
if (rankCounts.equals(Arrays.asList(3, 2))) {
|
89
|
-
|
97
|
+
int triplet = 0;
|
98
|
+
int pair = 0;
|
99
|
+
for (Integer key : frequencyMap.keySet()) {
|
100
|
+
if (frequencyMap.get(key) == 2) {
|
101
|
+
pair = (int) key;
|
102
|
+
}
|
103
|
+
if (frequencyMap.get(key) == 3) {
|
104
|
+
triplet = 3 * (int) key;
|
105
|
+
}
|
106
|
+
}
|
107
|
+
return 600 + 3 * triplet + pair;
|
90
108
|
}
|
91
109
|
if (flush) {
|
92
110
|
return 500 + highestFrequency;
|
93
111
|
}
|
94
112
|
if (straight) {
|
95
|
-
|
113
|
+
int maxValue = Collections.max(ranks);
|
114
|
+
return 400 + maxValue;
|
96
115
|
}
|
97
116
|
if (rankCounts.equals(Arrays.asList(3, 1, 1))) {
|
98
|
-
|
117
|
+
List<Integer> uniqueCards = new ArrayList<Integer>();
|
118
|
+
int triplet = 0;
|
119
|
+
for (Integer key : frequencyMap.keySet()) {
|
120
|
+
if (frequencyMap.get(key) == 1) {
|
121
|
+
uniqueCards.add((int) key);
|
122
|
+
}
|
123
|
+
if (frequencyMap.get(key) == 3) {
|
124
|
+
triplet = 3 * (int) key;
|
125
|
+
}
|
126
|
+
}
|
127
|
+
return 300 + triplet + Collections.max(uniqueCards);
|
99
128
|
}
|
100
129
|
if (rankCounts.equals(Arrays.asList(2, 2, 1))) {
|
101
|
-
|
130
|
+
int productsOfFrequencyAndValue = 0;
|
131
|
+
for (Integer key : frequencyMap.keySet()) {
|
132
|
+
int frequencyKey = (int) key;
|
133
|
+
int frequencyValue = frequencyMap.get(key);
|
134
|
+
productsOfFrequencyAndValue += frequencyKey * frequencyValue;
|
135
|
+
}
|
136
|
+
return 200 + productsOfFrequencyAndValue + 2 * Math.max(highestFrequency, iteratorOverFrequencies.next());
|
102
137
|
}
|
103
138
|
if (rankCounts.equals(Arrays.asList(2, 1, 1, 1))) {
|
104
139
|
return 100 + highestFrequency;
|
105
140
|
}
|
106
141
|
ranks.sort(Comparator.naturalOrder());
|
107
|
-
|
142
|
+
int result = 0;
|
143
|
+
for (int i = 0; i < ranks.size(); i++) {
|
144
|
+
result += ranks.get(0) * (i + 1);
|
145
|
+
}
|
146
|
+
return result + ranks.get(ranks.size() - 1);
|
108
147
|
}
|
109
|
-
}
|
148
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
1.1.0
|
@@ -2,6 +2,7 @@ import org.junit.Ignore;
|
|
2
2
|
import org.junit.Test;
|
3
3
|
|
4
4
|
import java.util.Arrays;
|
5
|
+
import java.util.Collections;
|
5
6
|
|
6
7
|
import static org.junit.Assert.assertEquals;
|
7
8
|
|
@@ -9,99 +10,174 @@ public class PokerTest {
|
|
9
10
|
@Test
|
10
11
|
public void oneHand() {
|
11
12
|
String hand = "4S 5S 7H 8D JC";
|
12
|
-
assertEquals(
|
13
|
+
assertEquals(Collections.singletonList(hand), new Poker(Collections.singletonList(hand)).getBestHands());
|
14
|
+
}
|
15
|
+
|
16
|
+
@Ignore("Remove to run test")
|
17
|
+
@Test
|
18
|
+
public void highestCardWins() {
|
19
|
+
String highest8 = "4D 5S 6S 8D 3C";
|
20
|
+
String highest10 = "2S 4C 7S 9H 10H";
|
21
|
+
String highestJ = "3S 4S 5D 6H JH";
|
22
|
+
assertEquals(Collections.singletonList(highestJ), new Poker(Arrays.asList(highest8, highest10, highestJ)).getBestHands());
|
23
|
+
}
|
24
|
+
|
25
|
+
@Ignore("Remove to run test")
|
26
|
+
@Test
|
27
|
+
public void tieHasMultipleWinners() {
|
28
|
+
String highest8 = "4D 5S 6S 8D 3C";
|
29
|
+
String highest10 = "2S 4C 7S 9H 10H";
|
30
|
+
String highestJh = "3S 4S 5D 6H JH";
|
31
|
+
String highestJd = "3H 4H 5C 6C JD";
|
32
|
+
assertEquals(Arrays.asList(highestJh, highestJd),
|
33
|
+
new Poker(Arrays.asList(highest8, highest10, highestJh, highestJd)).getBestHands());
|
34
|
+
}
|
35
|
+
|
36
|
+
@Ignore("Remove to run test")
|
37
|
+
@Test
|
38
|
+
public void sameHighCards() {
|
39
|
+
String nextHighest3 = "3S 5H 6S 8D 7H";
|
40
|
+
String nextHighest2 = "2S 5D 6D 8C 7S";
|
41
|
+
assertEquals(Collections.singletonList(nextHighest3), new Poker(Arrays.asList(nextHighest3, nextHighest2)).getBestHands());
|
13
42
|
}
|
14
43
|
|
15
44
|
@Ignore("Remove to run test")
|
16
45
|
@Test
|
17
46
|
public void nothingVsOnePair() {
|
18
|
-
String nothing = "4S 5H
|
47
|
+
String nothing = "4S 5H 6C 8D KH";
|
19
48
|
String pairOf4 = "2S 4H 6S 4D JH";
|
20
|
-
assertEquals(
|
49
|
+
assertEquals(Collections.singletonList(pairOf4), new Poker(Arrays.asList(nothing, pairOf4)).getBestHands());
|
21
50
|
}
|
22
51
|
|
23
52
|
@Ignore("Remove to run test")
|
24
53
|
@Test
|
25
54
|
public void twoPairs() {
|
26
55
|
String pairOf2 = "4S 2H 6S 2D JH";
|
27
|
-
String pairOf4 = "2S 4H
|
28
|
-
assertEquals(
|
56
|
+
String pairOf4 = "2S 4H 6C 4D JD";
|
57
|
+
assertEquals(Collections.singletonList(pairOf4), new Poker(Arrays.asList(pairOf2, pairOf4)).getBestHands());
|
29
58
|
}
|
30
59
|
|
31
60
|
@Ignore("Remove to run test")
|
32
61
|
@Test
|
33
62
|
public void onePairVsDoublePair() {
|
34
63
|
String pairOf8 = "2S 8H 6S 8D JH";
|
35
|
-
String doublePair = "4S 5H
|
36
|
-
assertEquals(
|
64
|
+
String doublePair = "4S 5H 4C 8C 5C";
|
65
|
+
assertEquals(Collections.singletonList(doublePair), new Poker(Arrays.asList(pairOf8, doublePair)).getBestHands());
|
37
66
|
}
|
38
67
|
|
39
68
|
@Ignore("Remove to run test")
|
40
69
|
@Test
|
41
70
|
public void twoDoublePairs() {
|
42
|
-
String doublePair2And8 = "2S 8H
|
43
|
-
String doublePair4And5 = "4S 5H
|
44
|
-
assertEquals(
|
71
|
+
String doublePair2And8 = "2S 8H 2D 8D 3H";
|
72
|
+
String doublePair4And5 = "4S 5H 4C 8S 5D";
|
73
|
+
assertEquals(Collections.singletonList(doublePair2And8),
|
74
|
+
new Poker(Arrays.asList(doublePair2And8, doublePair4And5)).getBestHands());
|
75
|
+
}
|
76
|
+
|
77
|
+
@Ignore("Remove to run test")
|
78
|
+
@Test
|
79
|
+
public void sameHighestPair() {
|
80
|
+
String doublePair2AndQ = "2S QS 2C QD JH";
|
81
|
+
String doublePairJAndQ = "JD QH JS 8D QC";
|
82
|
+
assertEquals(Collections.singletonList(doublePairJAndQ),
|
83
|
+
new Poker(Arrays.asList(doublePairJAndQ, doublePair2AndQ)).getBestHands());
|
84
|
+
}
|
85
|
+
|
86
|
+
@Ignore("Remove to run test")
|
87
|
+
@Test
|
88
|
+
public void identicallyRankedPairs() {
|
89
|
+
String kicker8 = "JD QH JS 8D QC";
|
90
|
+
String kicker2 = "JS QS JC 2D QD";
|
91
|
+
assertEquals(Collections.singletonList(kicker8), new Poker(Arrays.asList(kicker8, kicker2)).getBestHands());
|
45
92
|
}
|
46
93
|
|
47
94
|
@Ignore("Remove to run test")
|
48
95
|
@Test
|
49
96
|
public void doublePairVsThree() {
|
50
|
-
String doublePair2And8 = "2S 8H
|
51
|
-
String threeOf4 = "4S 5H
|
52
|
-
assertEquals(
|
97
|
+
String doublePair2And8 = "2S 8H 2H 8D JH";
|
98
|
+
String threeOf4 = "4S 5H 4C 8S 4H";
|
99
|
+
assertEquals(Collections.singletonList(threeOf4), new Poker(Arrays.asList(doublePair2And8, threeOf4)).getBestHands());
|
53
100
|
}
|
54
101
|
|
55
102
|
@Ignore("Remove to run test")
|
56
103
|
@Test
|
57
104
|
public void twoThrees() {
|
58
|
-
String threeOf2 = "2S 2H
|
59
|
-
String threeOf1 = "4S AH AS
|
60
|
-
assertEquals(
|
105
|
+
String threeOf2 = "2S 2H 2C 8D JH";
|
106
|
+
String threeOf1 = "4S AH AS 8C AD";
|
107
|
+
assertEquals(Collections.singletonList(threeOf1), new Poker(Arrays.asList(threeOf2, threeOf1)).getBestHands());
|
108
|
+
}
|
109
|
+
|
110
|
+
@Ignore("Remove to run test")
|
111
|
+
@Test
|
112
|
+
public void sameThreesMultipleDecks() {
|
113
|
+
String remainingCard7 = "4S AH AS 7C AD";
|
114
|
+
String remainingCard8 = "4S AH AS 8C AD";
|
115
|
+
assertEquals(Collections.singletonList(remainingCard8),
|
116
|
+
new Poker(Arrays.asList(remainingCard7, remainingCard8)).getBestHands());
|
61
117
|
}
|
62
118
|
|
63
119
|
@Ignore("Remove to run test")
|
64
120
|
@Test
|
65
121
|
public void threeVsStraight() {
|
66
|
-
String threeOf4 = "4S 5H
|
67
|
-
String straight = "3S
|
68
|
-
assertEquals(
|
122
|
+
String threeOf4 = "4S 5H 4C 8D 4H";
|
123
|
+
String straight = "3S 4D 2S 6D 5C";
|
124
|
+
assertEquals(Collections.singletonList(straight), new Poker(Arrays.asList(threeOf4, straight)).getBestHands());
|
125
|
+
}
|
126
|
+
|
127
|
+
@Ignore("Remove to run test")
|
128
|
+
@Test
|
129
|
+
public void AcesCanEndAStraight() {
|
130
|
+
String hand = "4S 5H 4C 8D 4H";
|
131
|
+
String straightEndsA = "10D JH QS KD AC";
|
132
|
+
assertEquals(Collections.singletonList(straightEndsA), new Poker(Arrays.asList(hand, straightEndsA)).getBestHands());
|
133
|
+
}
|
134
|
+
|
135
|
+
@Ignore("Remove to run test")
|
136
|
+
@Test
|
137
|
+
public void AcesCanStartAStraight() {
|
138
|
+
String hand = "4S 5H 4C 8D 4H";
|
139
|
+
String straightStartA = "4D AH 3S 2D 5C";
|
140
|
+
assertEquals(Collections.singletonList(straightStartA), new Poker(Arrays.asList(hand, straightStartA)).getBestHands());
|
69
141
|
}
|
70
142
|
|
71
143
|
@Ignore("Remove to run test")
|
72
144
|
@Test
|
73
145
|
public void twoStraights() {
|
74
|
-
String straightTo8 = "4S
|
146
|
+
String straightTo8 = "4S 6C 7S 8D 5H";
|
75
147
|
String straightTo9 = "5S 7H 8S 9D 6H";
|
76
|
-
assertEquals(
|
148
|
+
assertEquals(Collections.singletonList(straightTo9), new Poker(Arrays.asList(straightTo8, straightTo9)).getBestHands());
|
149
|
+
}
|
77
150
|
|
78
|
-
|
79
|
-
|
80
|
-
|
151
|
+
@Ignore("Remove to run test")
|
152
|
+
@Test
|
153
|
+
public void theLowestStraightStartsWithAce() {
|
154
|
+
String straight = "2H 3C 4D 5D 6H";
|
155
|
+
String straightStartA = "4S AH 3S 2D 5H";
|
156
|
+
assertEquals(Collections.singletonList(straight), new Poker(Arrays.asList(straight, straightStartA)).getBestHands());
|
81
157
|
}
|
82
158
|
|
83
159
|
@Ignore("Remove to run test")
|
84
160
|
@Test
|
85
161
|
public void straightVsFlush() {
|
86
|
-
String straightTo8 = "
|
162
|
+
String straightTo8 = "4C 6H 7D 8D 5H";
|
87
163
|
String flushTo7 = "2S 4S 5S 6S 7S";
|
88
|
-
assertEquals(
|
164
|
+
assertEquals(Collections.singletonList(flushTo7), new Poker(Arrays.asList(straightTo8, flushTo7)).getBestHands());
|
89
165
|
}
|
90
166
|
|
91
167
|
@Ignore("Remove to run test")
|
92
168
|
@Test
|
93
169
|
public void twoFlushes() {
|
94
|
-
String flushTo8 = "
|
170
|
+
String flushTo8 = "4H 7H 8H 9H 6H";
|
95
171
|
String flushTo7 = "2S 4S 5S 6S 7S";
|
96
|
-
assertEquals(
|
172
|
+
assertEquals(Collections.singletonList(flushTo8), new Poker(Arrays.asList(flushTo8, flushTo7)).getBestHands());
|
97
173
|
}
|
98
174
|
|
99
175
|
@Ignore("Remove to run test")
|
100
176
|
@Test
|
101
177
|
public void flushVsFull() {
|
102
178
|
String flushTo8 = "3H 6H 7H 8H 5H";
|
103
|
-
String full = "4S 5H
|
104
|
-
assertEquals(
|
179
|
+
String full = "4S 5H 4C 5D 4H";
|
180
|
+
assertEquals(Collections.singletonList(full), new Poker(Arrays.asList(full, flushTo8)).getBestHands());
|
105
181
|
}
|
106
182
|
|
107
183
|
@Ignore("Remove to run test")
|
@@ -109,55 +185,56 @@ public class PokerTest {
|
|
109
185
|
public void twoFulls() {
|
110
186
|
String fullOf4By9 = "4H 4S 4D 9S 9D";
|
111
187
|
String fullOf5By8 = "5H 5S 5D 8S 8D";
|
112
|
-
assertEquals(
|
188
|
+
assertEquals(Collections.singletonList(fullOf5By8), new Poker(Arrays.asList(fullOf4By9, fullOf5By8)).getBestHands());
|
113
189
|
}
|
114
190
|
|
115
191
|
@Ignore("Remove to run test")
|
116
192
|
@Test
|
117
|
-
public void
|
118
|
-
String
|
119
|
-
String
|
120
|
-
assertEquals(
|
193
|
+
public void twoFullssameThripletMultipleDecks() {
|
194
|
+
String fullOf5By9 = "5H 5S 5D 9S 9D";
|
195
|
+
String fullOf5By8 = "5H 5S 5D 8S 8D";
|
196
|
+
assertEquals(Collections.singletonList(fullOf5By9), new Poker(Arrays.asList(fullOf5By9, fullOf5By8)).getBestHands());
|
121
197
|
}
|
122
198
|
|
123
199
|
@Ignore("Remove to run test")
|
124
200
|
@Test
|
125
|
-
public void
|
126
|
-
String
|
127
|
-
String
|
128
|
-
assertEquals(
|
201
|
+
public void fullVsSquare() {
|
202
|
+
String full = "4S 5H 4D 5D 4H";
|
203
|
+
String squareOf3 = "3S 3H 2S 3D 3C";
|
204
|
+
assertEquals(Collections.singletonList(squareOf3), new Poker(Arrays.asList(full, squareOf3)).getBestHands());
|
129
205
|
}
|
130
206
|
|
131
207
|
@Ignore("Remove to run test")
|
132
208
|
@Test
|
133
|
-
public void
|
134
|
-
String
|
135
|
-
String
|
136
|
-
assertEquals(
|
209
|
+
public void twoSquares() {
|
210
|
+
String squareOf2 = "2S 2H 2C 8D 2D";
|
211
|
+
String squareOf5 = "4S 5H 5S 5D 5C";
|
212
|
+
assertEquals(Collections.singletonList(squareOf5), new Poker(Arrays.asList(squareOf2, squareOf5)).getBestHands());
|
137
213
|
}
|
138
214
|
|
139
215
|
@Ignore("Remove to run test")
|
140
216
|
@Test
|
141
|
-
public void
|
142
|
-
String
|
143
|
-
String
|
144
|
-
assertEquals(
|
217
|
+
public void sameSquaresMultipleDecks() {
|
218
|
+
String kicker2 = "3S 3H 2S 3D 3C";
|
219
|
+
String kicker4 = "3S 3H 4S 3D 3C";
|
220
|
+
assertEquals(Collections.singletonList(kicker4), new Poker(Arrays.asList(kicker2, kicker4)).getBestHands());
|
145
221
|
}
|
146
222
|
|
147
223
|
@Ignore("Remove to run test")
|
148
224
|
@Test
|
149
|
-
public void
|
150
|
-
String
|
151
|
-
String
|
152
|
-
|
153
|
-
|
225
|
+
public void squareVsStraightFlush() {
|
226
|
+
String squareOf5 = "4S 5H 5S 5D 5C";
|
227
|
+
String straightFlushTo9 = "7S 8S 9S 6S 10S";
|
228
|
+
assertEquals(Collections.singletonList(straightFlushTo9),
|
229
|
+
new Poker(Arrays.asList(squareOf5, straightFlushTo9)).getBestHands());
|
154
230
|
}
|
155
231
|
|
156
232
|
@Ignore("Remove to run test")
|
157
233
|
@Test
|
158
|
-
public void
|
159
|
-
String
|
160
|
-
String
|
161
|
-
assertEquals(
|
234
|
+
public void twoStraightFlushes() {
|
235
|
+
String straightFlushTo8 = "4H 6H 7H 8H 5H";
|
236
|
+
String straightFlushTo9 = "5S 7S 8S 9S 6S";
|
237
|
+
assertEquals(Collections.singletonList(straightFlushTo9),
|
238
|
+
new Poker(Arrays.asList(straightFlushTo8, straightFlushTo9)).getBestHands());
|
162
239
|
}
|
163
240
|
}
|
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.2.1.
|
4
|
+
version: 2.2.1.149
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Katrina Owen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyzip
|
@@ -4081,6 +4081,10 @@ files:
|
|
4081
4081
|
- tracks/elisp/exercises/anagram/anagram-test.el
|
4082
4082
|
- tracks/elisp/exercises/anagram/anagram.el
|
4083
4083
|
- tracks/elisp/exercises/anagram/example.el
|
4084
|
+
- tracks/elisp/exercises/armstrong-numbers/README.md
|
4085
|
+
- tracks/elisp/exercises/armstrong-numbers/armstrong-numbers-test.el
|
4086
|
+
- tracks/elisp/exercises/armstrong-numbers/armstrong-numbers.el
|
4087
|
+
- tracks/elisp/exercises/armstrong-numbers/example.el
|
4084
4088
|
- tracks/elisp/exercises/atbash-cipher/README.md
|
4085
4089
|
- tracks/elisp/exercises/atbash-cipher/atbash-cipher-test.el
|
4086
4090
|
- tracks/elisp/exercises/atbash-cipher/atbash-cipher.el
|
@@ -4153,6 +4157,10 @@ files:
|
|
4153
4157
|
- tracks/elisp/exercises/roman-numerals/example.el
|
4154
4158
|
- tracks/elisp/exercises/roman-numerals/roman-numerals-test.el
|
4155
4159
|
- tracks/elisp/exercises/roman-numerals/roman-numerals.el
|
4160
|
+
- tracks/elisp/exercises/two-fer/README.md
|
4161
|
+
- tracks/elisp/exercises/two-fer/example.el
|
4162
|
+
- tracks/elisp/exercises/two-fer/two-fer-test.el
|
4163
|
+
- tracks/elisp/exercises/two-fer/two-fer.el
|
4156
4164
|
- tracks/elisp/exercises/word-count/README.md
|
4157
4165
|
- tracks/elisp/exercises/word-count/example.el
|
4158
4166
|
- tracks/elisp/exercises/word-count/word-count-test.el
|
@@ -7970,6 +7978,7 @@ files:
|
|
7970
7978
|
- tracks/java/exercises/poker/.meta/src/reference/java/Card.java
|
7971
7979
|
- tracks/java/exercises/poker/.meta/src/reference/java/Hand.java
|
7972
7980
|
- tracks/java/exercises/poker/.meta/src/reference/java/Poker.java
|
7981
|
+
- tracks/java/exercises/poker/.meta/version.txt
|
7973
7982
|
- tracks/java/exercises/poker/README.md
|
7974
7983
|
- tracks/java/exercises/poker/build.gradle
|
7975
7984
|
- tracks/java/exercises/poker/src/main/java/.keep
|