前提・実現したいこと
N行N列の二次元リストの各要素を比較し、上下左右の要素より大きい要素を出力したいです。
上下左右に要素がない場合は、その方向より大きかったとみなします。
発生している問題・エラーメッセージ
エラーメッセージは解決したものの、4/10ケースで出力結果が間違っています。
教えて頂きたいこと
より簡単に、エラーを起こしにくい書き方があれば教えて頂きたいです。
以下のコードは上下左右の要素と比較する関数を定義し、インデックスの値を変化させながら関数を実行しています。比較して大きかった場合のみカウンタを+1し、カウンタが4になった(=上下左右の要素より大きかった)要素をリストに格納しました。
エラーを解決しながらコードを書き、100分近くかかってしまっています。
それ自体は勉強になって良いのですが、より良い他の書き方が思いつきません。
該当のソースコード
x = 0 y = 0 # 以降のaは2次元リストで、全ての要素はint型です def r(a): # 右の要素と比較 if y + 1 < N: return a[x][y] - a[x][y + 1] else: return a[x][y] def l(a): # 左の要素と比較 if 0 < y: return a[x][y] - a[x][y - 1] else: return a[x][y] def t(a): # 上の要素と比較 if x - 1 > 0: return a[x][y] - a[x - 1][y] else: return a[x][y] def u(a): # 下の要素と比較 if x + 1 < N: return a[x][y] - a[x + 1][y] else: return a[x][y] while y < N: while x < N: count = 0 cul = r(a) if cul > 0: count +=1 cul = l(a) if cul > 0: count +=1 cul = t(a) if cul > 0: count +=1 cul = u(a) if cul > 0: count += 1 if count == 4: high.append(a[x][y]) x += 1 x = 0 y += 1
どんな細かい点でもご指摘頂けると幸いです。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/08/24 12:52
2021/08/25 01:05
退会済みユーザー
2021/08/25 08:43