解は得られるのですが、コードが長すぎる気がしており、もっと綺麗に書けるのではないかと悩んでいます。
やりたいこととしては、指定された行列のマス目から、方向を入力すれば、その方向のマス目が表示されるようにしたいです。
正方行列のマス目にはそれぞれ番号が左上から下図のように振られております。
| | A | B | C | D |
|a | 0 | 1 | 2 | 3 |
|b | 4 | 5 | 6 | 7 |
|c | 8 | 9 |10|11|
|d |12|13|14|15|
例えば、スタートが7で、upを入力すれば、3が返ってきます。
選択できる方向は(上、下、右、左、右上、左上、右下、左下)の8方向です。
無効な方向が入力された時は、”無効”を返します。
例えば、2の場合ですと、"上"、もしくは"右上"、もしくは"左上"が入力されると、”無効”になります。
現在、1行目について、以下のコードを書きましたが、
これと同等の長さのコードを1列、grid列、grid行、のために書くのは、長すぎやしないかと思っており、他にいい方法があるのではないかと悩んでいます。
#num:指定のマス目番号 #grid:正方行列のサイズ #direction: 方向 def num_direction(num,grid,direction): while num < grid: if direction == "下": return index + grid_size elif direction == "左": return index - 1 elif direction == "右": return index + 1 elif direction == "左下": return index + grid_size - 1 elif direction == ”右下”: return index + grid_size + 1 else: return "None"
説明がわかりにくいかもしれませんが、アドバイスのほど宜しくお願い致します。
回答6件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。