如何在 PHP 中创建幻方?

2023-12-14

我想尝试用 PHP 创建一个魔方(即所有加起来等于相同值的数字网格),但我真的不知道从哪里开始。我知道创建幻方的许多方法,例如在固定位置开始“1”,然后每次迭代都朝特定方向移动。但这并没有创建一个真正随机的魔方,而这正是我的目标。

我希望能够生成一个由 N² 数字组成的 N×N 幻方,其中每行和每列的总和为 N(N²+1)/2 (例如,一个 5x5 的正方形,其中所有行/列的总和为 65 —对角线无关紧要)。

有人可以提供一个起点吗?我不想让任何人为我做这项工作,我只需要知道如何开始这样的项目?

我知道一个用 Java 编写的生成器(http://www.dr-mikes-math-games-for-kids.com/how-to-make-a-magic-square.html)但我最后一次使用 Java 已经是 10 多年前了,之后我很快就放弃了它。因此,我不太明白这段代码实际上在做什么。然而,我确实注意到,当您生成一个新的正方形时,它会按顺序显示数字 1-25(对于 5x5 的正方形),然后快速生成新的随机正方形。


一个简单的 Java 程序可以做到这一点,可以很容易地用任何语言重写:

/*
* Magic Square
*/

int order = 5;

for (int row = 0; row < order; row++) {
    for (int col = 0; col < order; col++) {
        int rowMatrix = (((order + 1) / 2 + row + col) % order);
        int colMatrix = (((order + 1) / 2 + row + order - col - 1) %
order) + 1;
        System.out.print(((rowMatrix * order) + colMatrix) + "\t");
    }
    System.out.println(); 

算法:

  1. 形成一个方阵,依次写入数字 1 到 nxn。这里 n 是 幻方的顺序,比如 5。


1        2       3       4       5  
6        7       8       9      10
11      12      13      14      15
16      17      18      19      20
21      22      23      24      25
  
  1. 我们试图从上面确定最终的矩阵。表格二 矩阵,一个用于标识行,另一个用于标识 柱子。


4       5       1       2       3               3       2       1       5       4
5       1       2       3       4               4       3       2       1       5
1       2       3       4       5               5       4       3       2       1
2       3       4       5       1               1       5       4       3       2
3       4       5       1       2               2       1       5       4       3
  

您将看到第一个矩阵的中间列以 1 开头, 是按顺序排列的。两侧的列可以通过减去来填充 并添加 1。第二个矩阵是镜像。

  1. 通过将初始矩阵中的数字写入 对应的行和列。例如 4, 3(步骤 2)= 18(步骤 1)


18      22       1       10      14
24       3       7       11      20
5        9      13       17      21
6       15      19       23       2
12      16      25        4       8
  

以上步骤适用于任何订单的Magic Square!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 中创建幻方? 的相关文章

  • 将 Hbase 与 PHP 集成 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经安装了 Hbase 现在我正在寻找一些 PHP 库来将 hbase 与 PHP 集成 我尝试了 2 个库 第一个是我尝试与 th
  • Laravel 4,->withInput(); = 未定义的偏移量:0

    我在这里和 Laravel 论坛上进行了长时间的搜索 但我找不到这个问题的答案 gt withInput 咳出Undefined offset 0 对于上下文 控制器 public function getJobs position opt
  • $_POST 最大数组大小

    我有一个非常大的表单 有 gt 1000 个元素 它们已经嵌套在表单 html 结构中 foreach from result item item tr td td tr
  • Laravel 内存问题?

    各位 我在 DO 服务器上遇到这样的问题 我已经尝试了一切 整个网站在使用 Homestead 的 Linux 服务器上 100 正常工作 但上传后 它只能工作一次 在重新加载或刷新页面后会多次下降 我尝试增加 apache 服务器的内存
  • php:验证 POST 的最佳方法

    我一直在使用下面的代码来验证 POST 的用户输入 if isset POST name empty POST name n POST name else errors Please give a name 这段代码检查是否确实设置了 na
  • PHP - 将数据从一个站点安全地传递到另一个站点

    我有一个可以接受来自多个站点的请求的站点 有点像升级检查 这些网站将发送用户名 密码 应用程序版本等信息 然后我的网站将根据这些信息发送响应 基本上这是一个 GET请求 例如 http www mysite com user boo pas
  • 选择 mysql 枚举的 php 函数

    因此 我创建了一个函数 它将从数据库中的枚举字段中提取值
  • PHP Laravel 路由问题

    我的设置目前看起来像这样 应用程序 控制器 register php class register Controller extends Base Controller public restful true public function
  • 如何让 CodeIgniter 接受“查询字符串”URL?

    根据 CI 的文档 CodeIgniter 使用基于分段的方法 例如 example com my group 如果我想找到一个特定的组 id 5 我可以访问 example com my group 5 并在控制器中定义 function
  • Composer 安装失败并出现总线错误:10

    我正在尝试安装作曲家 curl sS https getcomposer org installer php 此操作失败并显示错误消息 Bus error 10 我也尝试过 php r readfile https getcomposer
  • 无法在 PHP 中使用 SFTP

    我正在用 PHP 编写一个简单的 SFTP 客户端 因为我们需要通过 n 个远程服务器以编程方式检索文件 我正在使用 PECL SSH2 扩展 不过 我遇到了障碍 php net 上的文档建议您可以这样做 stream fopen ssh2
  • PHP中的“@/path/to/a/file”是什么意思?

    我偶然发现以下代码示例 image file path code tmhOAuth gt request POST https upload twitter com 1 statuses update with media json arr
  • 在 3d 空间中的两个平面之间进行插值

    我正在开发一种工具 可以让您在 3D 体积 上圈出 包围事物 我想通过标记 切片 1 和 3 并从该信息 填充 切片 2 来节省时间 两个简单的解决方案是 1 slice2 slice1 AND slice3 gets the overla
  • Php mail() vs Yahoo:有人可以简单解释YAHOO从php邮件功能接收邮件所需的步骤吗?

    我已经看到了关于这个主题的数千个类似问题 并且可以肯定的是我知道 标记为重复问题 SO中的事情 然而 仍然不清楚如何或必须做什么 简单来说 才能从 PHP mail 函数接收雅虎收件箱电子邮件 在雅虎网站上 他们提供了一个示例脚本来发送邮件
  • K2_内容模块评级

    我一直在category item php 中重建标准K2 评级 以查看评级从显示为星星到显示为数字 我所做的是 我替换了这段代码 div div class itemRatingForm ul class itemRatingList l
  • PHP - 获取 URL 中写入的 $_GET 参数字符串的最简单方法

    我正在尝试从一个页面重定向到另一页面 同时保留参数 例如如果我有一个页面 page php param1 1 param2 2 提取 param1 1 param2 2 的最简单方法是什么 Use SERVER QUERY STRING 访
  • 错误:SQLSTATE[HY000] [2002] 无法建立连接,因为目标计算机主动拒绝连接

    当我调试代码时突然发生错误 它有一系列关于数据库连接的错误 ERROR SQLSTATE HY000 2002 No connection could be made because the target machine actively
  • PDO 连接字符串:最好的方法是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我想使用 php pdo 制作一个后端应用程序 我发现了很多不同的方法来处理 PDO 连接字符串 我想知道使用 pdo 执行连接字符串的最佳方法
  • PHP Imagick - setTextEncoding() 函数不起作用

    我正在尝试在 Imagick 对象上添加一些文本 但是我使用 setTextEncoding 函数 它仍然不起作用 draw new ImagickDraw draw gt setTextEncoding utf 8 draw gt set
  • 如何对“2-1”这样的字符串进行数学计算以产生“1”?

    我只是想知道 PHP 是否有一个函数可以接受像这样的字符串2 1并产生它的算术结果 或者我必须手动执行此操作explode 获取算术运算符左侧和右侧的值 我知道这个问题很老了 但我昨晚在寻找不太相关的东西时遇到了它 而且这里的每个答案都很糟

随机推荐

  • React onClick 和 PreventDefault() 链接刷新/重定向?

    我正在使用 React 渲染链接 render gt a upvote a 然后 上面我有 upvote 功能 upvote gt do stuff ajax 在链接之前 我在那个地方有跨度 但我需要切换到链接 这就是麻烦 每次我点击 up
  • 从 SignalR 中心发送异步邮件

    我需要发送一封电子邮件作为 SignalR 中心调用的结果 我不希望发送同步执行 因为我不想绑定 WebSocket 连接 但如果可能的话 如果有任何错误 我希望通知调用者 我想我可以在集线器中使用类似的东西 减去错误处理和我想要它做的所有
  • 获取运行 JVM 的 GC 设置 [重复]

    这个问题在这里已经有答案了 有没有办法获取正在运行的 JVM 的 GC 设置 我正在尝试查看运行 SerialGC ParallelGC ParallelOldGC ConcurrentMarkSweepGC 等的 GC 算法 JVM 为此
  • CMake 无法确定 C++ 的链接器语言

    我正在尝试使用 Visual Studio 2010 和 Cygwin 在 Windows 7 x64 上运行 cmake hello world 程序 但似乎都无法工作 我的目录结构如下 HelloWorld CMakeLists txt
  • Webpack怎么直接引入webpack.config.babel.js呢?

    我是一个相当大的 ReactJS 项目的新手 在顶层 它确实not有平常的webpack config js 但只有一个 webpack config babel js 这个确实被使用了 我可以在运行时验证 gt webpack 被调用 通
  • CSS 样式不适用于 ID

    我在用asp net C 对于我的项目 目前我有一个default aspx页面和母版页 default aspx页面有很多控件 并且对于每个控件我都定义了class and id 我面临的问题是当我申请时style使用特定的控件class
  • 具有 NFS 持久卷的 Kubernetes 有状态集

    我有一个kubernetes集群 我有一个简单的部署mongodb with NFS持久卷设置 它工作得很好 但是由于像数据库这样的资源stateful我想用Statefulset为了mongodb 但现在的问题是 当我查看文档时 stat
  • 添加误差线以在 R 中的绘图上显示标准差

    对于每个X value 我计算了平均值Y 值和标准差 sd 每个 Y 值 x 1 5 y c 1 1 1 5 2 9 3 8 5 2 sd c 0 1 0 3 0 2 0 2 0 4 plot x y 如何使用标准差向绘图的每个数据点添加误
  • 无法从 pod 容器内部访问 kubernetes api

    我已经创建了 hashcorpVault 部署并配置了 kubernetes auth Vault 容器从 pod 内部调用 kubernetes api 进行 k8s 身份验证 该调用失败并显示 500 错误代码 连接被拒绝 我正在使用
  • 在表中启用和禁用 td

    td td
  • 如何使用 MUnit 在 Mule Flow 中模拟 Java 组件

    我正在尝试使用 MUnit 对我的一个子流程进行单元测试 我需要模拟一个自定义 Java 组件 但我无法这样做 我的子流程如下
  • 飞碟没有应用内部 CSS

    我在 struts2 操作中使用以下代码 使用飞碟将 HTML 转换为 PDF 它只是按原样打印样式代码 并不应用它 static String readFile String path Charset encoding throws IO
  • 使用本地文件中的背景图像进行绘图布局

    我有同样的问题 如所述这个问题 我希望我的绘图具有本地 png 文件的背景 Using 情节的例子 它使用来自网络的图像 有效 使用本地图像的路径 无论有或没有绝对路径 都不起作用 根据另一个问题的答案进行编码没有帮助 import bas
  • 如何在Canvas中专门绘制Shape

    我里面有一个形状Canvas 像这样
  • Safari 中如何允许跨域请求?

    我有从 localhost 运行的 webapp 因为调试 并且它发出跨域 AJAX 请求 我可以轻松地为 Chrome 设置标志 disable web security 并且 web 应用程序在 Chrome 中按预期工作 但我也需要为
  • MvvmCross - 从视图模型调用 Web 服务

    我是 MvvmCross 和 Android 开发的新手 我需要在视图模型中调用 POST 数据到 JSON Web 服务 然后 我需要在 UI 中显示 Web 服务的结果 我的视图模型的要点如下所示 public class MyView
  • 将网站的 URL 格式化为字符串,并在前面添加 http://

    我有一个评论系统 允许自动链接网址 我正在使用 cakephp 但解决方案更多的是 PHP 这就是正在发生的事情 如果用户输入完全限定的网址http or https 一切安好 但如果他们进入www scoobydoobydoo com它变
  • RequireJS:将路径设置为“忽略”

    我正在使用一个第三方库 通过 Bower 它声明了我不想要的依赖项 它只是样式 是否可以将该依赖项设置为 忽略 或某些此类值 e g define jquery dep i dont want function 在需要配置中 paths j
  • 多重继承 C++ 当基类共享相同的方法名称时,是否有一些限制?

    我以前从未在 C 中使用过多重继承 但我很好奇 因为我在一本书中看到了编织 bst 的实现 通过基类 List 和基类 BinarySearch 树的多重继承 现在我试图编一些愚蠢的例子来理解它是如何工作的 所以我想出了这个 class B
  • 如何在 PHP 中创建幻方?

    我想尝试用 PHP 创建一个魔方 即所有加起来等于相同值的数字网格 但我真的不知道从哪里开始 我知道创建幻方的许多方法 例如在固定位置开始 1 然后每次迭代都朝特定方向移动 但这并没有创建一个真正随机的魔方 而这正是我的目标 我希望能够生成