Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > всевозможные варианты |
Автор: DooZ 28.12.2010, 07:41 |
Здравствуйте не могу сообразить как сделать, описываю задачу есть 4 хеша (четыре это условно, на самом деле хешей больше) данных (можно массивы, не столь важно) в каждом хеше есть список данных: хеш1: x1 x2 хеш2 z1 z2 хеш3 a1 a2 хеш4 b1 b2 задача перемешать данные из хешей, а именно получить варианты данные из хеша1 и хеша2: x1 z1 x1 z2 x2 z1 x2 z2 далее данные из хеша 1 и хеша 3 x1 a1 x1 a2 x2 a1 x2 a2 далее данные из хеша 1 и хеша 4 x1 b1 x1 b2 x2 b1 x2 b2 далее данные хеша 2 и хеша 3 далее данные хеша 2 и хеша 4 и т .д. потом идут данные хеша 1 хеша 2 хеща 3 и т.д. т.е. надо перемешать все возможные связки... надеюсь понятно объяснил? вообщем не соображу как это все написать =) заране спасибо за помощь |
Автор: dmitryk1 28.12.2010, 09:14 |
Ну у тебя хэши тоже в какой-то структуре, вот и делай два цикла. хэши(); for (i=1) { for (j=i+1) { перемешать(хэши(i),хэши(j)); } } и отдельной процедуркой перемешивай. Или внутри цикла прямо, третьим и четвёртым циклом. Давно не кодил, так что код - это нечто, просто продемонстрировать. |
Автор: arto 28.12.2010, 11:00 |
# perl -MList::Permutor -le '$p = new List::Permutor (@ARGV); while (my @a = $p->next) { print "@a"; }' 1 2 3 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 # |
Автор: DooZ 28.12.2010, 18:51 | ||
спасибо за ответы, но немного не ясвно, а варианты 1 2 1 3 2 3 1 2 3 ? |
Автор: DooZ 28.12.2010, 19:16 |
не то... |
Автор: DooZ 28.12.2010, 23:06 |
не актуально... вопрос решен |