# ZeroJudge《h026 猜拳》解
練習使用函式的解法
```python=
def win (x): # 回傳會贏 x 的拳
if x == 0:
return 5
elif x == 2:
return 0
else:
return 2
def bro (prev1, prev2):
if prev1 == prev2: # 題敘:如果絲絲連續兩輪出了一樣的拳,
return win (prev1) # 下一輪他就會出打敗絲絲前兩輪的拳。
else: # 否則,
return prev1 # 他下一輪會出跟絲絲前一輪一樣的拳。
f = int (input ()) # 哥哥的第一拳 (題敘)
n = int (input ()) # 絲絲總共出了幾拳 (題敘)
ys = list (map (int, input ().split ())) # 絲絲每輪出的拳
# 下面這段程式根據題敘產生哥哥每輪出的拳
bs = [ f ] # 測資提供了第 1 拳
if n > 1:
bs.append (ys [0]) # 第 2 拳
if n > 2: # 緊接著 bs.append 會是第 3 拳
for i in range (1, n): # List 的序號從 0 開始
bro.append (win [sis [i]])
else:
bro.append (sis [i])
for i in range (n):
print (bro [i], end=" ")
if bro [i] != sis [i]:
break
if bro [i] == sis [i]:
print (": Drew", end=" ")
elif bro [i] == win [sis [i]]:
print (f": Won", end=" ")
else:
print (f": Lost", end=" ")
print ("at round", i + 1)
```
比較高級的解法
```python=
win = [ 5, 1, 0, 1, 1, 2 ]
# 0 2 5
bs = [ int (input ()) ]
n = int (input ())
ys = list (map (int, input ().split ()))
if n > 1:
bs.append (ys [0])
if n > 2:
for i in range (1, n):
if sis [i] == sis [i - 1]:
bro.append (win [sis [i]])
else:
bro.append (sis [i])
for i in range (n):
print (bro [i], end=" ")
if bro [i] != sis [i]:
break
if bro [i] == sis [i]:
print (": Drew", end=" ")
elif bro [i] == win [sis [i]]:
print (f": Won", end=" ")
else:
print (f": Lost", end=" ")
print ("at round {i + 1}")
```