白駿16675両手

1545 ワード

質問する


https://www.acmicpc.net/problem/16675

に答える

ms1,ms2,tk1,tk2 = ('SPR'.index(i) for i in input().split())

check = False

if ms1 == ms2 :
  if ms1 == 0:
    if 2 in (tk1,tk2):
      check = True
      print("TK")
  
  else:
    if (ms1-1) in (tk1,tk2):
      check = True
      print("TK")

  
if tk1 == tk2:
  if tk1 == 0:
    if 2 in (ms1,ms2):
      check = True
      print("MS")

  else:
    if(tk1-1) in (ms1,ms2):
      check = True
      print("MS")

if check == False:
  print("?")

結果



別の解釈

ms1,ms2,tk1,tk2 = ('SPR'.index(i) for i in input().split())

if ms1 == ms2 and (ms1+2)%3 in (tk1,tk2):
  print("TK")
elif tk1 == tk2 and (tk1+2)%3 in (ms1,ms2):
  print("MS")
else:
  print('?')

新学


ms1,ms2,tk1,tk2 = ('SPR'.index(i) for i in input().split())


このような方法で受け取ったのは初めてのようです.
('ABC'.index('A'))
作ると出てくる

2 in (tk1,tk2)


このように2つの文字列をパレットに挿入し、特定の値が含まれているかどうかを検索します.
最初はtk 1,tk 2を1つのアレイに入れて、アレイに2があるかどうかを見るべきだと思いました.
球面アレイを作成して追加する必要はなく、tupleのようにk in(a,b)を直接比較することもできます.
もう1つはモジュール化演算を用いてコード量を減らす解である.
振り返ると、実行速度自体は同じです
この場合にモジュールを使えば、うまく使えるはずです.
終わります.