【发布时间】:2016-03-31 14:38:17
【问题描述】:
var E1 = ["A", "B", "C", "D", "E"]
var E2 = ["A", "B", "C", "D", "E"]
var E3 = ["A", "B", "C", "D", "E"]
var E4 = ["A", "B", "C", "D", "E"]
var E5 = ["A", "B", "C", "D", "E"]
每个数组都有相同的五个元素,即“A”、“B”、“C”、“D”和“E”。我想编写一个算法来对所有数组中的元素进行排序,这样没有两个数组在同一索引处具有相同的元素(比如说“A”)。
一种对我有用的示例输出如下:
var E1 = ["A", "B", "C", "D", "E"]
var E2 = ["B", "C", "D", "E", "A"]
var E3 = ["C", "D", "E", "A", "B"]
var E4 = ["D", "E", "A", "B", "C"]
var E5 = ["E", "A", "B", "C", "D"]
我已尝试解决此问题,但无法完成。我刚刚编写了一个洗牌函数,用于对两个数组(E1 和 E2)的元素进行排序。
var E1 = ["A", "B", "C", "D", "E"]
var E2 = ["A", "B", "C", "D", "E"]
var E3 = ["A", "B", "C", "D", "E"]
var E4 = ["A", "B", "C", "D", "E"]
var E5 = ["A", "B", "C", "D", "E"]
func shuffledArrays(var array1: [String],var array2: [String]) {
if array1[0] == array2[0] || array1[1] == array2[1] || array1[2] == array2[2] || array1[3] == array2[3] || array1[4] == array2[4] {
shuffled1 = GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(array1)
shuffled2 = GKRandomSource.sharedRandom().arrayByShufflingObjectsInArray(array2)
var array3 = shuffled1 as! [String]
var array4 = shuffled2 as! [String]
} else {
var array3 = array1
var array4 = array2
}
array1 = array3
array2 = array4
}
// Now calling the function on arrays E1 and E2
shuffledArrays(E1, array2: E2)
print(E1)
print(E2)
使用此代码,我在 Xcode Playground 上收到以下错误。虽然有时会删除错误并且第 102 行和第 103 行的输出是正确的,但我仍然无法提取该输出并将其分别永久保存到 E1 和 E2 中。请帮助我安排五个数组元素的整个算法。
谢谢
【问题讨论】:
-
什么编程语言,儿子?
-
需要随机吗?还是所有唯一元素都需要在不同数组中具有不同的索引?两者都做只会适得其反。如果两者都需要,请添加一些上下文。
-
@RMenke 看来他需要数组的五种随机不同排列...
-
@user3441734 他明确指出,任何两个数组都不应该在同一索引处具有相同的元素。这根本不是随机的。
-
@RMenke 我同意,请参阅 Leo 写的答案。
标签: swift algorithm sorting multidimensional-array