[イコール]体現-王室の夜



🔔 質問する


幸福王国の王室庭園はチェス盤のような8×8座標平面です.ナイトは王室の庭の特定の部屋に立っている.ナイトはとても忠実な臣下で、毎日武術を練習しています.ナイトは乗馬中なので、移動時はL字形でしか移動できず、庭の外から出られません.特定の場所から次の2つの状況に移動できます.
  • は2つの格子を水平に移動し、その後、1つの格子
  • を垂直に移動する.
  • 垂直に2つのグリッドを移動し、次に水平に1つのグリッド
  • を移動する
    このような8×8座標平面上でノードの位置を指定し、ノードが移動可能である場合は、その数を出力するプログラムを作成します.このとき,王室の庭における行為を表現する位置は1から8であり,表現列の位置はaからhである.
    たとえば、あるノードがa 1上で移動可能である場合、次の2つのケースがあります.a 1の位置は座標平面上の隅に相当する位置にあるため、庭の外から出られないことが多い.
  • 右に2つのグリッドを移動し、次に1つのグリッド
  • を下に移動します.
  • は2つのグリッドを下に移動し、次に右に1つのグリッド
  • を移動する.

    入力

  • の最初の行に、現在のナイトが位置する座標を表す文字列を入力します.2文字からなります.入力文字はa 1のように列と行からなる.
  • しゅつりょく

  • の最初の行にナイトが移動できる場合は、数値を出力します.
  • 🎯 解答方法


    この問題はナイトが移動できる経路を1つずつ決定すればよい.ただし、8 x 8座標平面から逸脱しないように注意深くチェックする必要があります.ナイトは彼が2つのルートで移動できると言った.
  • は2つの格子を水平に移動し、その後、1つの格子
  • を垂直に移動する.
  • 垂直に2つのグリッドを移動し、次に水平に1つのグリッド
  • を移動する
    ある夜の移動経路をmove type変数に入れると、この2つのルールに従ってmove type=[(-2,1)、(-2,1)、(2-1,2)、(-1,2)、(1-2)、(1,2)、(1,2)、(1,2)、(1,2)、(1,2)]]に値を代入できます.現在の位置を基準にして、下と右は正の値で、上と左は負の値の結果です.ナイトの現在の位置が指定されている場合は、現在の位置に移動パスを追加し、8 x 8座標平面上にあるかどうかを確認できます.

    💻 Pythonコード

    n = input()
    row = int(n[1])
    col = int(ord(n[0])) - int(ord('a')) + 1
    
    move_type = [(-2,1),(-2,-1),(2,1),(2,-1),(-1,2),(-1,-2),(1,-2),(1,2)]
    
    answer = 0
    for x, y in move_type:
        nrow = row + x
        ncol = col + y
    
        if nrow >= 1 and nrow <= 8 and ncol >= 1 and ncol <= 8:
            answer += 1
    
    print(answer)