#/*********************************************************** # nim.c -- 三山くずし #***********************************************************/ a = [] for i in 1..3 printf("%d 番の山の石の数? ", i); a[i] = gets.to_i if (a[i] <= 0); exit 1; end end my_turn = 0 while ((my_turn ^= 1) > -1) max = 0 for i in 1..3 printf(" %d ", i) for j in 1..a[i]; printf("*"); end printf("\n") if (a[i] > max) max = a[i]; imax = i end end if (max == 0); break; end if (my_turn == 1) printf("私の番です.\n") x = a[1] ^ a[2] ^ a[3]; # 排他的論理和 j = 0 for i in 1..3 if (a[i] > (a[i] ^ x)); j = i; end end if (j != 0); a[j] ^= x; else; a[j] ^= x; end else begin printf("何番の山からとりますか? ") i = gets.to_i end while ( i < 1 || i > 3 || a[i] == 0) begin printf("何個とりますか? ") n = gets.to_i end while ( n <= 0 || n > a[i]) a[i] -= n end end if (my_turn == 1); printf("あなたの勝ちです!\n") else; printf("私の勝ちです!\n") end exit 0