Здравствуйте, hexamino, Вы писали:
H>Надо получить все беспорядки [0..n], то есть все перестановки этого списка где ни один элемент не стоит на своем исходном месте. H>
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, hexamino, Вы писали:
H>>Надо получить все беспорядки [0..n], то есть все перестановки этого списка где ни один элемент не стоит на своем исходном месте. H>>
H>>А можно ли не фильтровать, а сразу строить только нужные перестановки?
BZ>disorders n = inserts n (disorders (n-1)) ++ dropLast (inserts n [0..n-1])
Типы слагаемых в ++ разные
BZ>-- вставляет x во все возможные позиции списка xs BZ>inserts x [] = [х]] BZ>inserts x xs = (x:xs) : map (head xs (inserts x (tail xs) )
BZ>dropLast = reverse.tail.reverse
Здравствуйте, deniok, Вы писали:
H>>>Надо получить все беспорядки [0..n], то есть все перестановки этого списка где ни один элемент не стоит на своем исходном месте. BZ>>filter (/=[0..n]) (permutations [0..n]) D>Не, тут пролезают неполные беспорядки. Сравни
ага, я неправильно понял задачу
H>>>А можно ли не фильтровать, а сразу строить только нужные перестановки?
BZ>>disorders n = inserts n (disorders (n-1)) ++ dropLast (inserts n [0..n-1])
D>Типы слагаемых в ++ разные
ес-но, не [0..n-1], а n-1. в любом случае, это не то
значит, на первом месте может стоять кто угодно кроме 0, на втором — кто угодно из оставшихся кроме 1 и т.д.
Здравствуйте, hexamino, Вы писали:
H>Надо получить все беспорядки [0..n], то есть все перестановки этого списка где ни один элемент не стоит на своем исходном месте. H>
Здравствуйте, hexamino, Вы писали:
H>Надо получить все беспорядки [0..n], то есть все перестановки этого списка где ни один элемент не стоит на своем исходном месте.
Вот интересно... количество беспорядков N элементов — это, ЕМНИП, (N-1)!
Нельзя ли как-то исхитриться и родить беспорядки на основе перестановок N-1 элементов? (При условии, что МНИП, естественно).
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, hexamino, Вы писали:
H>>Надо получить все беспорядки [0..n], то есть все перестановки этого списка где ни один элемент не стоит на своем исходном месте.
К>Вот интересно... количество беспорядков N элементов — это, ЕМНИП, (N-1)! К>Нельзя ли как-то исхитриться и родить беспорядки на основе перестановок N-1 элементов? (При условии, что МНИП, естественно).
И. Количество беспорядков N элементов = ближайшее целое к N!/e, то есть несколько больше (N-1)!