问题标签 [perfect-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 回答
29 浏览

python - 在没有数学的情况下,如何在 Python 中接受多个输入并检查它是否是一个完美的正方形?

我尝试了一些东西,但被困在这里,虽然这适用于单输入,但不适用于多输入。

0 投票
1 回答
28 浏览

python - 在不使用数学的情况下获取多个输入并检查它们是否是完美的正方形

我是一个新的 python 程序员,所以我正在尝试不同的低级问题。我首先尝试了 for 循环,但无法弄清楚如何使用多个输入来做到这一点。我哪里做错了?当我输入一个完美的正方形时,它不起作用。

0 投票
1 回答
100 浏览

java - 找到单个数字的最大完美平方的最快函数?

我正在尝试编写一种算法,该算法将找到给定整数的最大完美平方,并尽可能快地每次从总数中减去它们的值。这有点难以解释,对于有点模棱两可的标题,我深表歉意,所以我将给出一些输入/输出示例:


  • 输入:23
  • 输出:[16、4、1、1、1]
  • 解释:25 (5x5) 太大,但 16 (4x4) 适合。将其添加到数组中并从 23 (7) 中减去 16。下一个适合的最大完美正方形是 4 (2x2),因​​此将其添加到数组中并从 7 (3) 中减去 4。从这里开始,最大的完美正方形就是 1 (1x1)。所以将 1 添加到数组中,直到我们得到 0。

  • 输入:13
  • 输出:[9, 4]
  • 解释: 9 (3x3) 是最大的正方形,因此将其添加到数组中并从 13 (4) 中减去。那么 4 也是一个完美的正方形,所以添加它并在那里结束。

我的解决方案如下(变量名称与向我提出问题的方式相关):

我正在征求对我的解决方案的意见,以及我是否可以以任何方式优化它以提高时间/空间复杂性、简单性(同时保持易于阅读/理解)等。它目前适用于我编写的所有测试,但我可能缺少边缘情况或需要改进的地方 - 输入的起始平方码可以在 1 到 1,000,000 之间。任何建设性的反馈表示赞赏:)

感谢您的关注!

0 投票
1 回答
92 浏览

algorithm - 在 Prolog - Magic Square 中限制搜索

我想用 Prolog 程序解决最完美的魔方。

维基页面:https ://en.wikipedia.org/wiki/Most-perfect_magic_square

当我输入查询“magic_square(4, [[7, 12, 1, 14], [2, 13, 8, 11], [16, 3, 10, 5], [9, 6, 15, 4] ])。” (这是一个有效的魔方)我的程序返回 true。所以我假设我的规则基础是正确的。

不幸的是,如果超过 9 个值是未知的,则需要很长时间才能找到解决方案。

我需要帮助来限制我的搜索,以便程序在合理的时间内找到解决方案。理想情况下,它也应该适用于 12 x 12 网格(以及其他 4 的倍数)并且没有给出值:magic_square(12, Matrix)。

非常感谢!

这是我的代码:

0 投票
1 回答
50 浏览

algorithm - Prolog 算法适用于 4x4,但不适用于更高维度

这是以下问题的后续问题:限制 Prolog 中的搜索 - Magic Sqare

感谢Isabelle Newbie迄今为止的帮助。

在 Isabelle Newbie 的帮助下,我的代码可以正常工作,但遗憾的是仅适用于 4x4 Squares。

我对 Prolog 很陌生,所以也许我错过了一些明显的东西。

下面的代码基本上很快就生成了一个 4x4 的幻方。我以某种方式实现了所有规则,它们也应该适用于更高尺寸的正方形,如 8x8 或 12x12,但由于某种原因它不起作用。

4x4 魔方(有效):

8x8 幻方(不起作用):

0 投票
1 回答
90 浏览

java - 检查完美正方形的功能不适用于大量数字

我遇到了一种算法,可以在 O(logN) 时间内判断给定数字是否是完美平方。

这是这个想法的实现(JAVA)。

这适用于像256,808201 等数字但对于像999966000289.

我不知道为什么?