Problem Statement
Shiny likes to play games. Her favorite games are games with pebbles (small stones). Today, she is playing such a game with her friend Lucy.
Initially, there are N piles of stones.
You are given a
The players take alternating turns. Shiny plays first. In each turn, the current player must:
- Choose a pile X that has at least two stones.
- Split the chosen pile X into two non-empty parts A and B. (The parts can have arbitrary sizes, as long as both are non-empty.)
- Choose two piles Y and Z. (Y and Z must be different non-empty piles other than X.)
- Add all stones from A to the pile Y, and all stones from B to the pile Z.
For example, if the current piles are {1, 2, 50}, the current player could:
- Choose the pile with 50 stones as X.
- Split it into two parts with 25 stones each.
- Choose the other two piles (the ones with 1 and 2 stones) to be Y and Z.
- Add all stones from A to the pile Y, and all stones from B to the pile Z. At the end of the turn, there are two piles of stones: one with 26 and one with 27 stones.
The player who cannot make a valid move loses the game.
Assume that both players play the game optimally.
Return the
Definition
- Class:
- SplitStoneGame
- Method:
- winOrLose
- Parameters:
- int[]
- Returns:
- String
- Method signature:
- String winOrLose(int[] number)
- (be sure your method is public)
Constraints
- number will contain between 1 and 50 elements, inclusive.
- Each element of number will be between 1 and 50, inclusive.
Examples
{1, 1, 1}
Returns: "LOSE"
Shiny can't choose a pile X that has at least two stones, so she loses.
{2, 2}
Returns: "LOSE"
After Shiny chooses one of the piles as X and splits it into two piles with one stone each, she is unable to choose Y and Z, because there is only one pile left to choose from at the moment. Thus, she cannot make a valid move and therefore she loses the game.
{1, 1, 2}
Returns: "WIN"
Shiny can choose the last pile as X, split it into 1+1 stone, and add those stones to the other two piles. This is a valid move that produces two piles with two stones each, and it is now Lucy's turn. As we saw in Example 1, Lucy now has no valid move left, thus she loses the game and Shiny is the winner.
{1, 2, 3, 4, 3, 2, 2, 4, 3, 1, 4, 4, 1, 2, 4, 4, 1, 4, 3, 1, 4, 2, 1}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 3, 1, 9, 1, 3, 1, 1, 1, 1, 1}
Returns: "LOSE"
{1, 1, 1}
Returns: "LOSE"
{19, 11, 30, 13, 1, 28, 24, 31, 15, 7, 1, 29, 1, 1, 10, 16, 27, 29, 23, 32, 8, 12, 8, 7, 1, 1, 5, 1, 30, 1, 26, 32}
Returns: "LOSE"
{2, 1, 1, 28, 1, 1, 16, 5, 22, 1, 13, 26, 1, 1, 9, 1}
Returns: "LOSE"
{22, 49, 33, 22, 1, 47, 44, 1, 4, 6, 1, 18, 34, 1}
Returns: "LOSE"
{1, 1, 1, 1, 2, 1, 8, 2, 8, 1, 5, 20, 1, 1, 1, 1, 27, 1, 1, 1}
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{2, 1, 2, 2, 1, 3, 1, 2, 4, 1, 4, 1, 1, 2, 2, 2, 2, 1, 4, 4, 4, 4, 3}
Returns: "WIN"
{1, 8, 10, 1, 1, 1, 1, 1, 1, 1, 1, 22, 5, 1, 1, 1, 16, 1, 1, 1, 1, 1, 23, 1, 22, 7, 1, 1, 1, 1, 1, 1, 1, 1, 15, 1, 9, 1, 1}
Returns: "WIN"
{1, 2, 1, 1, 6, 1, 2, 1, 1, 5, 6, 6, 1, 5, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 1, 1, 2, 1, 1, 1, 4}
Returns: "WIN"
{5, 1, 30, 13, 19, 28, 15, 19, 9, 16, 1, 19, 28, 24, 21, 15, 20, 15, 25, 4, 1, 1, 3, 14, 17, 13, 22, 1, 17, 2}
Returns: "LOSE"
{37, 1, 1, 1, 1, 12, 1, 4, 34, 6, 1, 1, 1, 1, 11, 39, 1, 24, 7, 34, 39, 19, 39, 1, 9, 1, 11, 1, 32, 21, 20, 1, 1, 1, 35, 36, 5, 5, 1, 38, 1, 1, 1, 20, 18, 26, 31}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 14, 5, 1, 1, 1, 1, 1, 4, 1, 5, 4, 1, 1, 1, 1, 1, 19, 1, 1, 1, 1, 2, 12, 6}
Returns: "WIN"
{1, 1, 1, 1, 2, 1, 1, 1, 1, 1}
Returns: "LOSE"
{2, 2, 2, 2, 3, 3, 2, 3, 2, 2, 1, 1, 2, 1, 1, 1, 2, 1, 2, 1, 3, 3, 1, 2, 3, 2, 2, 1, 2, 2, 1, 1}
Returns: "LOSE"
{15, 1, 1, 12, 1, 9, 1, 1, 25, 25, 12, 19, 22, 19, 1, 1, 14, 3, 22, 1, 16, 16, 16, 21, 1, 1, 20, 12, 1, 13, 1, 17, 21, 7, 20, 10, 22, 15, 23, 1, 3, 20, 21, 25, 2, 17, 10, 9, 1, 25}
Returns: "LOSE"
{8, 2, 15, 4, 8, 9, 20, 12, 13, 11, 19}
Returns: "WIN"
{1, 1, 4, 29, 1, 1, 1, 31, 1, 6, 1, 1, 28, 22, 1, 1, 1, 1, 1, 1, 1, 1, 33, 17, 22, 1, 1, 24, 1, 1, 1, 1, 14, 18, 24, 27, 14, 1, 1, 1, 1, 1, 1, 1, 5, 1, 1}
Returns: "WIN"
{8, 3, 7, 15, 10, 3, 1, 1, 14, 2, 4, 6, 6, 7, 14, 1, 4, 6, 1, 8, 5, 8, 1, 7, 5, 1, 15, 9, 10, 12, 8, 2, 6, 1, 2, 7, 1, 11, 1, 10, 13, 14, 2, 5}
Returns: "LOSE"
{4, 2, 2, 9, 18, 3, 18, 9}
Returns: "LOSE"
{1, 10, 1, 4, 1, 1, 1, 1, 5, 4, 1, 1, 7, 1, 7, 8, 8, 2, 8, 6, 1, 1, 1, 2, 1, 1, 12, 1, 2, 12, 3, 1, 1, 4, 1, 12, 1, 1, 1}
Returns: "WIN"
{3, 6, 1, 2, 1, 3, 1, 4, 5, 2, 2, 4, 4, 2, 1, 3, 1, 4, 1, 1, 1, 4, 1, 5, 1, 6, 1, 1, 4, 4, 6, 2, 1, 2, 1, 4, 1, 3, 6, 4, 1, 3, 5, 1, 3, 2, 5}
Returns: "WIN"
{26, 1, 41, 40, 33, 31, 1, 1, 1, 1, 1, 1, 1, 1, 23, 3, 30, 1, 11, 1, 3, 1, 1, 8, 1, 1, 6, 16, 28, 1, 6, 1, 1, 1, 17, 29, 1, 1, 34, 24, 1, 1, 42}
Returns: "WIN"
{1, 25, 1, 1, 4, 1, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1, 23, 15, 1, 1, 26, 1, 1}
Returns: "WIN"
{1, 1, 1, 1, 1, 31, 1, 13, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 8}
Returns: "WIN"
{1, 33, 1, 1, 41, 1, 1, 1, 1, 32, 1, 1, 1, 1, 1, 16, 1, 3, 1, 1, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 33, 32, 1, 6, 1, 1, 1, 1, 11, 1, 1, 1}
Returns: "LOSE"
{3, 15, 21, 1, 1, 16, 1, 13, 17, 17, 1, 1, 8, 19, 1, 9}
Returns: "LOSE"
{1, 1, 1, 1, 1, 6, 1, 1, 3, 1, 1, 8, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 1, 4, 1, 5, 1, 1}
Returns: "WIN"
{10, 7, 1, 1, 17, 1, 13, 13, 1, 1, 3, 7, 8, 12, 6, 19, 14, 14, 9, 19, 11, 13, 11, 4, 6, 1, 7, 2, 10, 10, 13}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 46, 1, 1, 1}
Returns: "WIN"
{15, 10, 6, 12, 17, 23, 4, 1, 17, 15, 21}
Returns: "WIN"
{1, 7, 1, 13, 1, 29, 26, 8, 16, 1, 21, 10, 1, 11, 1, 1, 16, 14, 1}
Returns: "WIN"
{1, 11, 1, 7, 14, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 16, 1, 1, 2, 10, 1, 1, 1, 1, 8, 1, 1, 1, 11, 1, 4, 1, 1, 1}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 19, 1, 16, 25, 1, 1, 19, 1, 1, 5, 24, 1, 1, 1, 1, 1, 1, 21, 1, 1, 15, 1, 21, 1, 1, 25, 20, 20, 10, 1, 1, 1, 1}
Returns: "LOSE"
{10, 1, 9, 2, 1, 1, 1, 1, 1, 9, 1, 8, 1, 1, 1, 10, 12, 1, 1, 4, 1, 9, 1, 6, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{7, 3, 1, 8, 11, 13, 5, 1, 8, 9, 13, 4, 7, 1, 2, 4, 1, 1, 11}
Returns: "WIN"
{26, 1, 35, 7, 24, 1, 1, 1, 47, 26, 1, 38, 2, 38, 13, 1, 1, 1, 1, 24, 1, 40, 23, 39, 1, 21, 1}
Returns: "WIN"
{18, 12, 18, 1, 21, 18, 1, 2, 22, 1, 15, 26, 7, 1, 7, 10, 1, 1, 1, 27, 1, 24, 8}
Returns: "WIN"
{1, 1, 1, 1, 44, 1, 1, 1, 1, 42, 1, 1, 17, 1, 1, 18, 10, 1, 1, 1, 1, 1, 1, 21, 1, 1, 48, 1, 1, 1, 1, 1, 1, 23, 1, 44, 23, 17, 1, 13, 1, 1, 5}
Returns: "WIN"
{1, 6, 1, 1, 1, 1, 10, 8, 4, 1, 5, 4, 1, 4, 1, 1, 1, 7, 1, 9, 5, 9, 1, 6, 3, 1, 7, 1, 1, 1, 7, 1, 1, 1, 6, 8, 1, 1, 1, 7, 1, 6, 2, 6, 1, 1, 2, 3, 8}
Returns: "WIN"
{3, 1, 3, 2, 3, 2, 1, 2, 2, 4, 4, 2, 4, 3, 2, 1, 4, 2, 4, 4, 3, 2, 2, 4}
Returns: "LOSE"
{1, 9, 2, 12, 6, 8, 5, 5, 8, 15, 3}
Returns: "WIN"
{1, 1, 1, 1, 1, 26, 1, 1, 1, 1, 47, 1, 1, 1, 1, 43, 1, 7, 1, 1, 1, 1, 1, 1, 39, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "WIN"
{1, 1, 1, 1, 6, 1, 33, 1, 35, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1, 16, 1, 1, 1, 39, 12, 1, 1, 1, 1, 1, 1, 16, 1, 1, 1, 17, 1, 1, 26, 46}
Returns: "LOSE"
{25, 3, 1, 12, 19, 23, 26, 7, 5, 15, 13}
Returns: "WIN"
{26, 13, 23, 1}
Returns: "LOSE"
{1, 40, 1, 1, 1, 14, 24, 1, 1, 1, 1, 1, 1, 1, 1, 35, 1, 1, 1, 12, 1, 1, 1}
Returns: "WIN"
{20, 19, 3, 3, 4, 1, 5, 7, 1, 1, 10}
Returns: "WIN"
{1, 14, 12, 14, 1, 1, 1, 1, 10, 7, 13, 11}
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1, 30, 1, 1, 1, 19, 1, 1, 1, 1, 1}
Returns: "WIN"
{11, 5, 7, 1, 7, 5, 5, 10, 13, 10, 13, 2, 10, 8, 4}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 23, 1, 1, 13, 17, 40, 1, 1, 1, 1, 1, 1, 1, 1, 1, 28, 1, 29, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 43, 1, 1, 1, 1, 1, 37, 41, 1, 1}
Returns: "LOSE"
{11, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 14, 1, 13, 1, 1, 1, 6, 1, 1, 1, 1, 1, 5, 1, 1, 1, 11, 4, 7, 1, 7, 11, 1, 1}
Returns: "WIN"
{1, 1, 4, 1, 25, 1, 1, 19, 24, 1, 1, 1, 1, 20, 1, 1, 1, 12, 12, 1, 1, 1, 1, 19, 1, 7, 1, 1, 1, 3, 22, 1, 16}
Returns: "WIN"
{22, 20, 1, 27, 1, 1, 1, 1, 1, 16, 1, 23, 1, 5, 11, 1, 3, 1, 21, 3, 1, 1, 20, 6, 19, 18, 3, 1, 1, 27, 1, 6, 19, 13, 10, 24, 23, 27, 21, 10, 24, 1}
Returns: "LOSE"
{1, 1, 1, 13, 1, 15, 1, 16, 36, 1, 1, 11, 18, 1}
Returns: "LOSE"
{3, 1, 2, 1, 1, 2, 1, 6, 4, 1, 1, 6, 1, 1, 1, 1, 1, 6, 1, 2, 4, 1}
Returns: "LOSE"
{2, 1, 16, 1, 1, 1, 21, 34, 26, 2, 1, 27, 17, 31, 29, 1, 1, 1, 1, 30, 7, 1, 6, 1, 35, 11, 9, 1, 8, 4, 29, 1, 23, 5, 34, 1, 1, 1, 2}
Returns: "WIN"
{8, 26, 41, 1, 1, 34, 24, 22, 30, 1, 1, 1, 4, 1, 1, 4, 1, 31, 1, 40, 35, 46, 9, 21, 8, 23, 22, 1, 45, 1, 1, 11, 1, 23, 1, 43, 32, 19, 46, 25, 47, 27, 8}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 34, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, 1, 1, 1, 1, 1}
Returns: "WIN"
{11, 6, 8, 2, 11, 7, 6, 3, 9, 4, 9, 8, 5, 7, 6, 8, 3, 1}
Returns: "LOSE"
{7, 3, 3, 5, 12, 1, 15, 8, 7, 1, 16, 1, 17, 6, 1, 16}
Returns: "LOSE"
{1, 16, 13, 13, 4, 4, 1, 1, 5, 16, 1, 1, 9, 1, 23, 12, 23, 1, 22, 19, 5, 3, 1, 9, 14, 18, 1, 22, 1, 1, 1, 5, 15, 10, 18, 10, 6, 15, 7, 1, 12, 4, 3}
Returns: "WIN"
{1, 1, 1, 1, 1, 20, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "WIN"
{6, 5, 2}
Returns: "WIN"
{9, 22, 7, 25, 1, 1, 1, 1, 17, 2, 19, 1, 6, 14, 1, 4, 1, 1, 1, 7, 7, 26, 2, 23, 9, 2, 1, 19, 2, 25, 1, 16, 23, 1, 1, 26, 1, 1, 6}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 23, 19, 1, 1, 1, 1, 5, 1, 1, 1, 1, 1, 1, 23, 18, 1, 1, 1, 1, 1, 1, 22, 1, 24, 1, 3}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{9, 1, 16, 2, 3, 17, 23, 25}
Returns: "LOSE"
{1, 1, 1, 8, 1, 1, 16, 1, 1, 1, 7, 1, 1, 18, 1, 1, 1, 1, 1, 9, 1, 1, 12, 1, 1, 1, 1, 1, 10, 1, 12, 1, 7, 1, 1, 7, 1, 18, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{11, 8, 5, 1, 1, 2, 1, 23, 7, 1, 3, 21, 1, 11, 8, 1, 23, 11, 1, 25, 20, 15, 13, 1, 15, 1, 22, 2, 3, 1, 6, 27, 1, 21, 1, 1, 1, 24, 1, 21, 1, 25, 1, 20, 1}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{18, 2, 1, 1, 1, 13, 24, 1, 1, 20, 2, 1, 22, 21, 23, 17, 6, 10, 1, 15, 2, 1}
Returns: "LOSE"
{1, 28, 1, 1, 28, 1, 1, 1, 1, 16, 17, 15, 1, 1, 1, 15, 12, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 23, 1, 1, 3, 24}
Returns: "LOSE"
{5, 10, 1, 3, 9, 5, 3, 1, 1, 4, 2, 10, 6, 6, 6, 2, 4, 7, 8, 1, 9, 5, 2}
Returns: "WIN"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{11, 1, 2, 1}
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1}
Returns: "LOSE"
{2}
Returns: "LOSE"
{10 }
Returns: "LOSE"
{4 }
Returns: "LOSE"
{2, 2 }
Returns: "LOSE"
{5 }
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1, 2 }
Returns: "LOSE"
{3 }
Returns: "LOSE"
{1, 1, 1, 2 }
Returns: "LOSE"
{2 }
Returns: "LOSE"
{1, 2, 1, 1 }
Returns: "LOSE"
{3, 1, 1, 1 }
Returns: "LOSE"
{1, 2, 2, 2 }
Returns: "LOSE"
{1, 2 }
Returns: "LOSE"
{1, 1, 1, 1, 1 }
Returns: "LOSE"
{1, 1, 2, 1 }
Returns: "LOSE"
{1, 1, 1, 1, 1, 2 }
Returns: "LOSE"
{2, 2, 1 }
Returns: "WIN"
{1, 1, 1, 3, 3, 3 }
Returns: "LOSE"
{1, 3, 3 }
Returns: "WIN"
{1, 1, 1, 1, 1, 1 }
Returns: "LOSE"
{1, 4, 1, 3, 2, 1, 3, 2 }
Returns: "LOSE"
{2, 2, 2, 1 }
Returns: "LOSE"
{1, 1, 1, 4 }
Returns: "LOSE"
{5, 1, 1, 1 }
Returns: "LOSE"
{1, 2, 2 }
Returns: "WIN"
{50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 }
Returns: "LOSE"
{1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4 }
Returns: "LOSE"
{32 }
Returns: "LOSE"
{1, 19, 1, 1, 1, 41, 41, 1, 31, 1, 1, 1, 48, 1, 49, 1, 30, 1, 40, 1 }
Returns: "LOSE"
{1, 1, 1, 1, 50, 50, 50, 1, 1, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 1 }
Returns: "LOSE"
{1, 1, 2, 2 }
Returns: "LOSE"
{1, 2, 2, 2, 2 }
Returns: "WIN"
{2, 1 }
Returns: "LOSE"
{2, 4, 2, 4, 4, 3 }
Returns: "LOSE"
{1, 1, 2 }
Returns: "WIN"