Это называется перестановками.
Это может дать вам перестановки любой коллекции:
public class Permutation {
public static IEnumerable<T[]> GetPermutations<T>(T[] items) {
int[] work = new int[items.Length];
for (int i = 0; i < work.Length; i++) {
work[i] = i;
}
foreach (int[] index in GetIntPermutations(work, 0, work.Length)) {
T[] result = new T[index.Length];
for (int i = 0; i < index.Length; i++) result[i] = items[index[i]];
yield return result;
}
}
public static IEnumerable<int[]> GetIntPermutations(int[] index, int offset, int len) {
if (len == 1) {
yield return index;
} else if (len == 2) {
yield return index;
Swap(index, offset, offset + 1);
yield return index;
Swap(index, offset, offset + 1);
} else {
foreach (int[] result in GetIntPermutations(index, offset + 1, len - 1)) {
yield return result;
}
for (int i = 1; i < len; i++) {
Swap(index, offset, offset + i);
foreach (int[] result in GetIntPermutations(index, offset + 1, len - 1)) {
yield return result;
}
Swap(index, offset, offset + i);
}
}
}
private static void Swap(int[] index, int offset1, int offset2) {
int temp = index[offset1];
index[offset1] = index[offset2];
index[offset2] = temp;
}
}
Пример:
string[] items = { "one", "two", "three" };
foreach (string[] permutation in Permutation.GetPermutations<string>(items)) {
Console.WriteLine(String.Join(", ", permutation));
}
Все виды спорта, музыка, интересы и т. Д., На которые пользователь может ссылаться через свой профиль, на самом деле являются страницами Facebook.
Но тестовые пользователи не могут взаимодействовать с реальными страницами. Их даже не видно, поэтому вы не можете найти их с помощью функции автозаполнения.
Тестовые пользователи теоретически могут создавать свои собственные страницы, но получить их, чтобы они были видны другим тестовым пользователям, найти нужные категории и т. Д., Может быть сложно. Было бы действительно проще, если бы вы добавили несколько реальных учетных записей (друзей) в приложение в роли тестера (это нечто иное, чем тестовый пользователь).