![]() |
Array. Перемешивание массива
Приветствую, мега-мной-уважаемые!
Пытаюсь решить одну проблемку. Но что-то никак не придет в голову изящное решение. Задача приходит массив [x,x,x,y,y,y,y,y,y,z,z] нужно его перемешать так, чтобы ни один элемент не стоял рядом с таким же то есть x,y,z,y,x,y... - допустимо x,y,y... - не допустимо Вроде тривиальная задача.. но вот закавыка.. Всем спасибо! |
Тогда ещё надо убедиться, что такой массив возможно создать. Допустим массив [x,x,y,y,y,y,y,y,y,y,z] невозможно так перемешать, так как "y" намного больше.
|
Цитата:
интересно, утверждение: "сумма повторений любого элемента меньше половины длинны массива" может считаться признаком того, что задача может быть выполнена? что касается самой задачи. что-то мне подсказывает, что нужно несколько модифицировать метод пузырька |
По идее, сумма одинаковых элементов может быть "половина массива +1", что бы такой массив можно было правильно размешать.
|
ну.. я бы даже сказал точнее - в зависимости от длины массива
если длина четная - то не более ровно половины если нет - то допустимо половина + 1 вроде так если смотреть "на пальцах" то [x,x,x,y,y,y] -> [x,y,x,y,x,y] а вот [x,x,x,x,y,y,] -> уже никак зато [x,x,x,x,y,y,y] -> [x,y,x,y,x,y,x] |
Попробуйте так:
Код AS3:
|
Цитата:
|
Цитата:
Гениально! Hauts, браво! премного благодарен! |
You are welcome.
|
| Часовой пояс GMT +4, время: 20:48. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.