我有一个字符串包含几个元素,一些相同和一些独特的。我希望我的代码检查我的字符串中的每个2个元素,如果它们相同,它应该调用一个函数ShuffleString
,其中输入变量(randomize
)是字符串本身,它将在新位置重新洗牌字符串。然后,脚本应该再次检查字符串中的每个后续元素,直到没有两个相同的元素彼此相邻。如何洗牌,使两个相同的元素不在一起?
我也做了以下内容:
我的函数文件ShuffleString
工作正常。如前所述,输入变量randomize
包含与MyString
相同的元素,但排列顺序不同,因为这是脚本早期不相关事项所需的。
function [MyString] = ShuffleString(randomize)
MyString = [];
while length(randomize) > 0
S = randi(length(randomize), 1);
MyString = [MyString, randomize(S)];
randomize(S) = [];
end
该脚本不能按预期工作。现在它看起来像这样:
MyString = ["Cat" "Dog" "Mouse" "Mouse" "Dog" "Hamster" "Zebra" "Obama"...
"Dog" "Fish" "Salmon" "Turkey"];
randomize = MyString;
while(1)
for Z = 1:length(MyString)
if Z < length(MyString)
Q = Z+1;
end
if isequal(MyString{Z},MyString{Q})
[MyString]=ShuffleString(randomize)
continue;
end
end
end
它似乎只是重新洗牌字符串无限次。这有什么问题,我该如何让它工作?
,因为你使用的是无限循环? '而(1)'。 –