gpt4 book ai didi

JavaScript slider 谜题 - 打乱值

转载 作者:行者123 更新时间:2023-12-03 08:44:11 25 4
gpt4 key购买 nike

(我是 JS 新手,所以请耐心等待)我正在使用 table 来构建滑动益智游戏。我需要一个可以扰乱值的函数,但我不确定应该如何让它显示在表格单元格中。现在我的代码只是按顺序显示数字。 我有两个函数 - 一个用于构建表,另一个用于重新排列值:

    var _r = 3;
var _c = 3;


//initializes the puzzle
function newPuzzle(r, c)
{
var table = document.createElement("table");
table.id = "myTable";

for (var i = 0; i < r; i++)
{
var row = document.createElement('tr');
for (var j = 0; j < c; j++)
{
var column = document.createElement('td');
row.appendChild(column);
}
table.appendChild(row);
}
document.body.appendChild(table);


//end of table creation
//populate the table
var cell = new Array(r);
for (var i = 0; i < r; i++)
{
cell[i] = new Array(c);
for (var j = 0; j < c; j++)
{
cell[i][j] = i*c + j;
}
}
cell[0][0] = " ";

for (var i = 0; i < cell.length; ++i)
{
var entry = cell[i];
for (var j = 0; j < entry.length; ++j)
{
var n = 0;
var gridTable = document.getElementsByTagName("table");
gridTable[0].rows[i].cells[j].innerHTML = cell[i][j];
document.getElementById("myTable").rows[i].cells[j].id = "even" + (i*c+j);

}
}

shuffle();
}


function shuffle()
{

//declare and populate array
var _array = new Array();

for (var i = 0; i <= r*c; i++)
{
_array[i] = i;
}

//shuffle tiles
for (var i = 0; i <= r*c; i++)
{
var rand = Math.floor(Math.random() * _array.length) + i;
var temp = _array[rand];
_array[rand] = _array[i];
_array[i] = temp;
}

//check to see if puzzle is solveable
var count = 0;
for (var i = 0; i <= r*c; i++)
{
for (var j = i; j <= r*c; j++)
{
if (_array[j] < _array[i])
{
count++;
}
}
}

if (Math.floor(count/2) != count/2)
{
shuffle();
}
else
{
for (var i = 0; i < r*c; i++)
{

//This is where I'm not sure what to do

document.getElementsByTagName("td")[i].innerHTML = _array[i]+1;
}
}

}

最佳答案

不确定,这可能对您有帮助。

为了解决任何数学系列,可以使用以下算法。即使在某些情况下它不会满足您的预期答案,但在其他方面它会是正确的。

步骤如下:

  1. 获取数字之间的差异,如下所示:
  2. 不断创造差异,直到看起来相同(差异为 0)。
  3. 将相同的最后一个数字放入该序列中,并通过添加该差异来完成该系列。

示例如下:

1       2       3       4       5       6       **7**

1 1 1 1 1 **1**


1 4 9 16 25 **36**
3 5 7 9 **11**
2 2 2 **2**



1 8 27 64 125 **216**
7 19 37 61 **91**
12 18 24 **30**
6 6 **6**
0 **0**

上面相同的算法在下面的js代码中实现。

//the input

var arr=[1,4,9,16];

var pa6inoArrayMelvo = function(arrr){
var nxtArr=[];
for(i=0;i<arrr.length;i++){
if(arrr[i+1] != undefined){
nxtArr.push(arrr[i+1] -arrr[i]);
}
}
return nxtArr;
}
var keepArray=[];

var keepAlltheArray= function(ar){
var tempArr=[];

keepArray.push(ar);
if(ar.length>1){

tempArr=pa6inoArrayMelvo(ar);
keepAlltheArray(tempArr);
}else{
generateArray(keepArray.length-1);
console.log("ans is:"+keepArray[0]);
}


}

var generateArray=function(idx){
if(keepArray[idx+1]){
var a=keepArray[idx+1];
var b=keepArray[idx];
var ans=a[a.length-1]+b[a.length-1];
keepArray[idx].push(ans);
}else{
var ans=keepArray[idx][keepArray[idx].length-1];
keepArray[idx].push(ans);
}
if(idx>0){
generateArray(idx-1);
}
}

keepAlltheArray(arr);

关于JavaScript slider 谜题 - 打乱值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32959769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com