Module Program
Sub Main(args As String())
Dim a(4), i, j, k, imax, nn As Integer
Dim my_flag As Boolean
Dim dmyss As String
For i = 1 To 3
Console.Write(i & "番目の石の数? ")
dmyss = Console.ReadLine()
a(i) = Int(dmyss)
If a(i) <= 0 Then End
Next
my_flag = True
While True
Console.WriteLine()
Console.WriteLine(String.Format("現在の石 {0}, {1}, {2}", a(1), a(2), a(3)))
imax = 1
For i = 2 To 3
If a(imax) < a(i) Then
imax = i
End If
Next
If a(imax) = 0 Then Exit While
If my_flag = True Then
For i = 1 To 3
j = i + 1
If j > 3 Then j -= 3
k = i + 2
If k > 3 Then k -= 3
If a(i) > (a(j) Xor a(k)) Then
nn = a(j) Xor a(k)
Exit For
End If
Next
If i = 4 Then
i = imax
nn = a(imax) - 1
End If
Console.WriteLine("コンピュータ: {0}の山から{1}個取りました。", i, a(i) - nn)
a(i) = nn
Else
Do
Console.Write("何番目の山から取りますか(1-3)? ")
dmyss = Console.ReadLine()
i = Int(dmyss)
Loop While (i < 1 Or 3 < i Or a(i) = 0)
Do
Console.Write("何個取りますか? ")
dmyss = Console.ReadLine()
nn = Int(dmyss)
Loop While (nn <= 0 Or a(i) < nn)
a(i) -= nn
End If
my_flag = Not my_flag
End While
If my_flag = True Then
Console.WriteLine("--- あなたの勝ち ---")
Else
Console.WriteLine("--- コンピュータの勝ち ---")
End If
'Console.WriteLine("Hello World!")
End Sub
End Module
カテゴリー