Rummikub 2
Statement
Goal
This is part 2 of the two-part Rummikub puzzle. In part 1 (www.codingame.com/training/medium/rummikub-1), the basic dynamics are introduced. Part 2 works as a stand-alone puzzle, but for simpler examples it is advised to first solve part 1.Rummikub is a game played with tiles numbered 1-13 in four colors:
You will get a table with valid runs and sets (rows), and one tile (goalTile) to put on the table in as few actions as possible. You must output all actions needed to put the tile on the table (becoming part of a valid run or set), and the new rows of the table after those actions.
Actions
One action can be one of:
•
•
•
Apply the actions according to the following rules:
• Each
• After each
• Your final action is always to
• A
You are allowed to split one valid run into two valid runs by a
Some examples of valid actions and their result on table rows:
Starting table
ACTION 1:
Table after action 1:
ACTION 2:
ACTION 3:
Table after actions 2 and 3:
Runs are always displayed from low to high value. Sets are always displayed in the order
Joker
In some cases, there can be a Joker (denoted as
Action selection and order
When different series of actions would lead to the same output, follow the rules below:
1. Always select the least number of actions;
2.
3.
4. Never
5. If needed,
Note
The real Rummikub allows for more complex actions (multiple
Two important consequences of these rules (hint): 1) It is never possible to create a new set. It is only possible to make a set longer or shorter. 2) It is never possible to create a new run, except if it is created by splitting one run into multiple smaller valid runs.
CREDITS to Cedricdd for coming up with several of the cases
Input
Line 1: string goalTile: non-Joker tile to put on the table. A non-Joker tile is a combination of a numeric value (1-13) and a single letter indicating the color (one of R , G , B or Y ) .
Line 2: integer nrow: number of rows (sets or runs) on the table.
Next nrow lines: row: the rowid (1-nrow), followed by space separated strings representing tiles (a non-Joker tile or a Joker tile, indicated byJ ), that form a valid run or set.
Line 2: integer nrow: number of rows (sets or runs) on the table.
Next nrow lines: row: the rowid (1-nrow), followed by space separated strings representing tiles (a non-Joker tile or a Joker tile, indicated by
Output
naction lines: the actions needed to put goalTile on the table (one action per line), in the format: PUT tile rowid, TAKE tile rowid or COMBINE rowid1 rowid2.
nrow_new lines: the new rows that are formed after putting goalTile on the table (one row per line). The new rows have either their original rowid, or a new rowid (if it was a new row as a result from splitting an original row). Rows that became unused due to aCOMBINE action should be skipped.
nrow_new lines: the new rows that are formed after putting goalTile on the table (one row per line). The new rows have either their original rowid, or a new rowid (if it was a new row as a result from splitting an original row). Rows that became unused due to a
Constraints
There is never more than 1 J oker.
Cases have been constructed such that there is always only one solution after following the action selection and order rules.
Cases have been constructed such that there is always only one solution after following the action selection and order rules.
Example
Input
3G 5 1 4G 4R 4Y 2 6G 6R 6Y 3 4B 5B 6B 7B 8B 9B 4 7G 8G 9G 5 5G 5R 5Y
Output
TAKE 4B 3 PUT 4B 1 TAKE 5B 3 PUT 5B 5 TAKE 6B 3 PUT 6B 2 TAKE 6G 2 PUT 6G 4 TAKE 5G 5 PUT 5G 4 TAKE 4G 1 PUT 4G 4 PUT 3G 4 1 4B 4R 4Y 2 6B 6R 6Y 3 7B 8B 9B 4 3G 4G 5G 6G 7G 8G 9G 5 5B 5R 5Y
Tags
Sets, Recursion, Simulation
Difficulty
Hard
Test cases
Multiple takes Test
Input
3G
5
1 4G 4R 4Y
2 6G 6R 6Y
3 4B 5B 6B 7B 8B 9B
4 7G 8G 9G
5 5G 5R 5Y
Output
TAKE 4B 3
PUT 4B 1
TAKE 5B 3
PUT 5B 5
TAKE 6B 3
PUT 6B 2
TAKE 6G 2
PUT 6G 4
TAKE 5G 5
PUT 5G 4
TAKE 4G 1
PUT 4G 4
PUT 3G 4
1 4B 4R 4Y
2 6B 6R 6Y
3 7B 8B 9B
4 3G 4G 5G 6G 7G 8G 9G
5 5B 5R 5Y
Validator 1 Validator
Input
9R
5
1 8G 8R 8Y
2 7G 7R 7Y
3 6G 6R 6Y
4 3R 4R 5R
5 3B 4B 5B 6B 7B 8B
Output
TAKE 8B 5
PUT 8B 1
TAKE 7B 5
PUT 7B 2
TAKE 6B 5
PUT 6B 3
TAKE 6R 3
PUT 6R 4
TAKE 7R 2
PUT 7R 4
TAKE 8R 1
PUT 8R 4
PUT 9R 4
1 8B 8G 8Y
2 7B 7G 7Y
3 6B 6G 6Y
4 3R 4R 5R 6R 7R 8R 9R
5 3B 4B 5B
A lot of actions Test
Input
1G
10
1 3B 3G 3R 3Y
2 9B 9G 9R 9Y
3 7B 7G 7R 7Y
4 5B 5G 5R 5Y
5 4B 4G 4R 4Y
6 2B 2G 2R 2Y
7 8B 8G 8R 8Y
8 6B 6G 6R 6Y
9 11G 12G 13G
10 10B 10G 10R 10Y
Output
TAKE 10G 10
PUT 10G 9
TAKE 9G 2
PUT 9G 9
TAKE 8G 7
PUT 8G 9
TAKE 7G 3
PUT 7G 9
TAKE 6G 8
PUT 6G 9
TAKE 5G 4
PUT 5G 9
TAKE 4G 5
PUT 4G 9
TAKE 3G 1
PUT 3G 9
TAKE 2G 6
PUT 2G 9
PUT 1G 9
1 3B 3R 3Y
2 9B 9R 9Y
3 7B 7R 7Y
4 5B 5R 5Y
5 4B 4R 4Y
6 2B 2R 2Y
7 8B 8R 8Y
8 6B 6R 6Y
9 1G 2G 3G 4G 5G 6G 7G 8G 9G 10G 11G 12G 13G
10 10B 10R 10Y
Validator 2 Validator
Input
13Y
10
1 1Y 2Y 3Y
2 11B 11G 11R 11Y
3 12B 12G 12R 12Y
4 4B 4G 4R 4Y
5 5B 5G 5R 5Y
6 6B 6G 6R 6Y
7 7B 7G 7R 7Y
8 8B 8G 8R 8Y
9 9B 9G 9R 9Y
10 10B 10G 10R 10Y
Output
TAKE 4Y 4
PUT 4Y 1
TAKE 5Y 5
PUT 5Y 1
TAKE 6Y 6
PUT 6Y 1
TAKE 7Y 7
PUT 7Y 1
TAKE 8Y 8
PUT 8Y 1
TAKE 9Y 9
PUT 9Y 1
TAKE 10Y 10
PUT 10Y 1
TAKE 11Y 2
PUT 11Y 1
TAKE 12Y 3
PUT 12Y 1
PUT 13Y 1
1 1Y 2Y 3Y 4Y 5Y 6Y 7Y 8Y 9Y 10Y 11Y 12Y 13Y
2 11B 11G 11R
3 12B 12G 12R
4 4B 4G 4R
5 5B 5G 5R
6 6B 6G 6R
7 7B 7G 7R
8 8B 8G 8R
9 9B 9G 9R
10 10B 10G 10R
A lot of actions? Test
Input
1G
11
1 4B 4G 4R 4Y
2 6B 6G 6R 6Y
3 10B 10G 10R 10Y
4 2B 2G 2R 2Y
5 11G 12G 13G
6 1B 1R 1Y
7 3B 3G 3R 3Y
8 8B 8G 8R 8Y
9 5B 5G 5R 5Y
10 7B 7G 7R 7Y
11 9B 9G 9R 9Y
Output
PUT 1G 6
1 4B 4G 4R 4Y
2 6B 6G 6R 6Y
3 10B 10G 10R 10Y
4 2B 2G 2R 2Y
5 11G 12G 13G
6 1B 1G 1R 1Y
7 3B 3G 3R 3Y
8 8B 8G 8R 8Y
9 5B 5G 5R 5Y
10 7B 7G 7R 7Y
11 9B 9G 9R 9Y
Validator 3 Validator
Input
13Y
11
1 1Y 2Y 3Y
2 11B 11G 11R 11Y
3 12B 12G 12R 12Y
4 4B 4G 4R 4Y
5 5B 5G 5R 5Y
6 6B 6G 6R 6Y
7 7B 7G 7R 7Y
8 8B 8G 8R 8Y
9 9B 9G 9R 9Y
10 10B 10G 10R 10Y
11 13B 13G 13R
Output
PUT 13Y 11
1 1Y 2Y 3Y
2 11B 11G 11R 11Y
3 12B 12G 12R 12Y
4 4B 4G 4R 4Y
5 5B 5G 5R 5Y
6 6B 6G 6R 6Y
7 7B 7G 7R 7Y
8 8B 8G 8R 8Y
9 9B 9G 9R 9Y
10 10B 10G 10R 10Y
11 13B 13G 13R 13Y
A lot is irrelevant Test
Input
9R
18
1 7G 7R 7Y
2 10Y 11Y 12Y
3 6G 6R 6Y
4 5G 6G 7G 8G 9G 10G 11G
5 3B 4B 5B 6B 7B 8B
6 1Y 2Y 3Y 4Y
7 2B 2G 2R 2Y
8 4Y 5Y 6Y
9 7R 8R 9R
10 7Y 8Y 9Y
11 3B 3G 3R 3Y
12 10Y 11Y 12Y 13Y
13 3R 4R 5R
14 10B 11B 12B 13B
15 1B 1G 1R 1Y
16 10G 11G 12G 13G
17 8G 8R 8Y
18 13B 13G 13Y
Output
TAKE 8B 5
PUT 8B 17
TAKE 7B 5
PUT 7B 1
TAKE 6B 5
PUT 6B 3
TAKE 6R 3
PUT 6R 13
TAKE 7R 1
PUT 7R 13
TAKE 8R 17
PUT 8R 13
PUT 9R 13
1 7B 7G 7Y
2 10Y 11Y 12Y
3 6B 6G 6Y
4 5G 6G 7G 8G 9G 10G 11G
5 3B 4B 5B
6 1Y 2Y 3Y 4Y
7 2B 2G 2R 2Y
8 4Y 5Y 6Y
9 7R 8R 9R
10 7Y 8Y 9Y
11 3B 3G 3R 3Y
12 10Y 11Y 12Y 13Y
13 3R 4R 5R 6R 7R 8R 9R
14 10B 11B 12B 13B
15 1B 1G 1R 1Y
16 10G 11G 12G 13G
17 8B 8G 8Y
18 13B 13G 13Y
Validator 4 Validator
Input
3G
19
1 13B 13G 13Y
2 4G 4R 4Y
3 6G 6R 6Y
4 4B 5B 6B 7B 8B 9B
5 1B 1G 1R 1Y
6 3B 3G 3R 3Y
7 4R 5R 6R
8 7R 8R 9R
9 10R 11R 12R 13R
10 7R 8R 9R
11 7G 8G 9G
12 10R 11R 12R 13R
13 1Y 2Y 3Y 4Y
14 2B 2G 2R 2Y
15 5Y 6Y 7Y 8Y 9Y 10Y 11Y
16 10B 11B 12B 13B
17 10G 11G 12G 13G
18 5G 5R 5Y
19 10G 11G 12G
Output
TAKE 4B 4
PUT 4B 2
TAKE 5B 4
PUT 5B 18
TAKE 6B 4
PUT 6B 3
TAKE 6G 3
PUT 6G 11
TAKE 5G 18
PUT 5G 11
TAKE 4G 2
PUT 4G 11
PUT 3G 11
1 13B 13G 13Y
2 4B 4R 4Y
3 6B 6R 6Y
4 7B 8B 9B
5 1B 1G 1R 1Y
6 3B 3G 3R 3Y
7 4R 5R 6R
8 7R 8R 9R
9 10R 11R 12R 13R
10 7R 8R 9R
11 3G 4G 5G 6G 7G 8G 9G
12 10R 11R 12R 13R
13 1Y 2Y 3Y 4Y
14 2B 2G 2R 2Y
15 5Y 6Y 7Y 8Y 9Y 10Y 11Y
16 10B 11B 12B 13B
17 10G 11G 12G 13G
18 5B 5R 5Y
19 10G 11G 12G
A lot of actions and extra Test
Input
13Y
17
1 8B 8G 8R 8Y
2 10B 10G 10R 10Y
3 12B 12G 12R 12Y
4 6G 7G 8G
5 4B 4G 4Y
6 9G 10G 11G 12G
7 6B 6G 6R 6Y
8 9B 9G 9R 9Y
9 7R 8R 9R
10 2B 3B 4B 5B
11 5B 5G 5R 5Y
12 2R 3R 4R
13 7B 7G 7Y
14 6B 7B 8B
15 11B 11G 11R 11Y
16 1Y 2Y 3Y
17 4R 5R 6R 7R
Output
TAKE 7R 17
PUT 7R 13
COMBINE 9 17
TAKE 4R 9
PUT 4R 5
TAKE 4Y 5
PUT 4Y 16
TAKE 5Y 11
PUT 5Y 16
TAKE 6Y 7
PUT 6Y 16
TAKE 7Y 13
PUT 7Y 16
TAKE 8Y 1
PUT 8Y 16
TAKE 9Y 8
PUT 9Y 16
TAKE 10Y 2
PUT 10Y 16
TAKE 11Y 15
PUT 11Y 16
TAKE 12Y 3
PUT 12Y 16
PUT 13Y 16
1 8B 8G 8R
2 10B 10G 10R
3 12B 12G 12R
4 6G 7G 8G
5 4B 4G 4R
6 9G 10G 11G 12G
7 6B 6G 6R
8 9B 9G 9R
9 5R 6R 7R 8R 9R
10 2B 3B 4B 5B
11 5B 5G 5R
12 2R 3R 4R
13 7B 7G 7R
14 6B 7B 8B
15 11B 11G 11R
16 1Y 2Y 3Y 4Y 5Y 6Y 7Y 8Y 9Y 10Y 11Y 12Y 13Y
Validator 5 Validator
Input
1Y
17
1 6B 6G 6R 6Y
2 4B 4G 4R 4Y
3 2B 2G 2R 2Y
4 6G 7G 8G
5 10B 10G 10Y
6 2G 3G 4G 5G
7 8B 8G 8R 8Y
8 5B 5G 5R 5Y
9 5R 6R 7R
10 9B 10B 11B 12B
11 9B 9G 9R 9Y
12 10R 11R 12R
13 7B 7G 7Y
14 6B 7B 8B
15 3B 3G 3R 3Y
16 11Y 12Y 13Y
17 7R 8R 9R 10R
Output
TAKE 7R 17
PUT 7R 13
COMBINE 9 17
TAKE 10R 9
PUT 10R 5
TAKE 10Y 5
PUT 10Y 16
TAKE 9Y 11
PUT 9Y 16
TAKE 8Y 7
PUT 8Y 16
TAKE 7Y 13
PUT 7Y 16
TAKE 6Y 1
PUT 6Y 16
TAKE 5Y 8
PUT 5Y 16
TAKE 4Y 2
PUT 4Y 16
TAKE 3Y 15
PUT 3Y 16
TAKE 2Y 3
PUT 2Y 16
PUT 1Y 16
1 6B 6G 6R
2 4B 4G 4R
3 2B 2G 2R
4 6G 7G 8G
5 10B 10G 10R
6 2G 3G 4G 5G
7 8B 8G 8R
8 5B 5G 5R
9 5R 6R 7R 8R 9R
10 9B 10B 11B 12B
11 9B 9G 9R
12 10R 11R 12R
13 7B 7G 7R
14 6B 7B 8B
15 3B 3G 3R
16 1Y 2Y 3Y 4Y 5Y 6Y 7Y 8Y 9Y 10Y 11Y 12Y 13Y
Joker Test
Input
8R
1
1 7R J 9R
Output
PUT 8R 1
1 7R 8R 9R J
Validator 6 Validator
Input
6G
1
1 5G J 7G
Output
PUT 6G 1
1 5G 6G 7G J
Joker in set Test
Input
13B
3
1 4G 4R J
2 1Y 2Y 3Y 4Y 5Y 6Y 7Y
3 9B 10B 11B
Output
TAKE 4Y 2
PUT 4Y 1
TAKE J 1
PUT J 3
PUT 13B 3
1 4G 4R 4Y
2 1Y 2Y 3Y
3 9B 10B 11B J 13B
4 5Y 6Y 7Y
Validator 7 Validator
Input
10Y
3
1 5G 5Y J
2 2B 3B 4B 5B 6B 7B 8B
3 6Y 7Y 8Y
Output
TAKE 5B 2
PUT 5B 1
TAKE J 1
PUT J 3
PUT 10Y 3
1 5B 5G 5Y
2 2B 3B 4B
3 6Y 7Y 8Y J 10Y
4 6B 7B 8B
Joker outside Test
Input
5B
2
1 4B 5B 6B 7B
2 6R 7R 8R J
Output
TAKE J 2
PUT J 1
PUT 5B 1
1 4B 5B J
2 6R 7R 8R
3 5B 6B 7B
Validator 8 Validator
Input
3B
2
1 2B 3B 4B 5B
2 4Y 5Y 6Y J
Output
TAKE J 2
PUT J 1
PUT 3B 1
1 2B 3B J
2 4Y 5Y 6Y
3 3B 4B 5B
Joker inside Test
Input
13R
4
1 9R 10R 11R
2 8B J 10B
3 5B 6B 7B
4 11B 12B 13B
Output
COMBINE 2 3
COMBINE 2 4
TAKE J 2
PUT J 1
PUT 13R 1
1 9R 10R 11R J 13R
2 5B 6B 7B 8B
5 10B 11B 12B 13B
Validator 9 Validator
Input
1R
4
1 3R 4R 5R
2 4B J 6B
3 7B 8B 9B
4 1B 2B 3B
Output
COMBINE 2 3
COMBINE 2 4
TAKE J 2
PUT J 1
PUT 1R 1
1 1R J 3R 4R 5R
2 1B 2B 3B 4B
5 6B 7B 8B 9B
Joke(r) Test
Input
7G
3
1 7B 7R 7Y
2 8B 9B 10B 11B J
3 3G 4G 5G
Output
PUT 7G 1
1 7B 7G 7R 7Y
2 8B 9B 10B 11B J
3 3G 4G 5G
Validator 10 Validator
Input
3G
3
1 8B 9B 10B 11B J
2 5G 6G 7G
3 3B 3R 3Y
Output
PUT 3G 3
1 8B 9B 10B 11B J
2 5G 6G 7G
3 3B 3G 3R 3Y
Don't use the joker Test
Input
5G
3
1 4Y 5Y 6Y J
2 6B 6G 6R 6Y
3 7G 8G 9G
Output
TAKE 6G 2
PUT 6G 3
PUT 5G 3
1 4Y 5Y 6Y J
2 6B 6R 6Y
3 5G 6G 7G 8G 9G
Validator 11 Validator
Input
8R
3
1 4R 5R 6R
2 4Y 5Y 6Y J
3 7B 7G 7R 7Y
Output
TAKE 7R 3
PUT 7R 1
PUT 8R 1
1 4R 5R 6R 7R 8R
2 4Y 5Y 6Y J
3 7B 7G 7Y
Get that joker Test
Input
3B
3
1 7R J 9R
2 8B 8G 8R 8Y
3 5B 6B 7B
Output
TAKE 8R 2
PUT 8R 1
TAKE J 1
PUT J 3
PUT 3B 3
1 7R 8R 9R
2 8B 8G 8Y
3 3B J 5B 6B 7B
Validator 12 Validator
Input
9Y
3
1 5B J 7B
2 6B 6G 6R 6Y
3 11Y 12Y 13Y
Output
TAKE 6B 2
PUT 6B 1
TAKE J 1
PUT J 3
PUT 9Y 3
1 5B 6B 7B
2 6G 6R 6Y
3 9Y J 11Y 12Y 13Y
Joker as early as possible Test
Input
6B
4
1 4G 4R J
2 8B 8G 8R 8Y
3 9B 10B 11B
4 1Y 2Y 3Y 4Y 5Y 6Y 7Y
Output
TAKE 4Y 4
PUT 4Y 1
TAKE J 1
PUT J 3
TAKE 8B 2
PUT 8B 3
PUT 6B 3
1 4G 4R 4Y
2 8G 8R 8Y
3 6B J 8B 9B 10B 11B
4 1Y 2Y 3Y
5 5Y 6Y 7Y
Validator 13 Validator
Input
8B
4
1 11B 12B 13B
2 10B 10G 10R 10Y
3 3Y 4Y 5Y 6Y 7Y 8Y 9Y
4 6G 6R J
Output
TAKE 6Y 3
PUT 6Y 4
TAKE J 4
PUT J 1
TAKE 10B 2
PUT 10B 1
PUT 8B 1
1 8B J 10B 11B 12B 13B
2 10G 10R 10Y
3 3Y 4Y 5Y
4 6G 6R 6Y
5 7Y 8Y 9Y
With J is better Test
Input
9Y
9
1 2G 3G 4G
2 4Y 5Y 6Y
3 2B 2G 2R 2Y
4 11R 12R 13R
5 5G 6G 7G
6 8R 9R 10R
7 7B 7R 7Y
8 3R 4R J
9 8B 8G 8Y
Output
COMBINE 1 5
TAKE 2R 3
PUT 2R 8
TAKE J 8
PUT J 2
TAKE 7G 1
PUT 7G 7
TAKE 7Y 7
PUT 7Y 2
PUT 9Y 2
1 2G 3G 4G 5G 6G
2 4Y 5Y 6Y 7Y J 9Y
3 2B 2G 2Y
4 11R 12R 13R
6 8R 9R 10R
7 7B 7G 7R
8 2R 3R 4R
9 8B 8G 8Y
Validator 14 Validator
Input
9B
9
1 7B 7G 7R
2 4B 5B 6B
3 2B 2G 2R 2Y
4 5Y 6Y 7Y
5 11G 12G 13G
6 2Y 3Y 4Y
7 8B 8R 8Y
8 3G 4G J
9 8G 9G 10G
Output
COMBINE 4 6
TAKE 2G 3
PUT 2G 8
TAKE J 8
PUT J 2
TAKE 7Y 4
PUT 7Y 1
TAKE 7B 1
PUT 7B 2
PUT 9B 2
1 7G 7R 7Y
2 4B 5B 6B 7B J 9B
3 2B 2R 2Y
4 2Y 3Y 4Y 5Y 6Y
5 11G 12G 13G
7 8B 8R 8Y
8 2G 3G 4G
9 8G 9G 10G
Joker combine Test
Input
3B
4
1 3R 4R J
2 5R 6R 7R
3 4B 4R 4Y
4 5B 6B 7B
Output
COMBINE 1 2
TAKE J 1
PUT J 4
PUT 3B 4
1 3R 4R 5R 6R 7R
3 4B 4R 4Y
4 3B J 5B 6B 7B
Validator 15 Validator
Input
5B
4
1 5R 6R J
2 7R 8R 9R
3 6B 6R 6Y
4 7B 8B 9B
Output
COMBINE 1 2
TAKE J 1
PUT J 4
PUT 5B 4
1 5R 6R 7R 8R 9R
3 6B 6R 6Y
4 5B J 7B 8B 9B
Multiple takes with J Test
Input
3G
5
1 4G 4R 4Y
2 6G 6R 6Y
3 4B 5B 6B 7B 8B 9B
4 7G 8G 9G
5 5R 5Y J
Output
TAKE 4B 3
PUT 4B 1
TAKE 5B 3
PUT 5B 5
TAKE J 5
PUT J 4
TAKE 6B 3
PUT 6B 2
TAKE 6G 2
PUT 6G 4
TAKE 4G 1
PUT 4G 4
PUT 3G 4
1 4B 4R 4Y
2 6B 6R 6Y
3 7B 8B 9B
4 3G 4G J 6G 7G 8G 9G
5 5B 5R 5Y
Validator 16 Validator
Input
9R
5
1 8G 8R 8Y
2 7G 7R 7Y
3 6G 6Y J
4 3R 4R 5R
5 3B 4B 5B 6B 7B 8B
Output
TAKE 8B 5
PUT 8B 1
TAKE 7B 5
PUT 7B 2
TAKE 6B 5
PUT 6B 3
TAKE J 3
PUT J 4
TAKE 7R 2
PUT 7R 4
TAKE 8R 1
PUT 8R 4
PUT 9R 4
1 8B 8G 8Y
2 7B 7G 7Y
3 6B 6G 6Y
4 3R 4R 5R J 7R 8R 9R
5 3B 4B 5B
A lot of actions with J Test
Input
1G
10
1 3B 3G 3R 3Y
2 9B 9G 9R 9Y
3 7B 7G 7R 7Y
4 5B 5G 5R 5Y
5 4B 4G 4R 4Y
6 2B 2G 2R 2Y
7 8B 8G 8R 8Y
8 6B 6G 6R 6Y
9 11G 12G 13G
10 10B 10R 10Y J
Output
TAKE J 10
PUT J 9
TAKE 9G 2
PUT 9G 9
TAKE 8G 7
PUT 8G 9
TAKE 7G 3
PUT 7G 9
TAKE 6G 8
PUT 6G 9
TAKE 5G 4
PUT 5G 9
TAKE 4G 5
PUT 4G 9
TAKE 3G 1
PUT 3G 9
TAKE 2G 6
PUT 2G 9
PUT 1G 9
1 3B 3R 3Y
2 9B 9R 9Y
3 7B 7R 7Y
4 5B 5R 5Y
5 4B 4R 4Y
6 2B 2R 2Y
7 8B 8R 8Y
8 6B 6R 6Y
9 1G 2G 3G 4G 5G 6G 7G 8G 9G J 11G 12G 13G
10 10B 10R 10Y
Validator 17 Validator
Input
1Y
10
1 3B 3G 3R 3Y
2 9B 9G 9R 9Y
3 7B 7G 7R 7Y
4 5B 5G 5R 5Y
5 4B 4G 4R 4Y
6 2B 2G 2R 2Y
7 8B 8G 8R 8Y
8 6B 6G 6R 6Y
9 11Y 12Y 13Y
10 10B 10G 10R J
Output
TAKE J 10
PUT J 9
TAKE 9Y 2
PUT 9Y 9
TAKE 8Y 7
PUT 8Y 9
TAKE 7Y 3
PUT 7Y 9
TAKE 6Y 8
PUT 6Y 9
TAKE 5Y 4
PUT 5Y 9
TAKE 4Y 5
PUT 4Y 9
TAKE 3Y 1
PUT 3Y 9
TAKE 2Y 6
PUT 2Y 9
PUT 1Y 9
1 3B 3G 3R
2 9B 9G 9R
3 7B 7G 7R
4 5B 5G 5R
5 4B 4G 4R
6 2B 2G 2R
7 8B 8G 8R
8 6B 6G 6R
9 1Y 2Y 3Y 4Y 5Y 6Y 7Y 8Y 9Y J 11Y 12Y 13Y
10 10B 10G 10R
A bit of everything Test
Input
11B
9
1 5R 6R 7R 8R 9R 10R
2 1B 1G 1R
3 4Y 5Y 6Y
4 7B 7G 7Y
5 10B 11B 12B 13B
6 1Y 2Y 3Y
7 2R 3R J
8 5B 5G 5Y
9 6B 6G 6Y
Output
COMBINE 3 6
TAKE 1Y 3
PUT 1Y 2
TAKE 1R 2
PUT 1R 7
TAKE J 7
PUT J 5
PUT 11B 5
1 5R 6R 7R 8R 9R 10R
2 1B 1G 1Y
3 2Y 3Y 4Y 5Y 6Y
4 7B 7G 7Y
5 10B 11B J
7 1R 2R 3R
8 5B 5G 5Y
9 6B 6G 6Y
10 11B 12B 13B
Validator 18 Validator
Input
11Y
9
1 1B 1G 1Y
2 4R 5R 6R
3 1R 2R 3R
4 2G 3G J
5 6B 6R 6Y
6 7B 7R 7Y
7 10Y 11Y 12Y 13Y
8 5G 6G 7G 8G 9G 10G
9 5B 5R 5Y
Output
COMBINE 2 3
TAKE 1R 2
PUT 1R 1
TAKE 1G 1
PUT 1G 4
TAKE J 4
PUT J 7
PUT 11Y 7
1 1B 1R 1Y
2 2R 3R 4R 5R 6R
4 1G 2G 3G
5 6B 6R 6Y
6 7B 7R 7Y
7 10Y 11Y J
8 5G 6G 7G 8G 9G 10G
9 5B 5R 5Y
10 11Y 12Y 13Y
Many paths to explore Test
Input
8Y
19
1 4G 4R 4Y
2 5G 5R 5Y
3 6G 6R 6Y
4 7G 8G 9G J
5 4B 5B 6B
6 7B 8B 9B
7 1B 1G 1R 1Y
8 2B 2G 2R 2Y
9 3B 3G 3R 3Y
10 4R 5R 6R
11 7R 8R 9R
12 10R 11R 12R 13R
13 7R 8R 9R
14 1Y 2Y 3Y 4Y
15 5Y 6Y 7Y 8Y
16 10B 11B 12B 13B
17 10G 11G 12G 13G
18 10G 11G 12G
19 13B 13G 13Y
Output
TAKE J 4
PUT J 15
TAKE 3B 9
PUT 3B 5
TAKE 6B 5
PUT 6B 3
TAKE 6Y 3
PUT 6Y 15
PUT 8Y 15
1 4G 4R 4Y
2 5G 5R 5Y
3 6B 6G 6R
4 7G 8G 9G
5 3B 4B 5B
6 7B 8B 9B
7 1B 1G 1R 1Y
8 2B 2G 2R 2Y
9 3G 3R 3Y
10 4R 5R 6R
11 7R 8R 9R
12 10R 11R 12R 13R
13 7R 8R 9R
14 1Y 2Y 3Y 4Y
15 5Y 6Y J 8Y
16 10B 11B 12B 13B
17 10G 11G 12G 13G
18 10G 11G 12G
19 13B 13G 13Y
20 6Y 7Y 8Y
Validator 19 Validator
Input
8B
19
1 5B 5R 5Y
2 4G 5G 6G
3 6B 6R 6Y
4 7G 8G 9G
5 7R 8R 9R J
6 1B 1G 1R 1Y
7 7Y 8Y 9Y
8 2B 2G 2R 2Y
9 4B 4R 4Y
10 3B 3G 3R 3Y
11 10R 11R 12R 13R
12 13B 13G 13R
13 4Y 5Y 6Y
14 7Y 8Y 9Y
15 1B 2B 3B 4B
16 10Y 11Y 12Y 13Y
17 10G 11G 12G 13G
18 10R 11R 12R
19 5B 6B 7B 8B
Output
TAKE J 5
PUT J 19
TAKE 3G 10
PUT 3G 2
TAKE 6G 2
PUT 6G 3
TAKE 6B 3
PUT 6B 19
PUT 8B 19
1 5B 5R 5Y
2 3G 4G 5G
3 6G 6R 6Y
4 7G 8G 9G
5 7R 8R 9R
6 1B 1G 1R 1Y
7 7Y 8Y 9Y
8 2B 2G 2R 2Y
9 4B 4R 4Y
10 3B 3R 3Y
11 10R 11R 12R 13R
12 13B 13G 13R
13 4Y 5Y 6Y
14 7Y 8Y 9Y
15 1B 2B 3B 4B
16 10Y 11Y 12Y 13Y
17 10G 11G 12G 13G
18 10R 11R 12R
19 5B 6B J 8B
20 6B 7B 8B
Solution language
Solution
Stub generator input