問題タブ [magic-square]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4954 参照

java - 3x3 魔方陣を生成する

私が取り組んでいる 3x3 の魔方陣は、1 ~ 9 の数字で埋められています。各行、列、および対角線の値を足して 15 にする必要があります。次の疑似コードに従う必要があります。

最初の行を通過し、左上のスポットに 1 を追加し、上の中央のスポットに 2 を追加した後、その行に 15 を作成する方法がないことに気付くまで、私はそれを機能させました。私が間違いを犯している場所を確認したり、不足しているロジックを埋めたりできる人はいますか? ありがとう。

0 投票する
0 に答える
158 参照

c++ - ガベージ データを与える魔方陣配列

テキスト ファイルから魔方陣を決定する C++ プログラムを作成しています。マトリックスのサイズは正常に印刷されますが、内部のすべてのデータは同じゴミデータとして印刷されます。例:

コードは以下に掲載されています。

通常の印刷を妨げている明らかなものはありますか? たくさんの例を調べましたが、特定の問題を解決するものはないようです。ポインタやアドバイスをありがとう。

助けてくれてありがとう!

0 投票する
1 に答える
1399 参照

python-2.7 - Python デバッグにおける魔方陣

問題はもともとこのリンクにあります。私は Python コードを書きましたが、64 ポイント (合計ポイントは 100) を獲得しました。これは、私のコードに不足しているポイントがあることを示しています。16 のテスト ケースのうち 11 に合格しましたが、5 つのテスト ケースに問題がありました。私のコードのどこに欠けている点があり、どうすれば修正できますか?

問題文

魔方陣

ジョニーは、魔方陣 (すべての行、列、および対角線の合計が同じ数の二乗、つまり、主対角線 (左上隅から右下隅に向かう対角線を意味します) と逆対角線 (対角線を意味します) の両方) を設計しました。右上隅から左下隅に向かっている)。それをテストするプログラムを書きます。

タスク
与えられた正方形が魔法であるかどうか (つまり、すべての行、列、対角線の合計が同じかどうか) をチェックするプログラムを作成してください。

入力
1 行目: N 、正方形のサイズ (1 <= N <= 600)。次の N 行: 四角形、N スペースで区切られた行の前の整数、四角形の各行ごとのエントリを表します。

出力
最初の行: M 、合計が主対角線 (つまり、正方形の最初の要素を含むもの) の合計に達しない行の数。正方形が魔法の場合、プログラムは 0 を出力する必要があります。 次の M 行: 主対角線の合計に達しない行の並べ替えられた (インクリメンタルな順序で) リスト。行には 1、2、…、N の番号が付けられます。列には -1、-2、…、-N の番号が付けられます。対角線の番号は 0 です。

注: 出力の最終行の末尾に改行文字があります。
サンプル入力 1
3
8 1 6
3 5 7
4 9 2

サンプル出力 1
0

サンプル入力 2
4
16 3 2 13
5 10 11 8
6 9 7 12
4 15 14 1

サンプル出力 2
3
-2
-1
0

出力例 2 の説明入力四角形
は次のようになります 。

上の画像に示すように、正方形には 4 つの行 (オレンジ色で 1 から 4 のラベルが付いています) と 4 つの列 (緑色で -1 から -4 のラベルが付いています) があります。正方形の主対角線と対角線は、それぞれ赤と青で強調表示されます。

主対角線の合計は 16 + 10 + 7 +1 = 34
です。逆対角線の合計は 13 + 11 + 9 + 4 = 37 です。これは主対角線の合計とは異なるため、逆対角線に対応する値 0 は次のようになります。報告。
行 1 の合計 = 16 + 3 + 2 + 13 = 34。
行 2 の合計 = 5 + 10 + 11 + 8 = 34。
行 3 の合計 = 6 + 9 + 7 + 12 = 34。
行 4 の合計 = 4 + 15 + 14 + 1 = 34.
列 -1 の合計 = 16 + 5 + 6 + 4 = 31. これは主対角線の合計とは異なるため、値 -1 を報告する必要があります。
列 -2 の合計は 3 + 10 + 9 + 15 = 37 です。これは主対角線の合計とは異なるため、値 -2 を報告する必要があります。
列 -3 の合計は 2 + 11 + 7 + 14 = 34
です。列 -4 の合計は 13 + 8 + 12 + 1 = 34 です。
上記に基づいて、合計が主対角要素の合計にならない 3 つの線があります。それらは増分順にソートする必要があるため、出力は次のようになります:
3
-2
-1
0

