问题标签 [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 投票
1 回答
116 浏览

if-statement - 禁用数组中的数字重复

我设法使程序正常工作,但问题出在第 3 行第 2 列和第 3 行第 3 列之间。每当我在第 3 行第 2 列和第 3 行第 3 列中输入两个重复数字时,它都会接受这两个数字。如果我在那里输入 1,它会循环回来。我唯一的问题是数字 8。为什么呢?

这是我的代码:

样本输出

0 投票
2 回答
2363 浏览

java - Java Magic Square - 求和列和求和行错误

我被分配了一项学校作业,以制作和检查用户在 N*N 矩阵中生成的二维数组中的“魔方”。

到目前为止,我已经正确地编写了大部分代码(我已经单独测试了每种方法)。但是,我无法纠正在我的“sumColumn”和“sumRow”方法中不断出现的两个最终错误。这是我上述两种方法的代码:

这是输出以及从 main 方法调用时出现的错误:

对“sumRow”和“sumColumn”的一些摆弄会产生另一个错误:

任何帮助将不胜感激解决这个问题!谢谢!

PS:我上个月才开始编程,所以请善待:3

编辑:这里是检查每行、列以及主对角线和次对角线是否等于制作魔方的方法。

0 投票
0 回答
158 浏览

c++ - 提供垃圾数据的魔方阵列

我正在编写一个 C++ 程序,它将从文本文件中确定幻方。虽然矩阵的大小打印得很好,但我里面的所有数据都打印为相同的垃圾数据。例子:

代码贴在下面:

有什么明显的妨碍正常打印的吗?我查了很多例子,但似乎没有一个能解决我的具体问题。感谢您的任何指示或建议。

谢谢你的帮助!

0 投票
1 回答
1399 浏览

python-2.7 - Python 调试中的魔方

问题最初出在链接中。我写了一个 Python 代码,但我得到了 64 分(总分是 100),这表明我的代码有一些缺失的点。我通过了 16 个测试用例中的 11 个,但 5 个测试用例对我来说有问题。你能说我的代码哪里有一些缺失点,我该如何解决?

问题陈述

魔方

约翰尼设计了一个幻方(所有行、列和对角线的总和相同的数字平方,即主对角线 - 意味着从左上角到右下角的对角线 - 和对角线 - 意味着对角线从右上角到左下角)。编写一个程序来测试它。

任务
编写一个程序,检查给定的正方形是否是魔法(即所有行、列和对角线的总和都相同)。

输入
第一行: N ,正方形的大小 (1 <= N <= 600)。接下来的 N 行:正方形,行前 N 个空格分隔的整数,表示正方形每行的条目。

输出
第一行: M ,总和不等于主对角线之和的行数(即包含正方形第一个元素的行)。如果 Square 很神奇,程序应该输出 0。 接下来的 M 行:一个排序(按递增顺序)的行列表,这些行的总和不等于主对角线的总和。行编号为 1,2,…,N;列编号为 -1、-2、…、-N;对角线编号为零。

注意:输出的最后一行末尾有一个换行符。
样本输入 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
的说明 输入方块如下所示:http: //i.stack.imgur.com/JyMgc.png (对不起链接,但由于声誉我无法添加图像)

如上图所示,该正方形有 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 - 有人可以向我解释第二个 for 循环.. 我已经理解第一个.. 谢谢

我正在创建一个名为 magicsquare 的 java 项目,我已经在网上搜索了如何做到这一点。现在,我试图了解第二个循环是如何工作的,我知道它打印并对齐幻方,但我不知道细节。我已经知道第一个了。如果有人向我解释第二个循环,我将不胜感激。谢谢!

0 投票
1 回答
402 浏览

matlab - 随机魔法矩阵给出意想不到的结果

我试图在 Octave中创建随机幻方并尝试了类似的东西rand(magic(3)),它给出了意想不到的无穷无尽的结果,如下所示:

在尝试rand(magic(4))5,6,7 时...它给出了这样的消息

错误:内存不足或尺寸对于 Octave 的索引类型来说太大

这种模糊结果的可能原因是什么?

0 投票
1 回答
68 浏览

python - 我的代码部分被跳过(python 3)

我的程序应该检查矩阵是否是幻方。但是它会跳过“添加对角线”并检查是否所有数字(1-16)都在表中。

0 投票
1 回答
532 浏览

java - 如何仅使用一维数组生成幻方?

我被指派提示用户给出幻方的顺序(3 阶幻方将是 3x3 矩阵),然后在不使用二维数组的情况下生成该顺序的幻方。

以下是我所知道和理解的:

  • 数组将具有平方元素。
  • 打印表格时,数组中数字的位置为[order × row + col]
  • 数组在表上的位置的索引是 (index/order, index % order)

这是我得到的,但不明白如何正确实施:

  1. row = order - 1,col = order/2 和 i = 1
  2. 重复以下操作,直到 i = order^2 + 1:

    (a) 魔法[索引] = i

    (b) 将 row 和 col 加 1。即 row = (row + 1) mod order 和 col = (col + 1) % order

    (c) 如果魔法[索引] != 0

    (d) i 加 1

到目前为止,这是我的代码:

现在我只是担心获取和理解案例 1。文件输出的 Try Catch 语句,但我可以自己做。目前最大的问题是理解如何创建这个循环。

0 投票
2 回答
1011 浏览

java - 测试 Magic Square Java 的 .txt 文件

我不想问,但我想不通这个任务,当我寻求帮助时,TA也想不通。

我必须从文本文件中获取输入,将文件中的整数输入到数组列表中,然后测试它是否是 anxn 幻方。n 等于数组列表长度的平方根。如果它不是一个完美的正方形,它会立即通过幻方测试。

无论如何,我已经差不多完成了;我只是似乎不明白我的教授在魔方测试的最后一步告诉/要求我们做什么。

在这最后四个步骤之前的所有测试都完美无缺。我将在这些步骤之后发布我当前的代码。

  1. 让 rowSums 和 colSums 是长度为 n 且条目全为零的两个数组。此外,设 sumDiagMajor 和 sumDiagMinor,分别表示表格左上角到右下角和右上角到左下角的条目之和。

  2. 设索引 = 0

  3. 重复直到 index = n2 (a) rowSums[row] 增加 ArrayList{index} (b) colSums[col] 增加 ArrayList{index} (c) 如果 row = col,则 sumDiagMajor 增加 ArrayList{index}。(d) 如果 row + col = n−1,则将 sumDiagMinor 增加 ArrayList{index} (e) 将 index 增加 1

  4. 如果 sumDiagMajor 等于 sumDiagMinor 以及 rowSums 和 colSums 的每个条目,则该表是一个幻方;否则,它不是。

我的问题包括,我是否正确地增加了数组 rowSums 和 rowCols?他从未真正说明如何处理行或列,因此将它们初始化为零是最佳选择吗?

如果到目前为止我所做的一切都是正确的,那么 sumDiagMajor 怎么能等于 sumDiagMinor 因为行总是等于 cols,所以第二个嵌套的 if 语句将永远不会运行。因此它将排除所有测试为幻方?

对不起,很长的帖子,但这很令人困惑。