魔方 打乱步骤生成 算法

之前一直想写个魔方计算器来着,以为一直用的都是魔方小站上的那个,虽然经典,但是太不美观了,而且我是个前端,那页面,那代码,简直不忍直视,所以想自己写一个。可是各种原因一直没机会写完,只写了核心打乱部分。

但是由于我魔方水平有限,所以这个算法还是参考至魔方小站,只是重新写了下代码:


(function() {
function checkmove(move, arr) { // 检测步骤合理性
var l = arr.length;
return move == arr[l - 1] || (move == arr[l - 2] && (move / 2 | 0) == (arr[l - 1] / 2 | 0));
}

function rndCube(maxSteps) { // 生成随机打乱步骤
var cubeArr = [], // 打乱步骤数组
cubeStr = "", // 打乱步骤字符串
cube = ["R", "L", "F", "B", "U", "D"], // 步骤
types = ["", "", "‘", "‘", "2"], // 步骤附加条件
r, // 随机数
i;

for (i = 0; i < maxSteps || 25; i++) {
do {
r = Math.random() * 6 | 0;
} while (checkmove(r, cubeArr));
cubeArr.push(r);
cubeStr += cube[r] + types[Math.random() * 5 | 0] + " ";
}

return cubeStr;
}

console.log(rndCube());
})();

这个代码基本上就是这个计时器的核心部分了。

那个记录下载的功能,我打算用js实现,而不是提交到后台然后下载。
js下载文件方法 小胡子哥
博客里写过,但是有点小问题需要修改下才能满足我的要求。
真心要抽个时间写一下,不然就老了。

魔方 打乱步骤生成 算法,码迷,mamicode.com

时间: 2024-10-10 15:27:08

魔方 打乱步骤生成 算法的相关文章

等高线生成算法(转载)

等高线生成算法 输入:离散的采样点坐标和高度值(x_0,y_0,value_0),(x_1,y_1,value_1)......(x_n, y_n, value_n) 输出:等高线图,如下所示 wiki上的Marching squares算法对此有很好的说明,我也是按照wiki上面的步骤来实现这个算法的,下面对该算法的步骤进行简要说明. 输入参数: 1.点的集合(x_0,y_0,value_0),(x_1,y_1,value_1)......(x_n, y_n, value_n) ; 2.高度值

计算机图形学(二)输出图元_6_OpenGL曲线函数_1_圆生成算法

OpenGL曲线函数 生成圆和椭圆等基本曲线的函数并未作为图元功能包含在OpenGL核心库中.但该库包含了显示Bezier样条的功能,该曲线是由一组离散点定义的多项式.OpenGL实用库(GLU)中包含有球面和柱面等三维曲面函数以及生成B样条的函数,它是包含简化Bezier曲线的样条曲线的总集.我们可以使用有理B样条显示圆.椭圆和其他二维曲线.此外,OpenGL实用工具包(GLUT)中还有可以用来显示某些三维曲面(如球面.锥面和其他形体)的函数.然而,所有这些函数比本章中介绍的基本图元应用得更多

[原创][网页游戏]数独生成算法及实例

[ 程序修正 2015/02/23 补充及订正方法:iphone上的Safari会自动对看起来像是电话号码的数字串(包括已经加入连字符或括号格式化过的)添加电话链接,点击之后会询问用户是否想要拨打该号码. 关闭方法: <meta name="format-detection" content="telephone=no" /> 单独开放方法: <a href="tel:13800138000">13800138000<

等高线生成算法

输入:离散的采样点坐标和高度值(x_0,y_0,value_0),(x_1,y_1,value_1)......(x_n, y_n, value_n) 输出:等高线图,如下所示 wiki上的Marching squares算法对此有很好的说明,我也是按照wiki上面的步骤来实现这个算法的,下面对该算法的步骤进行简要说明. 输入参数: 1.点的集合(x_0,y_0,value_0),(x_1,y_1,value_1)......(x_n, y_n, value_n) ; 2.高度值数组,即每条等高

基本图形生成算法

1.直线生成算法 所谓图元的生成,是指完成图元的参数表示形式(由图形软件包的使用者指定)到点阵表示形式(光栅显示系统刷新时所需的表示形式)的转换.通常也称扫描转换图元. 直线的扫描转换:确定最佳逼近于该直线的一组像素,并且按扫描线顺序对这些像素进行写操作. 三个常用算法:1.数值微分法DDA:2.中点画线法:3.Bresenham算法. 生成目标,求与直线段充分接近的像素集 生成前提条件:1.像素网格均匀,坐标为整数值:2.直线段的宽度为1:3.直线段的斜率k的取值范围为[-1,1]. 1.1

微博URL短网址生成算法原理及(java版、php版实现实例)

短网址(Short URL),顾名思义就是在形式上比较短的网址.通常用的是asp或者php转向,在Web 2.0的今天,不得不说,这是一个潮流.目前已经有许多类似服务,借助短网址您可以用简短的网址替代原来冗长的网址,让使用者可以更容易的分享链接. 例如:http://t.cn/SzjPjA 短网址服务,可能很多朋友都已经不再陌生,现在大部分微博.手机邮件提醒等地方已经有很多应用模式了,并占据了一定的市场.估计很多朋友现在也正在使用. 看过新浪的短连接服务,发现后面主要有6个字符串组成,于是第一个

PHP红包生成算法

一.适用场景 红包总金额X,分配成Y个红包,每个红包随机金额. 二.生成算法 /** * 红包生成算法 * @param $money 总金额 * @param $number 红包数量 * @param $ratio 浮动系数 */ function hongbao($money,$number,$ratio = 0.5){ $res = array(); //结果数组 $min = ($money / $number) * (1 - $ratio); //最小值 $max = ($money

全排列的生成算法

[复制转载] //全排列的生成算法 // 全排列的生成算法就是对于给定的字符集,用有效的方法将所有可能的全排列无重复无遗漏地枚举出来.任何n个字符集的排列都可以与1-n的n个数字的排列一一对应, // 因此在此就以n个数字的排列为例说明排列的生成法. // n个字符的全体排列之间存在一个确定的线性顺序关系.所有的排列中除最后一个排列外,都有一个后继:除第一个排列外,都有一个前驱.每个排列的后继都可以从 // 它的前驱经过最少的变化而得到,全排列的生成算法就是从第一个排列开始逐个生成所有的排列的方

转:体积阴影(Shadow Volumes)生成算法

下面以最快的速度简单谈谈阴影生成技术,目前普遍采用的一般有三种:Planar Shadow.Shadow Mapping和Shadow Volume,前者类似投影,计算最简单,缺点只能绘制抛射在平面上的阴影:Shadow mapping利用站在光源处所沿光源法线看去所生成的深度图来检测场景中的体象素是否处于阴影中,缺点是光源与物体位置相对固定.且在极端情况下计算精度差,不太适合精确到象素的动态光阴场合:Shadow Volume是目前最适合精确表现动态光阴场景的技术,适用性最广,其典型的适用范例