trackler 2.0.3.4 → 2.0.3.5
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/common/exercises/all-your-base/canonical-data.json +21 -21
- data/common/exercises/wordy/description.md +24 -38
- data/common/exercises/wordy/metadata.yml +1 -1
- data/lib/trackler/version.rb +1 -1
- data/tracks/c/config.json +10 -0
- data/tracks/c/exercises/meetup/makefile +15 -0
- data/tracks/c/exercises/meetup/src/example.c +139 -0
- data/tracks/c/exercises/meetup/src/example.h +7 -0
- data/tracks/c/exercises/meetup/test/test_meetup.c +223 -0
- data/tracks/c/exercises/meetup/test/vendor/unity.c +1300 -0
- data/tracks/c/exercises/meetup/test/vendor/unity.h +274 -0
- data/tracks/c/exercises/meetup/test/vendor/unity_internals.h +701 -0
- data/tracks/crystal/config.json +12 -0
- data/tracks/crystal/exercises/pascals-triangle/spec/pascals_triangle_spec.cr +30 -0
- data/tracks/crystal/exercises/pascals-triangle/src/example.cr +19 -0
- data/tracks/crystal/exercises/pascals-triangle/src/pascals_triangle.cr +1 -0
- data/tracks/crystal/exercises/run-length-encoding/spec/run_length_encoding_spec.cr +36 -0
- data/tracks/crystal/exercises/run-length-encoding/src/example.cr +40 -0
- data/tracks/crystal/src/generator/exercises/pascals-triangle.cr +58 -0
- data/tracks/crystal/src/generator/exercises/run_length_encoding.cr +42 -0
- data/tracks/javascript/config.json +8 -1
- data/tracks/javascript/exercises/all-your-base/all-your-base.spec.js +141 -0
- data/tracks/javascript/exercises/all-your-base/example.js +59 -0
- data/tracks/javascript/exercises/word-count/example.js +5 -5
- data/tracks/javascript/exercises/word-count/word-count.spec.js +23 -8
- data/tracks/lua/SETUP.md +60 -7
- data/tracks/lua/config.json +9 -0
- data/tracks/lua/exercises/say/example.lua +4 -4
- data/tracks/lua/exercises/variable-length-quantity/example.lua +36 -0
- data/tracks/lua/exercises/variable-length-quantity/variable-length-quantity_spec.lua +73 -0
- data/tracks/objective-c/.travis.yml +1 -0
- data/tracks/objective-c/config.json +8 -0
- data/tracks/objective-c/docs/TESTS.md +1 -1
- data/tracks/objective-c/exercises/transpose/TransposeExample.h +7 -0
- data/tracks/objective-c/exercises/transpose/TransposeExample.m +59 -0
- data/tracks/objective-c/exercises/transpose/TransposeTest.m +150 -0
- data/tracks/objective-c/xcodeProject/ObjectiveC.xcodeproj/project.pbxproj +18 -0
- data/tracks/ocaml/.gitignore +1 -0
- data/tracks/ocaml/tools/test-generator/Makefile +3 -0
- data/tracks/ocaml/tools/test-generator/src/controller.ml +11 -16
- data/tracks/ocaml/tools/test-generator/src/model.ml +4 -0
- data/tracks/ocaml/tools/test-generator/src/parser.ml +8 -1
- data/tracks/ocaml/tools/test-generator/src/special_cases.ml +5 -0
- data/tracks/ocaml/tools/test-generator/templates/all-your-base/template.ml +16 -0
- data/tracks/ocaml/tools/test-generator/test/model_test.ml +2 -0
- data/tracks/ocaml/tools/test-generator/test/parser_test.ml +8 -0
- data/tracks/perl5/docs/RESOURCES.md +57 -0
- data/tracks/perl5/exercises/hamming/Example.pm +7 -0
- data/tracks/perl5/exercises/hamming/hamming.t +17 -4
- data/tracks/perl5/exercises/rna-transcription/rna.t +4 -4
- data/tracks/perl6/.gitignore +2 -0
- data/tracks/perl6/config.json +5 -0
- data/tracks/perl6/exercises/phone-number/Example.pm +30 -0
- data/tracks/perl6/exercises/phone-number/cases.json +47 -0
- data/tracks/perl6/exercises/phone-number/phone.t +48 -0
- data/tracks/purescript/.gitignore +8 -0
- data/tracks/purescript/config.json +8 -3
- data/tracks/purescript/exercises/hello-world/bower.json +17 -0
- data/tracks/purescript/exercises/hello-world/examples/src/HelloWorld.purs +8 -0
- data/tracks/purescript/exercises/hello-world/src/HelloWorld.purs +6 -0
- data/tracks/purescript/exercises/hello-world/test/Main.purs +18 -0
- data/tracks/scala/exercises/leap/HINTS.md +4 -0
- data/tracks/scala/exercises/robot-name/HINTS.md +5 -0
- data/tracks/swift/docs/INSTALLATION.md +4 -1
- data/tracks/swift/exercises/accumulate/AccumulateTest.swift +1 -1
- data/tracks/swift/exercises/binary/BinaryExample.swift +4 -1
- data/tracks/swift/exercises/crypto-square/CryptoSquareExample.swift +3 -2
- data/tracks/swift/exercises/leap/LeapExample.swift +1 -3
- data/tracks/swift/exercises/pascals-triangle/PascalsTriangleTest.swift +1 -1
- data/tracks/swift/exercises/poker/PokerExample.swift +3 -3
- data/tracks/swift/exercises/poker/PokerTest.swift +38 -38
- data/tracks/swift/exercises/saddle-points/SaddlePointsTest.swift +1 -1
- data/tracks/swift/exercises/scrabble-score/ScrabbleScoreExample.swift +6 -3
- data/tracks/swift/exercises/series/SeriesTest.swift +1 -1
- data/tracks/swift/exercises/simple-linked-list/SimpleLinkedListExample.swift +2 -2
- data/tracks/swift/exercises/space-age/SpaceAgeExample.swift +10 -12
- data/tracks/swift/exercises/strain/StrainTest.swift +1 -1
- data/tracks/swift/exercises/tournament/TournamentExample.swift +2 -2
- data/tracks/swift/exercises/triangle/TriangleExample.swift +7 -3
- data/tracks/swift/exercises/wordy/WordyExample.swift +1 -2
- metadata +34 -3
- data/tracks/purescript/exercises/.keep +0 -0
@@ -0,0 +1,48 @@
|
|
1
|
+
#!/usr/bin/env perl6
|
2
|
+
use v6;
|
3
|
+
use Test;
|
4
|
+
use JSON::Tiny;
|
5
|
+
use lib my $path = IO::Path.new($?FILE).parent.path;
|
6
|
+
|
7
|
+
BEGIN {
|
8
|
+
plan 12;
|
9
|
+
use-ok %*ENV<EXERCISM> ?? 'Example' !! 'Phone', 'Module loaded';
|
10
|
+
|
11
|
+
unless $*PERL.compiler.version ~~ v2016.10+ {
|
12
|
+
sub bail-out {};
|
13
|
+
note 'Perl 6 ' ~ $*PERL.compiler.version ~ ' is not supported. Please use v2016.10 or newer';
|
14
|
+
skip-rest;
|
15
|
+
exit;
|
16
|
+
}
|
17
|
+
}
|
18
|
+
|
19
|
+
my %tests = from-json open("$path/cases.json").slurp-rest;
|
20
|
+
|
21
|
+
subtest 'number, area-code and pretty methods', {
|
22
|
+
plan 3;
|
23
|
+
ok Phone.can('number'), 'can Phone.number';
|
24
|
+
ok Phone.can('area-code'), 'can Phone.area-code';
|
25
|
+
ok Phone.can('pretty'), 'can Phone.pretty';
|
26
|
+
} or bail-out 'Missing method(s).';
|
27
|
+
|
28
|
+
for @(%tests<valid>) {
|
29
|
+
my $phone = Phone.new(number => .<input>);
|
30
|
+
my $msg = 'for ' ~ .<test>;
|
31
|
+
is $phone.number, .<number>, "number $msg";
|
32
|
+
is $phone.area-code, .<area-code>, "area-code $msg";
|
33
|
+
is $phone.pretty, .<pretty>, "pretty $msg";
|
34
|
+
}
|
35
|
+
|
36
|
+
my $exception;
|
37
|
+
if %*ENV<EXERCISM> {
|
38
|
+
$exception = X::Phone::Invalid;
|
39
|
+
}
|
40
|
+
else {
|
41
|
+
todo 'Optional Exception Tests'; # Remove this line for invalid input tests
|
42
|
+
$exception = Exception; # Change this if you wish to specify a specific exception
|
43
|
+
}
|
44
|
+
|
45
|
+
subtest 'Throw exceptions for invalid input', {
|
46
|
+
plan 5;
|
47
|
+
throws-like {Phone.new(number => .<input>)}, $exception, .<test> for @(%tests<invalid>);
|
48
|
+
}
|
@@ -3,9 +3,14 @@
|
|
3
3
|
"language": "PureScript",
|
4
4
|
"repository": "https://github.com/exercism/xpurescript",
|
5
5
|
"active": false,
|
6
|
-
"
|
7
|
-
|
8
|
-
|
6
|
+
"exercises": [
|
7
|
+
{
|
8
|
+
"slug": "hello-world",
|
9
|
+
"difficulty": 1,
|
10
|
+
"topics": [
|
11
|
+
"maybe"
|
12
|
+
]
|
13
|
+
}
|
9
14
|
],
|
10
15
|
"deprecated": [
|
11
16
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
{
|
2
|
+
"name": "hello-world",
|
3
|
+
"ignore": [
|
4
|
+
"**/.*",
|
5
|
+
"node_modules",
|
6
|
+
"bower_components",
|
7
|
+
"output"
|
8
|
+
],
|
9
|
+
"dependencies": {
|
10
|
+
"purescript-prelude": "^2.1.0",
|
11
|
+
"purescript-console": "^2.0.0"
|
12
|
+
},
|
13
|
+
"devDependencies": {
|
14
|
+
"purescript-psci-support": "^2.0.0",
|
15
|
+
"purescript-test-unit": "^10.0.1"
|
16
|
+
}
|
17
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Test.Main where
|
2
|
+
|
3
|
+
import Prelude
|
4
|
+
import Test.Unit (suite, test)
|
5
|
+
import Test.Unit.Main (runTest)
|
6
|
+
import Test.Unit.Assert as Assert
|
7
|
+
import Data.Maybe (Maybe(Just, Nothing))
|
8
|
+
import HelloWorld (helloWorld)
|
9
|
+
|
10
|
+
|
11
|
+
main = runTest do
|
12
|
+
suite "HelloWorld.helloWorld" do
|
13
|
+
test "Hello with no name" do
|
14
|
+
Assert.equal "Hello, World!" (helloWorld Nothing)
|
15
|
+
test "Hello to a sample name" do
|
16
|
+
Assert.equal "Hello, Alice!" (helloWorld (Just "Alice"))
|
17
|
+
test "Hello to another sample name" do
|
18
|
+
Assert.equal "Hello, Bob!" (helloWorld (Just "Bob"))
|
@@ -0,0 +1,4 @@
|
|
1
|
+
## Hints
|
2
|
+
Try to avoid code repetition, use private helper functions if you can.
|
3
|
+
|
4
|
+
And you might consider using a single `Boolean` expression instead of `if-else` for better readability. See [here](http://cs.wellesley.edu/~cs111/spring00/lectures/boolean-simplification.html) on how this could be done (the link is for Java, but of course the logic is valid for Scala, too).
|
@@ -0,0 +1,5 @@
|
|
1
|
+
## Hints
|
2
|
+
Make sure your solution is general enough to be easily scalable for longer names containing more letters and digits. This usually makes for better code quality, too.
|
3
|
+
|
4
|
+
Suggestion (this is not explicitly tested):
|
5
|
+
To make sure you always have a unique name you could implement your own cache or use a `Stream` with its built-in cache.
|
@@ -1,6 +1,9 @@
|
|
1
1
|
## Installing Swift
|
2
2
|
|
3
|
-
In order to use Swift, you must be running Xcode version 8.0 or greater
|
3
|
+
In order to use Swift, you must be running Xcode version 8.0 or greater.
|
4
4
|
|
5
|
+
The current release version is available at the [Mac App Store](https://itunes.apple.com/us/app/xcode/id497799835?mt=12).
|
6
|
+
|
7
|
+
Additional versions of Xcode (including the most recent beta) are available at [Apple's developer center](https://developer.apple.com/xcode/downloads/).
|
5
8
|
|
6
9
|
All exercises tested with Xcode 8.0 using Swift 3
|
@@ -16,7 +16,7 @@ private extension String {
|
|
16
16
|
}
|
17
17
|
|
18
18
|
private extension XCTest {
|
19
|
-
func XCTAssertEqualMultiArray(_ aArray1:
|
19
|
+
func XCTAssertEqualMultiArray(_ aArray1: [[String]], _ aArray2: [[String]]) {
|
20
20
|
XCTAssertEqual(Array(aArray1.joined()), Array(aArray2.joined()))
|
21
21
|
}
|
22
22
|
}
|
@@ -8,7 +8,10 @@ extension Int {
|
|
8
8
|
}
|
9
9
|
struct Binary {
|
10
10
|
private var UIntValue: UInt = 0
|
11
|
-
fileprivate var toDecimal: Int {
|
11
|
+
fileprivate var toDecimal: Int {
|
12
|
+
return Int(UIntValue)
|
13
|
+
}
|
14
|
+
|
12
15
|
private func bi2Uint(_ input: String) -> UInt? {
|
13
16
|
let orderedInput = Array(input.characters.reversed())
|
14
17
|
var tempUInt: UInt = 0
|
@@ -64,12 +64,13 @@ struct Crypto {
|
|
64
64
|
}
|
65
65
|
|
66
66
|
var normalizeCiphertext: String {
|
67
|
-
|
68
67
|
let sizeNormal: Int = (ciphertext.characters.count == self.size * self.size ) ? getSquareSize(self.ciphertext) : getSquareSize(self.ciphertext, floorNoCeling: true)
|
69
68
|
|
70
69
|
return segmentSorter(ciphertext, spacing: sizeNormal).joined(separator: " ")
|
71
70
|
}
|
72
|
-
var plaintextSegments: [String] {
|
71
|
+
var plaintextSegments: [String] {
|
72
|
+
return segmentSorter(self.normalizePlaintext, spacing: self.size)
|
73
|
+
}
|
73
74
|
var textValue: String = ""
|
74
75
|
var normalizePlaintext: String = ""
|
75
76
|
var size: Int = 0
|
@@ -3,7 +3,7 @@
|
|
3
3
|
#endif
|
4
4
|
|
5
5
|
private extension XCTest {
|
6
|
-
func XCTAssertEqualMultiArray(_ aArray1:
|
6
|
+
func XCTAssertEqualMultiArray(_ aArray1: [[Int]], _ aArray2: [[Int]]) {
|
7
7
|
XCTAssertEqual(Array(aArray1.joined()), Array(aArray2.joined()))
|
8
8
|
}
|
9
9
|
}
|
@@ -57,7 +57,7 @@ enum HandRank {
|
|
57
57
|
}
|
58
58
|
}
|
59
59
|
|
60
|
-
static func parsePairs(_ inputHand: PokerHand)->[(rank: Rank, count: Int)] {
|
60
|
+
static func parsePairs(_ inputHand: PokerHand) -> [(rank: Rank, count: Int)] {
|
61
61
|
let ranks = inputHand.hand.map({$0.rank})
|
62
62
|
let rankSet = Set(ranks)
|
63
63
|
var toReturn = [Rank:Int]()
|
@@ -73,7 +73,7 @@ enum HandRank {
|
|
73
73
|
return result
|
74
74
|
}
|
75
75
|
|
76
|
-
static func isFlush(_ inputHand: PokerHand)->(bool: Bool, suit: Suit) {
|
76
|
+
static func isFlush(_ inputHand: PokerHand) -> (bool: Bool, suit: Suit) {
|
77
77
|
let suits = inputHand.hand.map({$0.suit})
|
78
78
|
let first = suits[0]
|
79
79
|
for each in suits {
|
@@ -82,7 +82,7 @@ enum HandRank {
|
|
82
82
|
return (true, first)
|
83
83
|
}
|
84
84
|
|
85
|
-
static func isStraight(_ inputHand: PokerHand)->(bool: Bool, highest: Rank) {
|
85
|
+
static func isStraight(_ inputHand: PokerHand) -> (bool: Bool, highest: Rank) {
|
86
86
|
let sorted = inputHand.hand.sorted(by: {$0.rank < $1.rank})
|
87
87
|
let first = sorted[0].rank.rawValue
|
88
88
|
for (index, each) in sorted.enumerated() {
|
@@ -58,8 +58,8 @@ class PokerTest: XCTestCase {
|
|
58
58
|
hands: [
|
59
59
|
"4♢ 3♤ 4♤ J♤ K♤",
|
60
60
|
"A♡ K♡ J♢ 10♧ 9♡",
|
61
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
62
|
-
|
61
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
62
|
+
],
|
63
63
|
best: "2♢ 8♡ 5♢ 2♡ 8♧"
|
64
64
|
),
|
65
65
|
(
|
@@ -67,8 +67,8 @@ class PokerTest: XCTestCase {
|
|
67
67
|
hands: [
|
68
68
|
"4♢ J♧ 4♤ J♤ K♤",
|
69
69
|
"A♡ K♡ J♢ 10♧ 9♡",
|
70
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
71
|
-
|
70
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
71
|
+
],
|
72
72
|
best: "4♢ J♧ 4♤ J♤ K♤"
|
73
73
|
),
|
74
74
|
(
|
@@ -76,8 +76,8 @@ class PokerTest: XCTestCase {
|
|
76
76
|
hands: [
|
77
77
|
"4♢ J♧ 4♤ J♤ K♤",
|
78
78
|
"A♡ K♡ J♢ 10♧ 9♡",
|
79
|
-
"3♢ J♡ 5♢ 3♡ J♢"
|
80
|
-
|
79
|
+
"3♢ J♡ 5♢ 3♡ J♢"
|
80
|
+
],
|
81
81
|
best: "4♢ J♧ 4♤ J♤ K♤"
|
82
82
|
),
|
83
83
|
(
|
@@ -85,8 +85,8 @@ class PokerTest: XCTestCase {
|
|
85
85
|
hands: [
|
86
86
|
"4♢ J♧ 4♤ J♤ 2♤",
|
87
87
|
"A♡ K♡ J♢ 10♧ 9♡",
|
88
|
-
"4♧ J♡ 5♢ 4♡ J♢"
|
89
|
-
|
88
|
+
"4♧ J♡ 5♢ 4♡ J♢"
|
89
|
+
],
|
90
90
|
best: "4♧ J♡ 5♢ 4♡ J♢"
|
91
91
|
),
|
92
92
|
(
|
@@ -95,8 +95,8 @@ class PokerTest: XCTestCase {
|
|
95
95
|
"4♢ 3♤ 4♤ J♤ K♤",
|
96
96
|
"A♡ K♡ J♢ 10♧ 9♡",
|
97
97
|
"3♡ 8♡ 3♢ 3♧ 8♧",
|
98
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
99
|
-
|
98
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
99
|
+
],
|
100
100
|
best: "3♡ 8♡ 3♢ 3♧ 8♧"
|
101
101
|
),
|
102
102
|
(
|
@@ -105,8 +105,8 @@ class PokerTest: XCTestCase {
|
|
105
105
|
"4♢ 3♤ 4♤ J♤ 4♡",
|
106
106
|
"A♡ K♡ J♢ 10♧ 9♡",
|
107
107
|
"3♢ 8♡ 3♡ 3♧ 9♧",
|
108
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
109
|
-
|
108
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
109
|
+
],
|
110
110
|
best: "4♢ 3♤ 4♤ J♤ 4♡"
|
111
111
|
),
|
112
112
|
(
|
@@ -115,8 +115,8 @@ class PokerTest: XCTestCase {
|
|
115
115
|
"4♢ 3♤ 4♤ J♤ K♤",
|
116
116
|
"Q♡ K♡ J♢ 10♧ 9♡",
|
117
117
|
"3♡ 8♡ 3♢ 3♧ 9♧",
|
118
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
119
|
-
|
118
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
119
|
+
],
|
120
120
|
best: "Q♡ K♡ J♢ 10♧ 9♡"
|
121
121
|
),
|
122
122
|
(
|
@@ -125,8 +125,8 @@ class PokerTest: XCTestCase {
|
|
125
125
|
"4♢ 3♤ 4♤ J♤ K♤",
|
126
126
|
"2♤ 3♡ A♤ 5♤ 4♤",
|
127
127
|
"3♢ 8♡ 3♡ 3♧ 9♧",
|
128
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
129
|
-
|
128
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
129
|
+
],
|
130
130
|
best: "2♤ 3♡ A♤ 5♤ 4♤"
|
131
131
|
),
|
132
132
|
(
|
@@ -135,8 +135,8 @@ class PokerTest: XCTestCase {
|
|
135
135
|
"4♢ 3♤ 4♤ J♤ K♤",
|
136
136
|
"Q♡ K♡ J♢ 10♧ 9♡",
|
137
137
|
"A♢ K♧ 10♢ J♢ Q♢",
|
138
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
139
|
-
|
138
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
139
|
+
],
|
140
140
|
best: "A♢ K♧ 10♢ J♢ Q♢"
|
141
141
|
),
|
142
142
|
(
|
@@ -145,8 +145,8 @@ class PokerTest: XCTestCase {
|
|
145
145
|
"4♤ 3♤ 8♤ J♤ K♤",
|
146
146
|
"Q♡ K♡ J♢ 10♧ 9♡",
|
147
147
|
"3♢ 8♡ 3♢ 3♧ 9♧",
|
148
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
149
|
-
|
148
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
149
|
+
],
|
150
150
|
best: "4♤ 3♤ 8♤ J♤ K♤"
|
151
151
|
),
|
152
152
|
(
|
@@ -155,8 +155,8 @@ class PokerTest: XCTestCase {
|
|
155
155
|
"4♤ 3♤ 8♤ J♤ K♤",
|
156
156
|
"Q♡ K♡ J♢ 10♧ 9♡",
|
157
157
|
"3♢ 8♢ A♢ 2♢ 7♢",
|
158
|
-
"2♢ 8♡ 5♢ 2♡ 8♧"
|
159
|
-
|
158
|
+
"2♢ 8♡ 5♢ 2♡ 8♧"
|
159
|
+
],
|
160
160
|
best: "3♢ 8♢ A♢ 2♢ 7♢"
|
161
161
|
),
|
162
162
|
(
|
@@ -165,8 +165,8 @@ class PokerTest: XCTestCase {
|
|
165
165
|
"4♤ 3♤ 8♤ J♤ K♤",
|
166
166
|
"2♢ 8♡ 8♢ 2♡ 8♧",
|
167
167
|
"Q♡ K♡ J♢ 10♧ 9♡",
|
168
|
-
"3♡ A♡ 3♢ 3♧ A♧"
|
169
|
-
|
168
|
+
"3♡ A♡ 3♢ 3♧ A♧"
|
169
|
+
],
|
170
170
|
best: "2♢ 8♡ 8♢ 2♡ 8♧"
|
171
171
|
),
|
172
172
|
(
|
@@ -175,8 +175,8 @@ class PokerTest: XCTestCase {
|
|
175
175
|
"4♤ 3♤ 8♤ J♤ K♤",
|
176
176
|
"2♢ 8♡ 8♢ 2♡ 8♧",
|
177
177
|
"5♡ 5♢ A♤ 5♧ A♢",
|
178
|
-
"3♡ A♡ 3♢ 3♧ A♧"
|
179
|
-
|
178
|
+
"3♡ A♡ 3♢ 3♧ A♧"
|
179
|
+
],
|
180
180
|
best: "2♢ 8♡ 8♢ 2♡ 8♧"
|
181
181
|
),
|
182
182
|
(
|
@@ -185,8 +185,8 @@ class PokerTest: XCTestCase {
|
|
185
185
|
"4♤ 5♤ 8♤ J♤ K♤",
|
186
186
|
"2♢ 8♡ 8♢ 2♡ 8♧",
|
187
187
|
"Q♡ K♡ J♢ 10♧ 9♡",
|
188
|
-
"3♢ 3♡ 3♤ 3♧ A♧"
|
189
|
-
|
188
|
+
"3♢ 3♡ 3♤ 3♧ A♧"
|
189
|
+
],
|
190
190
|
best: "3♢ 3♡ 3♤ 3♧ A♧"
|
191
191
|
),
|
192
192
|
(
|
@@ -195,8 +195,8 @@ class PokerTest: XCTestCase {
|
|
195
195
|
"4♤ 5♤ 8♤ J♤ K♤",
|
196
196
|
"2♢ 2♧ 8♢ 2♡ 2♤",
|
197
197
|
"Q♡ K♡ J♢ 10♧ 9♡",
|
198
|
-
"3♢ 3♡ 3♤ 3♧ A♧"
|
199
|
-
|
198
|
+
"3♢ 3♡ 3♤ 3♧ A♧"
|
199
|
+
],
|
200
200
|
best: "3♢ 3♡ 3♤ 3♧ A♧"
|
201
201
|
),
|
202
202
|
(
|
@@ -205,8 +205,8 @@ class PokerTest: XCTestCase {
|
|
205
205
|
"4♤ 4♢ 4♡ 4♧ K♤",
|
206
206
|
"2♢ 8♡ 8♢ 2♡ 8♧",
|
207
207
|
"Q♡ K♡ 8♡ 10♡ 9♡",
|
208
|
-
"2♤ 3♤ A♤ 5♤ 4♤"
|
209
|
-
|
208
|
+
"2♤ 3♤ A♤ 5♤ 4♤"
|
209
|
+
],
|
210
210
|
best: "2♤ 3♤ A♤ 5♤ 4♤"
|
211
211
|
),
|
212
212
|
(
|
@@ -215,8 +215,8 @@ class PokerTest: XCTestCase {
|
|
215
215
|
"4♤ 5♤ 8♤ J♤ K♤",
|
216
216
|
"2♢ 8♡ 8♢ 2♡ 8♧",
|
217
217
|
"Q♡ K♡ J♡ 10♡ 9♡",
|
218
|
-
"Q♢ K♢ J♢ 10♢ A♢"
|
219
|
-
|
218
|
+
"Q♢ K♢ J♢ 10♢ A♢"
|
219
|
+
],
|
220
220
|
best: "Q♢ K♢ J♢ 10♢ A♢"
|
221
221
|
),
|
222
222
|
(
|
@@ -230,10 +230,10 @@ class PokerTest: XCTestCase {
|
|
230
230
|
"A♡ 2♡ 3♡ 4♡ 5♡",
|
231
231
|
"A♤ 2♤ 3♤ 4♤ 5♤",
|
232
232
|
"5♧ 4♧ 3♧ 2♧ A♧",
|
233
|
-
"A♢ 2♢ 6♢ 4♢ 5♢"
|
234
|
-
|
233
|
+
"A♢ 2♢ 6♢ 4♢ 5♢"
|
234
|
+
],
|
235
235
|
best: "A♤ 2♤ 3♤ 4♤ 5♤"
|
236
|
-
)
|
236
|
+
)
|
237
237
|
]
|
238
238
|
|
239
239
|
invalidTestCases =
|
@@ -277,7 +277,7 @@ class PokerTest: XCTestCase {
|
|
277
277
|
(
|
278
278
|
name: "double suits after rank",
|
279
279
|
hand: "2♡ 3♡ 5♡♡ 8♡ 9♡"
|
280
|
-
)
|
280
|
+
)
|
281
281
|
]
|
282
282
|
|
283
283
|
}
|