import java.util.Random ;
import java.util.Scanner ;
public class Main {
public static void main
( String [ ] args
) { String [ ] player
= { "あなた" ,
"コンピュータ" } ; String [ ] message
= { String .
format ( "%sが%s個取った" , player
[ 1 ] ,
"%d" ) ,
"石を取って!(1〜%d) > " ,
"現在の石の数: %d\n " ,
"%sの勝ち\n " } ; int iVal = rnd.nextInt ( 2 ) ;
int [ ] env = { 15 , iVal, iVal, 0 , 0 } ;
while ( true ) {
env = print( eval( read( env, message) , env) , message) ;
if ( env[ 0 ] < 1 ) {
System .
out .
printf ( String .
format ( message
[ 3 ] , player
[ env
[ 1 ] ] ) ) ; break ;
}
}
}
public static int read
( int [ ] env,
String [ ] prompt
) { Scanner scanner
= new Scanner
( System .
in ) ; int num = - 1 ;
if ( env[ 1 ] == 0 ) {
while ( true ) {
System .
out .
printf ( prompt
[ 1 ] , env
[ 0 ] > 3 ? 3 : env
[ 0 ] ) ; num = scanner.nextInt ( ) ;
if ( env[ 0 ] > 3 ) {
if ( ( num > 0 ) && ( num < 4 ) ) {
break ;
}
} else {
if ( ( num > 0 ) && ( num < env[ 0 ] + 1 ) ) {
break ;
}
}
}
}
return num;
}
public static int [ ] eval( int x, int [ ] env) {
if ( env[ 1 ] == 0 ) {
env[ 0 ] -= x;
env[ 1 ] = 1 ;
env[ 3 ] = x;
} else {
if ( env[ 2 ] == 0 ) {
if ( env[ 0 ] % 4 == 1 ) {
switch ( env[ 3 ] ) {
case 1 :
env[ 4 ] = 3 ;
case 2 :
env[ 4 ] = 2 ;
default :
env[ 4 ] = 1 ;
}
} else {
if ( env[ 0 ] > 3 ) {
env[ 4 ] = rnd.nextInt ( 3 ) + 1 ;
} else {
env[ 4 ] = rnd.nextInt ( env[ 0 ] ) + 1 ;
}
}
} else {
switch ( env[ 0 ] % 4 ) {
case 0 :
env[ 4 ] = 3 ;
break ;
case 2 :
env[ 4 ] = 1 ;
break ;
default :
env[ 4 ] = 2 ;
}
}
env[ 0 ] -= env[ 4 ] ;
env[ 1 ] = 0 ;
}
return env;
}
public static int [ ] print
( int [ ] env,
String [ ] message
) { if ( env[ 1 ] == 0 ) {
}
return env;
}
}
aW1wb3J0IGphdmEudXRpbC5SYW5kb207CmltcG9ydCBqYXZhLnV0aWwuU2Nhbm5lcjsKCnB1YmxpYyBjbGFzcyBNYWluIHsKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKICAgICAgICBTdHJpbmdbXSBwbGF5ZXIgPSB7IuOBguOBquOBnyIsICLjgrPjg7Pjg5Tjg6Xjg7zjgr8ifTsKICAgICAgICBTdHJpbmdbXSBtZXNzYWdlID0ge1N0cmluZy5mb3JtYXQoIiVz44GMJXPlgIvlj5bjgaPjgZ8iLCBwbGF5ZXJbMV0sICIlZCIpLCAi55+z44KS5Y+W44Gj44GmISgx44CcJWQpID4gIiwgIuePvuWcqOOBruefs+OBruaVsDogJWRcbiIsICIlc+OBruWLneOBoVxuIn07CiAgICAgICAgUmFuZG9tIHJuZCA9IG5ldyBSYW5kb20oKTsKICAgICAgICBpbnQgaVZhbCA9IHJuZC5uZXh0SW50KDIpOwogICAgICAgIGludFtdIGVudiA9IHsxNSwgaVZhbCwgaVZhbCwgMCwgMH07CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQoIiVz44GM5YWI6KGMIiwgcGxheWVyW2lWYWxdKSk7CiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgZW52ID0gcHJpbnQoZXZhbChyZWFkKGVudiwgbWVzc2FnZSksIGVudiksIG1lc3NhZ2UpOwogICAgICAgICAgICBpZiAoZW52WzBdIDwgMSkgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGYoU3RyaW5nLmZvcm1hdChtZXNzYWdlWzNdLCBwbGF5ZXJbZW52WzFdXSkpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBwdWJsaWMgc3RhdGljIGludCByZWFkKGludFtdIGVudiwgU3RyaW5nW10gcHJvbXB0KSB7CiAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoU3lzdGVtLmluKTsKICAgICAgICBpbnQgbnVtID0gLTE7CiAgICAgICAgaWYgKGVudlsxXSA9PSAwKSB7CiAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50Zihwcm9tcHRbMV0sIGVudlswXSA+IDMgPyAzIDogZW52WzBdKTsKICAgICAgICAgICAgICAgIG51bSA9IHNjYW5uZXIubmV4dEludCgpOwogICAgICAgICAgICAgICAgaWYgKGVudlswXSA+IDMpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKG51bSA+IDApICYmIChudW0gPCA0KSkgewogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmICgobnVtID4gMCkgJiYgKG51bSA8IGVudlswXSArIDEpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gbnVtOwogICAgfQogICAgcHVibGljIHN0YXRpYyBpbnRbXSBldmFsKGludCB4LCBpbnRbXSBlbnYpIHsKICAgICAgICBpZiAoZW52WzFdID09IDApIHsKICAgICAgICAgICAgZW52WzBdIC09IHg7CiAgICAgICAgICAgIGVudlsxXSA9IDE7CiAgICAgICAgICAgIGVudlszXSA9IHg7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGVudlsyXSA9PSAwKSB7CiAgICAgICAgICAgICAgICBpZiAoZW52WzBdICUgNCA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChlbnZbM10pIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52WzRdID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52WzRdID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudls0XSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBSYW5kb20gcm5kID0gbmV3IFJhbmRvbSgpOwogICAgICAgICAgICAgICAgICAgIGlmIChlbnZbMF0gPiAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGVudls0XSA9IHJuZC5uZXh0SW50KDMpICsgMTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBlbnZbNF0gPSBybmQubmV4dEludChlbnZbMF0pICsgMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKGVudlswXSAlIDQpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgIGVudls0XSA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgICAgICAgICAgZW52WzRdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgZW52WzRdID0gMjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbnZbMF0gLT0gZW52WzRdOwogICAgICAgICAgICBlbnZbMV0gPSAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZW52OwogICAgfQogICAgcHVibGljIHN0YXRpYyBpbnRbXSBwcmludChpbnRbXSBlbnYsIFN0cmluZ1tdIG1lc3NhZ2UpIHsKICAgICAgICBpZiAoZW52WzFdID09IDApIHsKICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQobWVzc2FnZVtlbnZbMV1dLCBlbnZbNF0pKTsKICAgICAgICB9CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKFN0cmluZy5mb3JtYXQobWVzc2FnZVsyXSwgZW52WzBdKSk7CiAgICAgICAgcmV0dXJuIGVudjsKICAgIH0KfQoK