[解決済み] スパイラルでループする
2022-05-02 05:28:41
質問
友人がNxM行列(NとMは奇数)の要素を通してループさせるアルゴリズムを必要としていました。私は解決策を思いついたが、私は仲間のSO'erがより良い解決策を思いつくかどうかを知りたかった。
この質問に対する回答として、私の解答を掲載します。
出力例です。
3x3の行列の場合、出力は以下のようになるはずです。
(0, 0) (1, 0) (1, 1) (0, 1) (-1, 1) (-1, 0) (-1, -1) (0, -1) (1, -1)
さらに、アルゴリズムは非正方行列をサポートする必要があり、例えば5x3行列の場合、出力は次のようになります。
(0, 0) (1, 0) (1, 1) (0, 1) (-1, 1) (-1, 0) (-1, -1) (0, -1) (1, -1) (2, -1) (2, 0) (2, 1) (-2, 1) (-2, 0) (-2, -1)
解決方法は?
以下は、私の解決策です(Pythonで)。
def spiral(X, Y):
x = y = 0
dx = 0
dy = -1
for i in range(max(X, Y)**2):
if (-X/2 < x <= X/2) and (-Y/2 < y <= Y/2):
print (x, y)
# DO STUFF...
if x == y or (x < 0 and x == -y) or (x > 0 and x == 1-y):
dx, dy = -dy, dx
x, y = x+dx, y+dy
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 円周率の計算が正確かどうかを判断するにはどうしたらよいですか?
-
[解決済み] Googleの "Did you mean? "はどうなっているのか?アルゴリズムの仕組みとは?[クローズド]
-
[解決済み] Big-O表記とLittle-O表記の違いについて
-
[解決済み] 2次元の配列を回転させる方法は?
-
[解決済み] 数の素因数分解の最大値を求めるアルゴリズム
-
[解決済み] 任意の二分木における2つのノードの最小公倍数の先祖を見つけるには?
-
[解決済み] Diff Algorithm? [クローズド]
-
[解決済み] 窓から猫を放り投げる
-
[解決済み] O(1), O(n log n), O(log n)の複雑さを持つアルゴリズムの例
-
[解決済み] 3つのスタックを持つ待ち行列を実装するには?