当前位置:首页 > 日记 > 正文

javascript三阶幻方算法难题

javascript三阶幻方算法难题
令人费解的事
三阶幻方,将9到9的1个整数填充成一个3×3的表,这样每行、每一列和每一对角线上的数之和是相同的。
策略
列出所有整数填充方案,然后过滤它们。
Javascript的解决方案
复制代码代码如下所示:
*由cshao 12 / 28 / 14。

* /

功能getpermutation(ARR){

如果(arr.length = = 1){

{是}返回;

}

var置换{ };

对于(var i = 0;i < arr.length;i++){

无功firstele = ARR {我};

无功arrclone = arr.slice(0);

ArrClone.splice(I,1);

无功childpermutation = getpermutation(arrclone);

对于(var j = 0;J < childpermutation.length;j++){

childpermutation {,} Unshift(firstele);

}

置换= permutation.concat(childpermutation);

}

返回排列;

}

功能validatecandidate(候选人){

var = =候选{ 0 } } +候选{ { 1 } } +候选{ 2 };

对于(var i = 0;i < 3;i + +){

如果(!(sumofline(候选人,我)= =和sumofcolumn(候选人,我)= =总和)){

返回false;

}

}

如果(sumofdianal(候选,真的)= =和sumofdianal(候选,false)= =总和){

返回true;

}

返回false;

}

功能sumofline(候选人线){

返回候选{行* 3 } +候选{行* 3 + 1 } +候选{行* 3 + 2 };

}

功能sumofcolumn(候选人Col){

返回候选{ + } +候选+ { + 3 + }候选+ { + 6 };

}

功能sumofdianal(候选人,isforwardslash){

返回isforwardslash候选{ 2 } { 4 } + +候选人候选人候选人{ 6 }:{ 0 } + +候选人候选人{ 4 } { 8 };

}

VAR排列= getpermutation({ 1,2,3,4,5,6,7,8,9 });

VaR的候选人;

对于(var i = 0;i < permutation.length;i++){

候选者=置换{ };

如果(validatecandidate(候选人)){

打破;

{人}

候选者=空;

}

}

如果(候选){

console.log(候选人);

{人}

console.log(没有有效的发现);

}
结果
复制代码代码如下所示:

{ 2, 7, 6,9, 5, 1,4, 3, 8 }
描绘幻方:
复制代码代码如下所示:

二百七十六

九百五十一

四百三十八
分析
利用这种策略理论可以得到任意n阶幻方,但实际上只有3阶幻方这一特殊解,因为当n>3时得到的所有填充方案都将成为极其巨大的穷举运算。

相关文章

Ajax技术的智能提示+文本框动态生

Ajax技术的智能提示+文本框动态生

文本框,智能,动态生成,提示,实例代码,复制代码代码如下所示: 快速查询:按内管代码按标记代码 下面是引用的js文件 复制代码代码如下所示: $(文档)Ready(函数(){) $(# fastsearchtxt)。Keyup(function(){) Ajax获取数据库查询中的数据。 VaR数据=美元(# fast…

中国画水墨画

中国画水墨画

水墨画,中国画,电脑软件,本教程介绍朋友用CDR画中国风水墨写意画的绘制方法,效果真的很好,像纸上的墨水写的教程,画面效果比较简单,这里推荐爱朋友跟着教程学习 写意画是中国画的一种绘画手法。相反的绘画风格,画的内容主要集中在对魅力的表达和…

php获取一个文本来显示点阵的宽度

php获取一个文本来显示点阵的宽度

显示,点阵,宽度,高度,电脑软件,本文的示例说明PHP获取一段文本来显示网格的宽度和高度的方法: 定义(f_size 定义(f_font 功能get_bbox($文本){ 返回imagettfbbox(f_size,0美元,f_font,文本); } 功能text_height($文本){ 盒子= get_bbox美元($文本); 高= $…

Javascript使用IndexOf获得方式在字符串

Javascript使用IndexOf获得方式在字符串

位置,字符串,方式,电脑软件,Javascript,本文阐述了如何使用索引来获取Javascript字符串中的子字符串的位置。分享给你供你参考。以下是如下: 单击按钮定位字符串中的位置。 一个指定的值时。 试试 函数myFunction() { 你好,世界,欢迎来到宇宙; var n …

烟花面具使美丽的画面窗格效果

烟花面具使美丽的画面窗格效果

面具,烟花,窗格,画面,效果,本教程是介绍给朋友的,用烟花面具制作漂亮的画面效果。制作教程的方法很漂亮,方法也不难。建议喜欢的朋友可以通过教程学习。 本教程是一个很好的方式制作一个美丽的图片窗格为您的朋友烟花。创建教程的方法非常简…

PS图象处理软件合成动画星球大战卡

PS图象处理软件合成动画星球大战卡

教程,动画,星球大战,图象,处理软件,本教程介绍朋友使用PS图象处理软件创造美丽的动画星球大战卡通图片的方式。这个教程产生的效果很漂亮,而且方法也很简单,不是很复杂。推荐朋友,喜欢的朋友来看看吧。 本教程介绍朋友关于PS图象处理软件的精…

PS图象处理软件画卡通风格的可爱女

PS图象处理软件画卡通风格的可爱女

教程,图象,处理软件,卡通,风格,本教程介绍可爱的女孩的QQ头像的方法使用PS图象处理软件画卡通风格。教程产生的效果真的很漂亮,难度也不是很大。建议像你这样的朋友一起学习这个教程。 本教程使用PS图象处理软件画卡通风格的可爱女孩的QQ头…

PS图象处理软件利用钢笔和图层样式

PS图象处理软件利用钢笔和图层样式

图标,图层,图象,处理软件,样式,本教程学习如何使用PS图象处理软件的钢笔和图层样式来创建一个小护士图标效果。 先看看效果吧。 新建文档1280x1024像素,背景白色,建立一个新图层,使用钢笔绘制下图所示的路径,填充黑色。 添加图层样式。 效果…

PS图象处理软件将生产高质量轻的电

PS图象处理软件将生产高质量轻的电

图标,高质量,图象,处理软件,效果,本教程学习如何使用PS图象处理软件的自定义形状工具、钢笔工具和图层样式来创建一个高质量轻的电池图标。 先看看效果吧。 新的文件950x1024像素,背景白色,新建图层填充黑色,添加图层样式。 效果如下。 新…

php查看当前会话的id实例

php查看当前会话的id实例

实例,电脑软件,php,id,本文演示了PHP查看当前会话ID的方式: 有两种方法来获得用户的会话ID,第一个是使用session_id()函数,另一种是使用内置恒希德去得到它,和SID包含会话ID和会话值。 session_start(); 打印(); SID = session_id(美元); 打印(会话ID返回…

如何在CorelDRAW拆分表格分开

如何在CorelDRAW拆分表格分开

拆分,表格,如何在,电脑软件,CorelDRAW,本教程介绍朋友如何分割表在CorelDraw。这个教程很基础。它非常适合你学习。推荐朋友一起学习。 如何在CorelDraw表分开 方法/步骤 1。打开coreldraw。 2。新的文件。 三.查找表单工具并绘制表单。 …

ajax异步处理的数据示例代码在POST

ajax异步处理的数据示例代码在POST

异步处理,数据,示例代码,表单,电脑软件,防止页面跳转 $(文档)Ready(函数(){) $(#提交)。Click(function(){) 无功str_data = $(# Form1输入{类型=文本})。图(函数(){() 收益($(this)。Attr(名称)+=+ $(this)(瓦迩)); })获取(); 无功box_data = $(输入{类型}:选中复选框)。图(函数…