Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组移位和求和_Javascript_Arrays_Algorithm_Shift - Fatal编程技术网

Javascript 数组移位和求和

Javascript 数组移位和求和,javascript,arrays,algorithm,shift,Javascript,Arrays,Algorithm,Shift,帮助解决此问题,或告诉我此问题的算法名称: 长度为N的一维数组随机填充数字,所有数字都是2的幂。可以在阵列上执行两个操作:左移位和右移位。当左右移动时,两个相同的数字并排出现;将在左右单元格中放置一个新值。数组中的值向左向右移动一个位置。[1,4,16,8,8,2,1]>左>[1,4,16,16,2,1]>右>[1,4,32,2,1]。找到一个移位序列,该移位序列将导致最小数组长度。所描述的移位似乎是对“是”的概括,但仅限于一维,没有任何零。我认为该算法没有名字,但在2048游戏的上下文中,这种

帮助解决此问题,或告诉我此问题的算法名称:


长度为N的一维数组随机填充数字,所有数字都是2的幂。可以在阵列上执行两个操作:左移位和右移位。当左右移动时,两个相同的数字并排出现;将在左右单元格中放置一个新值。数组中的值向左向右移动一个位置。[1,4,16,8,8,2,1]>左>[1,4,16,16,2,1]>右>[1,4,32,2,1]。找到一个移位序列,该移位序列将导致最小数组长度。

所描述的移位似乎是对“是”的概括,但仅限于一维,没有任何零。我认为该算法没有名字,但在2048游戏的上下文中,这种转换通常被称为tile合并

首先请注意,左移和右移的效果没有区别。两者的结果相同

您可以使用一个索引遍历数组,并跟踪另一个辅助索引,该索引在两个值合并时不会增加。相反,在每次合并之后,只要合并可以发生,辅助索引就会向后移动,然后它将与主索引一起再次递增。当不进行合并时,主索引处的值仅复制到次索引

下面是代码中的外观:

功能性耳环{ 设j=0; 对于let i=1;i=0&&arr[j]==arr[j+1]; j++; }否则{ j++; arr[j]=arr[i]; } } //剪辑阵列,扔掉索引j以外的任何东西: arr.length=j+1; 返回arr; } //范例 设arr=[1,4,16,8,8,2,1];
console.logcollapsearl@Andreas我至少需要算法的名称,然后我自己来实现它。我不理解描述,左移和右移有什么区别?更具体地说,在左右单元格中放置的新值是什么?在您的示例中,如果先进行右移,然后进行左移,结果会有什么不同?你提到一个新的值被放置…,但我在你的例子中没有看到,我想知道这个值是什么?