![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| nepster |
|
||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
Значит есть такая задача сделать бесконечное деление пирамиды. С подобной сложностью еще не сталкивался и вот хочу узнать совета у спецов, как это лучше реализовать.
Сама задача такая, есть пирамида:
тоесть ячейки: 1,2,4,8,16 и тд. когда заполняются все поля, то пирамида делится на еще 2 пирамиды и к ним в конец добавляется еще 8 ячеек.
дальше, как только последние 8 ячеек (их может быть и 16, не важно) заполняются, то эти 2 пирамиды делятся еще, каждая по две (и так же в конец 8 ячеек ) 1 пирамида
2 пирамида
Ну и так деление пирамид и добавление ячеек до бесконечности. Я долго думал как это реализовать и вот появилась идея: 1) База данных, где записи о каждой существующей ячейке. 2) сами пирамиды представлены в виде массива К примеру мы составим массив 1 пирамиды
Вид он получит такой:
[cell_id] => id ячейки пирамиды в базе [user_id] => id пользователя, который состоит в данной ячейке, если 0, то она пустая. К примеру делим пирамиду на две Первая пирамида будет вот такая: (последние 8 ячеек добавляются пустые, для новых юзеров, все остальные уже заполнены, так как деление происходит только тогда, когда вся пирамида заполняется.)
Подскажите пожалуйста, в правильном ли направлении идут мысли и как можно будет осуществить подобное деление пирамиды из массива. |
||||||||||||||||
|
|||||||||||||||||
| Чучмек |
|
|||
|
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 4 Всего: 41 |
А если не секрет, зачем такое надо?
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
| nepster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
вероятнее всего строят финансовую пирамиду. Мне предложили разработать для них вот такую систему. Но прежде чем браться за работу, я решил подумать действительно ли я смогу сделать подобное. Вот и собственно написал свои идеи по реализации.
Вообще для чего и зачем меня мало волнует, мне нравится разрабатывать какие-то сложные вещи, а с таким я не сталкивался, даже интерес возник. |
|||
|
||||
| Sanchezzz |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1670 Регистрация: 19.11.2006 Где: Voronezh Репутация: 41 Всего: 60 |
скорее всего это не фин пирамида, так как если основываясь на принципах пирамиды то один человек может привести в систему от одного человека до 5-10 как тогда должна выглядить пирамида в виде лесинки
-------------------- Понравился ответ "+" по репе, не забываем закрывать тему, заказы в LS. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
это все чрезвычайно похоже на полное двоичное дерево (которое прекрасно укладывается в одномерный массив).
"деление" двоичного дерева на пирамиды суть, как я понимаю, просто получение поддеревьев. какие операции с этими пирамидами предусматриваются? какая информация о пирамиде(ах) должна быть доступна? от этого будет зависеть все остальное. |
|||
|
||||
| nepster |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
на столько детально я не знаю. Но суть такая, что как только в пирамиде заполняются последние 8 ячеек, то она делится на 2 и к каждой добавляются еще по 8 ячеек. тоесть вот к примеру идет 1 пирамида
хоп она разделилась на 2
а вот пользователь, который был в верху (тоесть юзер в ячейке 1, вообще исчезает из пирамиды). Скорее всего ему выплатили деньги и он вне игры. А вот как "валидно" разделить массив на 2, я еще не придумал. Добавлено через 13 секунд Но так понял, мыслю пока верно !? |
||||||
|
|||||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Кто сказал что это деление пирамид? Добавлено через 1 минуту Куда исчезает ячейка №1 после вашего "деления"? Куда исчезают ячейки №2 и №3 на втором цикле? Ну и т.д. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
| nepster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
к примеру есть юзер Вася, он стоит в ячейке номер 1.
Когда Вася пригласит всех людей и пирамида заполнится, скорее всего он получит выплату или что то там получит и больше не является участником системы. Тоесть исчезает из пирамиды. А пирамида делится на 2 части. Где юзеры Иванов и Петров с ячейками 2 и 3 стали вместо него. И так же само, когда пирамиды заполнятся, то они выйдут из системы и пирамиды разделятся. |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
используйте двоичное дерево. оно будет расти само как надо, просто добавляйте в конец. для удаления корней (и "деления") просто помечайте узлы, что они не активны. узлы, у которых родитеь удален (неактивен), будут являться вершинами ваших пирамид.
Добавлено через 8 минут и 3 секунды если пирамиды заполняются равномерно, и дерево полное, все удаленные узлы будут находиться в начале массива. т.е. найти все пирамиды можно будет легко, найдя первый активный узел и посчитав по дороге на каком уровне начинаются активные: если первый активный узел имеет индекс $i, то мы имеем $n = 2*$i пирамиды, корни которых находятся в соседних ячейках. восстановить пирамиду можно пользуясь фактом, что дочерние узлы узла $k находятся в ячейках 2*$k и 2*$k+1, далее рекурсивно. Добавлено через 10 минут и 46 секунд Скорее всего его где-то прикопали, и он вне игры. Деньги из пирамид не уходят))) |
|||
|
||||
| nepster |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 300 Регистрация: 26.4.2009 Репутация: нет Всего: нет |
НУ это уже как говориться не мои проблемы =) Я примерно вас понял, завтра попробую начать разрабатывать дерево. Вот тут есть еще 1 момент. К примеру на верхушке пользователь Вася, а пользователь иванов в 3 ячейке к примеру. Когда иванов заходит в свой профиль, он видит пирамиду Васи, так как Вася на верхушке. А вот когда пирамида делится и Иванов становится на верхушке и скажем после 10 таких делений, будет уже за 20 пирамид, то каждый юзер должен попадать в свою пирамиду. Вот тут я еще не придумал как для нужного юзера воспроизводить его пирамиду. Вероятно каждая пирамидка должна бегать с массивов, где хранятся все ее ячейки !? |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Я точно такой же заказ доделываю) Все пирамиды осуществлены. Там два дерево должно быть, для того чтобы не мучаться в дальнейшем nepster, стукни в личку/асю - поговорим) Это сообщение отредактировал(а) MoLeX - 2.8.2012, 06:39 -------------------- Amazing |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
второе зачем? ТС не огласил задачу, ибо сам не знает. пока очевидно только, что пирамиды нужно идентифицировать. можно переформулировать проблему так: найти корень дерева, в которую входит ячейка с известным индексом $i. идем от $i вверх пока не встретится неактивная ячейка.
Это сообщение отредактировал(а) baldina - 2.8.2012, 09:03 |
|||
|
||||
| MoLeX |
|
|||
![]() Местный пингвин ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 4076 Регистрация: 17.5.2007 Репутация: 46 Всего: 140 |
Все придумано уже давно, не лепите огород. Берем обычное Nested Sets дерево, немного модернизируем его и все
-------------------- Amazing |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 26 Всего: 101 |
давно придумано много чего. например, стрелять из пушки по воробьям
|
|||
|
||||
| Fortop |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2200 Регистрация: 13.11.2007 Где: Донецк Репутация: 20 Всего: 42 |
Солидарен с baldina.
И вообще не понимаю, как можно вразумительно сделать задачу не понимая ее условий. Хорошо если задачу вам ставил тим-лид, который знает что нужно... А если это был клиент? Добавлено через 2 минуты и 15 секунд Ничего никуда не исчезает и ничего не делится. Другой вопрос, что статусы могут меняться. И таки, как и писал выше baldina, бинарное дерево полностью подходит под эти намеки. -------------------- Мир это Я. Живее всех живых. |
|||
|
||||
![]()
|
| Правила форума "PHP" | |
|
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |