/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
package nim ;
public class Nim {
private static int [ ] _piles;
return "Pile 0 has: " + getPile( 0 ) + " bricks left. | Pile 1 has: " + getPile( 1 ) + " bricks left | Pile 2 has: " + getPile( 2 ) + " bricks left." ;
}
//Sette antall brikker
public Nim( ) {
_piles = new int [ 3 ] ;
_piles[ 0 ] = 10 ;
_piles[ 1 ] = 10 ;
_piles[ 2 ] = 10 ;
}
public Nim( int pileSize) {
_piles = new int [ 3 ] ;
_piles[ 0 ] = pileSize;
_piles[ 1 ] = pileSize;
_piles[ 2 ] = pileSize;
}
public static boolean isValidPile( int pile) {
if ( ( pile!= 0 || pile!= 1 || pile!= 2 ) ) {
return false ;
} else
return true ;
}
void removePieces( int number, int targetPile) {
if ( ! ( isValidMove( number,targetPile) ) ) {
} else {
_piles[ targetPile] -= number;
}
}
boolean isValidMove( int number, int targetPile) {
if ( ( number >= 1 ) && ( ! isValidPile( targetPile) ) ) {
return true ;
} else {
throw new IllegalArgumentException ( "Number has to be 1 or higher or target pile was not viable: num = " + number
+ "targetPile = " + targetPile
) ; }
}
static boolean isGameOver( ) {
for ( int i= 0 ; i < 3 ; i++ ) {
if ( getPile( i) != 0 ) {
return false ;
}
}
return true ;
}
static int getPile( int targetPile) {
if ( isValidPile( targetPile) ) {
} else {
return _piles[ targetPile] ;
}
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJcGFja2FnZSBuaW07CgpwdWJsaWMgY2xhc3MgTmltIHsKCiAgICBwcml2YXRlIHN0YXRpYyBpbnQgW10gX3BpbGVzOwoKICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKXsKICAgICAgICByZXR1cm4gIlBpbGUgMCBoYXM6ICIgKyBnZXRQaWxlKDApICsgIiBicmlja3MgbGVmdC4gfCBQaWxlIDEgaGFzOiAiICsgZ2V0UGlsZSgxKSArICIgYnJpY2tzIGxlZnQgfCBQaWxlIDIgaGFzOiAiICsgZ2V0UGlsZSgyKSArICIgYnJpY2tzIGxlZnQuIjsKICAgIH0KCiAgICAvL1NldHRlIGFudGFsbCBicmlra2VyCiAgICBwdWJsaWMgTmltKCl7CiAgICAgICAgIF9waWxlcyA9IG5ldyBpbnQgWzNdOwogICAgICAgICBfcGlsZXNbMF0gPSAxMDsKICAgICAgICAgX3BpbGVzWzFdID0gMTA7CiAgICAgICAgIF9waWxlc1syXSA9IDEwOwogICAgfQoKICAgIHB1YmxpYyBOaW0oaW50IHBpbGVTaXplKXsKICAgICAgICBfcGlsZXMgPSBuZXcgaW50IFszXTsKICAgICAgICBfcGlsZXNbMF0gPSBwaWxlU2l6ZTsKICAgICAgICBfcGlsZXNbMV0gPSBwaWxlU2l6ZTsKICAgICAgICBfcGlsZXNbMl0gPSBwaWxlU2l6ZTsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNWYWxpZFBpbGUoaW50IHBpbGUpewogICAgICAgIGlmICgocGlsZSE9MHx8cGlsZSE9MXx8cGlsZSE9MikpewogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfWVsc2UKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CgoKICAgIHZvaWQgcmVtb3ZlUGllY2VzKGludCBudW1iZXIsIGludCB0YXJnZXRQaWxlKXsKICAgICAgICBpZiAoIShpc1ZhbGlkTW92ZShudW1iZXIsdGFyZ2V0UGlsZSkpKXsKICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibnVtYmVyIG9yIHRhcmdldFBpbGUgaXMgbm90IHZhbGlkOiAiICsgbnVtYmVyICsgInwiICsgdGFyZ2V0UGlsZSApOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBfcGlsZXNbdGFyZ2V0UGlsZV0gLT0gbnVtYmVyOwogICAgICAgIH0KICAgIH0KCiAgICBib29sZWFuIGlzVmFsaWRNb3ZlKGludCBudW1iZXIsIGludCB0YXJnZXRQaWxlKXsKICAgICAgICBpZiAoKG51bWJlciA+PSAxKSAmJiAoIWlzVmFsaWRQaWxlKHRhcmdldFBpbGUpKSl7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH1lbHNlewogICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJOdW1iZXIgaGFzIHRvIGJlIDEgb3IgaGlnaGVyIG9yIHRhcmdldCBwaWxlIHdhcyBub3QgdmlhYmxlOiBudW0gPSAiICsgbnVtYmVyICsgInRhcmdldFBpbGUgPSAiICsgdGFyZ2V0UGlsZSk7CiAgICAgICAgfQogICAgfQoKICAgIHN0YXRpYyBib29sZWFuIGlzR2FtZU92ZXIoKXsKICAgICAgICBmb3IoaW50IGk9MDsgaSA8IDM7IGkrKyl7CiAgICAgICAgICAgIGlmIChnZXRQaWxlKGkpICE9IDApewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAgIHN0YXRpYyBpbnQgZ2V0UGlsZShpbnQgdGFyZ2V0UGlsZSl7CiAgICAgICAgaWYgKGlzVmFsaWRQaWxlKHRhcmdldFBpbGUpKXsKICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGFyZ2V0IFBpbGUgaXMgbm90IHZhbGlkOiAiICsgdGFyZ2V0UGlsZSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgcmV0dXJuIF9waWxlc1t0YXJnZXRQaWxlXTsKICAgICAgICB9CiAgICB9CgoKCn0KCX0KfQ==