0 投票する
1 に答える
74 参照

java - 誰かが私に2番目のforループを説明できます..私はすでに最初のものを理解しています..ありがとう

私はmagicsquareというJavaプロジェクトを作成しており、オンラインでその方法を検索しました。今、私は2番目のループがどのように機能するかを理解しようとしています.それが魔方陣を印刷して整列させることは知っていますが、詳細はわかりません. 私はすでに最初のものを知っています。誰かが私に2番目のループを説明してくれたら本当にありがたいです. ありがとう!

0 投票する
1 に答える
402 参照

matlab - 予期しない結果をもたらすランダム マジック マトリックス

Octaveでランダムな魔方陣を作成しようとしていて、次のようなものを試してみましたが、次のようrand(magic(3))な予期しない無限の結果が得られました。

試してみるrand(magic(4))と、5,6,7 ...の場合、次のようなメッセージが表示されました

エラー: メモリが不足しているか、次元が Octave のインデックス タイプに対して大きすぎます

このあいまいな結果の考えられる理由は何ですか?

0 投票する
1 に答える
68 参照

python - 私のコードのセクションがスキップされています (python 3)

私のプログラムは、行列が魔方陣かどうかをチェックすることになっています。ただし、「対角線の追加」と、すべての数値 (1 ~ 16) がテーブルに含まれているかどうかの確認はスキップされます。

0 投票する
2 に答える
1011 参照

java - 魔方陣 Java の .txt ファイルのテスト

質問したくなかったのですが、私はこの割り当てを理解できず、助けを求めたときに TA も理解できませんでした。

テキスト ファイルから入力を取得し、ファイル内の整数を配列リストに入れ、それが anxn 魔方陣かどうかをテストする必要があります。n は、配列リストの長さの平方根に等しくなります。完全な正方形でない場合は、すぐに魔方陣テストに失敗します。

とにかく、私はそれをほぼ完成させました。魔方陣テストの最後のステップで、教授が何を言っているのか、何をするように私たちに求めているのかを理解していないようです.

これらの最後の 4 つのステップの前のすべてのテストは問題なく動作します。手順の後に現在のコードを投稿します。

  1. rowSums と colSums を、エントリがすべてゼロの、長さ n の 2 つの配列とします。また、sumDiagMajor と sumDiagMinor は、それぞれテーブルの左上から右下、右上から左下の対角線に沿ったエントリの合計を表します。

  2. インデックス = 0 とする

  3. index = n2 まで繰り返す。 (a) rowSums[row] を ArrayList{index} だけインクリメントする。 (b) colSums[col] を ArrayList{index} だけインクリメントする。 (c) row = col の場合、sumDiagMajor を ArrayList{index} だけインクリメントする。(d) 行 + 列 = n-1 の場合、sumDiagMinor を ArrayList{index} だけ増やします (e) インデックスを 1 つ増やします

  4. sumDiagMajor が sumDiagMinor および rowSums と colSums の各エントリと等しい場合、テーブルは魔方陣です。そうでない場合は、そうではありません。

私の質問には、配列rowSumsとrowColsを適切にインクリメントしていますか? 彼は実際に行や列をどうするかを述べていないので、それらをゼロに初期化するのが最善の選択肢ですか?

これまでにすべて正しく行った場合、行は常に列と等しいため、sumDiagMajor が sumDiagMinor と等しくなることはありません。したがって、2 番目にネストされた if ステートメントは実行されません。したがって、すべてのテストが魔方陣であるとして除外されますか?

長い投稿で申し訳ありませんが、これは非常に紛らわしいです。