以下のような集合やリストを作成して勝敗を判定することができます.
なお, 種類の手を表す文字列の頭文字が相異なることを利用して,実装量を減らすテクニック(例:'monkey'
→ 'm'
)もあります.
xxxxxxxxxx
win = {
'monkey': {'robot','ninja'},
'pirate': {'monkey','robot'},
'robot': {'ninja','zombie'},
'ninja': {'pirate','zombie'},
'zombie': {'monkey','pirate'}
}
SX = input()
SY = input()
print('Win' if SY in win[SX] else 'Lose')
少しテクニカルな別解を紹介します.
各文字列に対応する頂点を作り,'monkey'
→ 'robot'
→ 'ninja'
→ 'zombie'
→ 'pirate'
→ 'monkey'
という順でサイクル状に有向辺を張ります.
このグラフの上で, から への距離が 以下であるかどうかで勝敗を判定することができます.
xxxxxxxxxx
SX = input()[0]
SY = input()[0]
G = 'mrnzp'
dist = (G.index(SY) - G.index(SX)) % 5
print('Win' if dist<=2 else 'Lose')