滑动数组值
sliding array values
我正在尝试在 vb 中重新创建游戏 2048,但我正在努力弄清楚如何让数组中的值一起滑动。
在我自己完成全部任务之前,我正在尝试在一维数组中执行此操作
例如,如果我有一个数组
[0,2,0,4]
我需要弄清楚如何遍历每个数字,检查它后面是否有 0,这样数组就会变成
[2,4,0,0]
但我正在努力弄清楚如何检查数组中数字后面的所有值
我目前只是在尝试向左滑动功能,所以我可以慢慢来,有谁知道我该怎么做吗?
老经典For Each
循环数组只有一个
Dim previousRow As Integer() = { 0, 2, 0, 4 }
Dim newRow As Integer() = { 0, 0, 0, 0 }
Dim newRowIndex As Integer = 0
For Each previousValue In previousRow
If previousValue = 0 Then Continue For
newRow(newRowIndex) = previousValue
newRowIndex += 1
Next
会 return { 2, 4, 0, 0 }
您可以使用 LINQ 执行此操作:
Dim a = {0, 2, 0, 4}
a = a.Where(Function(x) x <> 0).Concat(a.Where(Function(x) x = 0)).ToArray()
Console.WriteLine(String.Join(",", a)) ' outputs 2,4,0,0
第一个Where
获取所有非零元素。 Concat
将结果与(所有零元素)连接起来,从而保持数据的长度,.ToArray()
将结果转换回数组。
伪代码:
dim arr1, arr2,
foreach [value in array]
if ( value is not 0 )
then add to arr1
else add to arr2
concat arr1, arr2
我正在尝试在 vb 中重新创建游戏 2048,但我正在努力弄清楚如何让数组中的值一起滑动。
在我自己完成全部任务之前,我正在尝试在一维数组中执行此操作
例如,如果我有一个数组
[0,2,0,4]
我需要弄清楚如何遍历每个数字,检查它后面是否有 0,这样数组就会变成
[2,4,0,0]
但我正在努力弄清楚如何检查数组中数字后面的所有值
我目前只是在尝试向左滑动功能,所以我可以慢慢来,有谁知道我该怎么做吗?
老经典For Each
循环数组只有一个
Dim previousRow As Integer() = { 0, 2, 0, 4 }
Dim newRow As Integer() = { 0, 0, 0, 0 }
Dim newRowIndex As Integer = 0
For Each previousValue In previousRow
If previousValue = 0 Then Continue For
newRow(newRowIndex) = previousValue
newRowIndex += 1
Next
会 return { 2, 4, 0, 0 }
您可以使用 LINQ 执行此操作:
Dim a = {0, 2, 0, 4}
a = a.Where(Function(x) x <> 0).Concat(a.Where(Function(x) x = 0)).ToArray()
Console.WriteLine(String.Join(",", a)) ' outputs 2,4,0,0
第一个Where
获取所有非零元素。 Concat
将结果与(所有零元素)连接起来,从而保持数据的长度,.ToArray()
将结果转换回数组。
伪代码:
dim arr1, arr2,
foreach [value in array]
if ( value is not 0 )
then add to arr1
else add to arr2
concat arr1, arr2