Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> всевозможные варианты 
V
    Опции темы
DooZ
Дата 28.12.2010, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



Здравствуйте
не могу сообразить как сделать, описываю задачу

есть 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
и т.д.

т.е. надо перемешать все возможные связки...
надеюсь понятно объяснил?

вообщем не соображу как это все написать =)

заране спасибо за помощь
PM MAIL   Вверх
dmitryk1
Дата 28.12.2010, 09:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 118
Регистрация: 10.6.2008
Где: Новосибирск

Репутация: 2
Всего: 2



Ну у тебя хэши тоже в какой-то структуре, вот и делай два цикла.


хэши();
for (i=1)
{
for (j=i+1)
{
  перемешать(хэши(i),хэши(j));

}
}

и отдельной процедуркой перемешивай. Или внутри цикла прямо, третьим и четвёртым циклом. 

Давно не кодил, так что код - это нечто, просто продемонстрировать.
PM MAIL GTalk Jabber   Вверх
arto
Дата 28.12.2010, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1495
Регистрация: 31.10.2004

Репутация: 38
Всего: 40



# 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

PM MAIL ICQ   Вверх
DooZ
Дата 28.12.2010, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



Цитата(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
#

спасибо за ответы, но немного не ясвно, а варианты
1 2
1 3
2 3
1
2
3

?
PM MAIL   Вверх
DooZ
Дата 28.12.2010, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



не то...

Это сообщение отредактировал(а) DooZ - 28.12.2010, 23:06
PM MAIL   Вверх
DooZ
Дата 28.12.2010, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 25.11.2005

Репутация: нет
Всего: 1



не актуально...
вопрос решен

Это сообщение отредактировал(а) DooZ - 29.12.2010, 01:43
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0692 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.