当前位置: 首页 > 知识库问答 >
问题:

用于魔方的随机移动javascript加扰器

于高雅
2023-03-14

我目前正在做一个网络计时器,我有一些问题与我的加扰算法的算法。因为它是第一个版本,我只希望加扰器是随机移动,而不是随机状态,因为它太复杂了,使,它将在未来的更新。我有一个算法,基本上做一个随机移动数组,它从可能性中选择,然后检查是否两个相同的字母(或移动)不是紧挨着另一个。这一切都很好,但我不知道如何添加一些可以避免以下情况的东西:“D U D”。被另一个移动分开的两个相同移动是可以接受的,例如“D R D”,但不是“D U D”,因为它将等于“D2 U”,因此,是一个浪费的移动。

非Cuber的信息:

每一个字母都代表它的脸,当它被读到时,它会被移动。例如:“l U l”:“l”意味着顺时针旋转左脸一次,然后“U”意味着顺时针旋转上脸,最后“l”再次意味着旋转左脸一次。如果一个字母后面跟一个撇号,那么就意味着面要逆时针旋转。如果后面跟一个“2”,则表示要连续旋转两次脸部。L是左,R是右,F是前,B是后,D是下,U是上

代码如下:

js prettyprint-override">		function generate_scramble() {
			var scramble_length = 20;
			var scramble = new Array();

			var possible_letters = new Array(" D", " U", " B", " F", " R", " L");
			var possible_switches = new Array("", "2", "'");

			var array_of_randoms = new Array();

			for (var i = 0; i < scramble_length; i++) {
				var random_letters = Math.floor(Math.random() * possible_letters.length);
				var random_switches = Math.floor(Math.random() * possible_switches.length);

				array_of_randoms.push(random_letters);

				if (array_of_randoms[array_of_randoms.length - 1] == array_of_randoms[array_of_randoms.length - 2]) {
					if (array_of_randoms[array_of_randoms.length - 1]  < 5) {
						array_of_randoms[array_of_randoms.length - 1]++;
					} else {	
						array_of_randoms[array_of_randoms.length - 1]--;
					}
				}
			random_letters = array_of_randoms[array_of_randoms.length - 1];
			scramble.push(possible_letters[random_letters] + possible_switches[random_switches])
			}
			document.getElementById("scramble").innerHTML = "Scramble: " + scramble.join("");
		}

		generate_scramble();
	<p id="scramble">
		Scramble: 
	</p>
	<button onclick="generate_scramble()">
		New Scramble
	</button>

共有1个答案

杜骏祥
2023-03-14
 const directions = [
   ["D", "U"],
   ["L","R"],
   ["F","B"]
 ];

 const times = ["", "'", "2"];

 const random = (array, exclude) => {
   do {
      var n = Math.floor( Math.random() * array.length );
   } while(array[n] === exclude)
   return array[n];
}

const scramble = new Array(20);
var direction;
for(var i = 0; i < scramble.length; i++){
  direction = random(directions, direction);
  scramble[i] = random(direction) + random(times);
 }

你可以通过改变它移动的方向来减少很多错误的移动。所以D,U和D不会出现,因为D和U的方向相同。

 类似资料:
  • 本文向大家介绍JavaScript中用于生成随机数的Math.random()方法,包括了JavaScript中用于生成随机数的Math.random()方法的使用技巧和注意事项,需要的朋友参考一下  此方法返回0(含)和1(不包括)之间的随机数 语法 下面是参数的详细信息:     NA 返回值: 返回0(含)和1(不包括)之间的随机数 例子: 这将产生以下结果:

  • 我是一个业余程序员,在Pyplay非常新。这是我用Pyplay编写的程序,类似于我的世界。在过去的一个小时里,我一直在尝试设置一个代码,让我的玩家在按下X键时移动到随机瓦片。我已经耗尽了大部分如果不是所有的网站和搜索引擎寻找。我已经设法完成了一半的任务;当按下X键时,化身会移动到随机磁贴,但它会移出窗口/显示器。拜托,你能看看我的代码,看看我能做些什么来改进它吗?

  • 本文向大家介绍JavaScript随机生成颜色的方法,包括了JavaScript随机生成颜色的方法的使用技巧和注意事项,需要的朋友参考一下 废话不多说了直接给大家贴js代码了,具体代码如下所述: 以上所述是小编给大家介绍的JavaScript随机生成颜色的方法,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的,在此也非常感谢大家对呐喊教程网站的支持!

  • 问题内容: java.util.Random的实例是线程安全的。但是,跨线程并发使用同一java.util.Random实例可能会引起争用并因此导致性能下降。考虑在多线程设计中改用ThreadLocalRandom。 什么样的争执因而表现不佳?有人可以在这里给我解释吗?我不知道在Random和ThreadLocalRandom中使用什么算法使它们与众不同。 问题答案: 这可能会有所帮助: http

  • 我正在尝试创建一个具有以下签名的函数: 它应做到以下几点: 生成从0到1的随机数,但不包括1 在该范围内选取任何给定数字的概率不是均匀分布的 选择的数字接近目标值的可能性更大(目标值也是从0到1的值) 概率曲线看起来像钟形曲线,目标值的概率最高,其周围的值逐渐变小,但0到1范围内的所有值仍有机会被选中。 这个机会的权重可以用概率值来调整,其中0表示没有对随机性施加权重,1表示几乎所有选择的数字都将

  • 本文向大家介绍javascript实现图片跟随鼠标移动效果的方法,包括了javascript实现图片跟随鼠标移动效果的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了javascript实现图片跟随鼠标移动效果的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的javascript程序设计有所帮助。