Paizaレベルアップ問題集に取り組んだ内容で気になったことについて、自分用のメモ
入力がh行、w列で与えられるとき、以下のように取得することでコードを短く書ける。listの値のところに、for文を書ける!
5 3
###
###
###
###
###
h, w = map(int, input().split())
s = [list(input()) for _ in range(h)]
少し、詰まったのでメモ・・・
予め0で埋めた2次元リストを作成しようと思い、以下のコードで作成したところ、1行の値を書き換えたら、他の行の値も変更された。これは、1つの[0,0,0]の配列を各行が指し示している状態になっていたようだ。。。
g = [[0 for _ in range(3)]]*3
>> [[0,0,0],[0,0,0],[0,0,0]]
g[0][1] = 1
>> [[0,1,0],[0,1,0],[0,1,0]]
これを回避するために、以下のようにした。
g = []
for i in range(3):
g.append([0 for _ in range (3)])
これでもできるけど、調べたら、以下のほうがきれいな気がする。。。
g = [[0] * n for _ in range(3)]
しかし、最初のコードがだめなら、このコードは一つの[0]を複数行、列で見てることにならないの。。。?だれか教えてください。。。
自分が向いている方角から、北(0),東(1),南(2),西(3)として、
右に行くときは、(1+[現在の方角])%4
で次に自分が向く方角が求められる。
また、左に行くときは(3+[現在の方角])%4
で求められる。
directions = ["N", "E", "S", "W"]
now_direction = 0
lr = input()
if lr == "L":
now_direction = (3 + now_direction) % 4
else:
now_direction = (1 + now_direction) % 4
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント