Problem Statement
You are said to have made a "winning move" in Roxor, if after making that move, you can eventually win no matter what the opponent does. Note that a winning move does not necessarily end the game immediately, but if you make only winning moves, you will win eventually.
For this task, you will be given a
If there is at least one winning move, you should return {i, j, k} as described above. Otherwise, return {}.
Definition
- Class:
- Roxor
- Method:
- play
- Parameters:
- int[]
- Returns:
- int[]
- Method signature:
- int[] play(int[] piles)
- (be sure your method is public)
Constraints
- piles will contain between 2 and 15 elements inclusive.
- Each element of piles will be between 0 and 1000 inclusive.
- At least one element of piles other than the last element will be larger than 0.
Examples
{0, 0, 1, 0, 1, 100}
Returns: { 2, 4, 5 }
You have 7 legal moves in this position: {2, 3, 3}, {2, 3, 4}, {2, 3, 5}, {2, 4, 4}, {2, 4, 5}, {2, 5, 5}, and {4, 5, 5}. If you make the move, {2, 4, 5}, the piles become {0, 0, 0, 0, 2, 101}. Your opponent then has to make the move, {4, 5, 5}, which makes the piles become {0, 0, 0, 0, 1, 103}. Finally, you can make the move, {4, 5, 5}, so the piles become {0, 0, 0, 0, 0, 105}. Your opponent now has no legal moves, so you have won. Thus, {2, 4, 5} is a winning move.
{1000, 1000, 1000, 1000, 1000}
Returns: { }
Your opponent can always beat you from this position by simply copying your moves. This will ensure that there is always an even number of stones in each pile at the beginning of your turn. As such, you will never take the last stone from any pile, and therefore, you cannot win.
{2, 1, 1, 1, 5}
Returns: { 0, 1, 1 }
{14, 301, 391, 410, 511, 681, 58, 259, 981, 81, 5, 42, 251, 401, 120}
Returns: { 2, 5, 14 }
{193,584}
Returns: { 0, 1, 1 }
{895,746,858,513,14,364,165,445}
Returns: { 0, 3, 6 }
{0,1,531}
Returns: { 1, 2, 2 }
{607,663,352,607,802,301,726,925,142}
Returns: { 0, 1, 1 }
{862,779,996,611,266,840,375,677}
Returns: { 0, 1, 1 }
{1,275}
Returns: { 0, 1, 1 }
{691,726,205,468,949}
Returns: { 0, 2, 4 }
{599,734,572,151,425,517,751,168,491,699,147,141}
Returns: { 0, 7, 11 }
{303,70,683,877,582,177,475,503,405,568,755,475,367,35}
Returns: { 0, 12, 13 }
{426,949,549,471,846,456,982,739,195}
Returns: { 0, 7, 8 }
{397,890,994,50,194,626,197,123,743,941,336,733}
Returns: { 0, 3, 7 }
{600,252,1,806,210,553,0,454,686,73,201,290,232}
Returns: { 0, 4, 12 }
{628,504,695,189,178,457,97,94,931,894}
Returns: { 1, 2, 5 }
{769,201,604,466,634,828}
Returns: { 0, 1, 5 }
{565,184,555,242,604,584,494,740,620,804}
Returns: { 0, 2, 9 }
{867,614,43,976}
Returns: { 0, 2, 3 }
{305,108,851,154,79,640}
Returns: { 0, 1, 3 }
{448,298,501,323,313,959,725,943,65,524,956,875,322}
Returns: { 0, 2, 12 }
{227,919,662}
Returns: { 0, 1, 2 }
{379,793,382}
Returns: { 0, 1, 2 }
{606,5,100,863,747,380,552,955,176,131,951}
Returns: { 0, 1, 1 }
{329,639,847,596,853,0,707,217,168,340}
Returns: { 0, 2, 9 }
{660,806,611,900,630,253}
Returns: { 1, 3, 4 }
{66,573,548}
Returns: { 1, 2, 2 }
{110,134,788,789,615}
Returns: { 0, 1, 2 }
{228,229,542,53,524,94,891}
Returns: { 0, 2, 6 }
{125,80,58,914,432}
Returns: { 0, 1, 1 }
{534,693,259,0,954,241,255,945,890,0,601,576,222,4,82}
Returns: { 0, 13, 14 }
{64,662,802,685,689,777,868,706,551,58,145}
Returns: { 2, 8, 10 }
{292,367,218,240,902,902,80,171,775,210,3,114,311,38,189}
Returns: { 0, 1, 1 }
{620,939,779,656,455}
Returns: { 0, 3, 4 }
{150,569,942,578,255,350,795,70,590,197,644,604,441,396}
Returns: { 0, 1, 11 }
{199,875,987,895,442,708,285,407,710,896,397,308,570}
Returns: { 0, 1, 10 }
{745,739,200,680,367,109}
Returns: { 0, 1, 4 }
{517,438,90,75,355,697,394,675,198,615,543,545,974,969}
Returns: { 0, 9, 13 }
{679,372,49,169,310,212,484,0,507,758,349,942}
Returns: { 0, 1, 6 }
{53,863,306,26,391,0,455,936,727,808}
Returns: { 0, 1, 2 }
{595,793,590,569,672,10,341,770,869,725,893,535,780,197}
Returns: { 0, 12, 13 }
{953,890,185,264,732,170,480,806,124,573,762,727,15,691}
Returns: { 0, 1, 9 }
{274,838,371,232}
Returns: { 2, 3, 3 }
{204,281,769,46,0,643,414,90,699,657}
Returns: { 1, 3, 9 }
{570,465,426,486,565,778,850,864,746,765,908,521,107,823}
Returns: { 0, 1, 6 }
{0,773,89,683,154,48,18}
Returns: { 1, 2, 3 }
{53,637,21,391,781,826,634,983,214,782,480,102,755,456,998}
Returns: { 0, 2, 5 }
{621,688,567,548,246,492,669,623,798,988,629,591}
Returns: { 0, 1, 4 }
{489,889,182,203,941,41,34,544,61,127,50,660,315,410}
Returns: { 0, 2, 13 }
{678,497,802,4,375,827,891}
Returns: { 0, 1, 1 }
{514,737,465,112,821,108,761,416,67,211,591}
Returns: { 0, 8, 10 }
{580,731,669}
Returns: { 1, 2, 2 }
{378,772,170,181,195,190}
Returns: { 1, 2, 5 }
{120,46,761,1,426,461,749}
Returns: { 0, 1, 5 }
{92,893,59,632,756}
Returns: { 0, 3, 4 }
{791,552,522,704,731}
Returns: { 0, 1, 1 }
{875,305,481,651,0,756,154,670,345}
Returns: { }
{436,635,476,79,143,917,373,46,239,256,208}
Returns: { 0, 5, 10 }
{874,844,40,183,449}
Returns: { 0, 1, 2 }
{623,911,730,969}
Returns: { 0, 1, 3 }
{146,284,973,716,645,735,124,375,915,32,448,0,418,919}
Returns: { 0, 1, 9 }
{754,213,771,556,851,538,869,227,371}
Returns: { 0, 1, 7 }
{561,119,898,940,849,445,634}
Returns: { }
{423,0,139,291,561,607,422,739,516}
Returns: { 0, 7, 8 }
{1,333}
Returns: { 0, 1, 1 }
{767,630,682,500,265,646,263,460,351,0,626,383,288,883}
Returns: { 0, 1, 12 }
{382,10,865,699,602,559,378,937}
Returns: { 0, 1, 1 }
{608,76,305,80,304,932,216,560,250,727,231,446,574,995,0}
Returns: { 0, 12, 14 }
{256,116}
Returns: { }
{959,79,279,490,924}
Returns: { 0, 1, 2 }
{475,951,834,801,870,939,943,127,472,26}
Returns: { 0, 6, 9 }
{862,14}
Returns: { }
{797,658,781,842}
Returns: { 0, 2, 3 }
{23,30,715,180,182}
Returns: { 0, 2, 4 }
{58,358,158,131,181,249,346,664,932,105,557,895}
Returns: { 0, 1, 4 }
{822,548,450}
Returns: { }
{982,594,131,600,355}
Returns: { 0, 1, 3 }
{691,671,237,235,484}
Returns: { }
{570,348,290,922,806,686}
Returns: { }
{ 1000, 999, 1000, 999, 1000, 999, 1000, 999, 1000, 999, 1000, 999, 1000, 999, 1000 }
Returns: { 0, 2, 5 }