Алгоритм каруселей

Статус
В этой теме нельзя размещать новые ответы.

craz

Нестандартное звание
Алгоритм каруселей

кто нить ткните пальцем где посмотреть?


имеется ввиду папка с картинками для вывода ее на страницу по n картинок, и смена циклическая этих картинок.


Сейчас и раньше я делал массивы комбинаций типа если n=3, а картинок 20, то получался массив a[1] = picture[1],picture[2],picture[3], a[2] = picturep[2],..[3] и уже их перебирал...

Если интересно зачем - для вывода рандомных картинок в каждый момент. А сейчас вроде не надо выводить рандом и поэтому кажеться это фиговая идея.
 

zerkms

TDD infected
Команда форума
В чём именно вопрос? Карусель - это просто массив с картинками. Всё. Никаких алгоритмов и теорем.
 

craz

Нестандартное звание
rак его перебирать? чтоб цикл был?

5 картинок всего показываем 3
1) 1|2|3
2) 2|3|4
3) 3|4|5
4) 4|5|1
5) 5|1|2

Я че туплю опять(в том смысле что не первый раз это уже делаю)))?
 

zerkms

TDD infected
Команда форума
craz
т.е. ты хочешь, чтобы мы придумали как тебе нужно сделать?
 

craz

Нестандартное звание
блин мне надо карусель)
надо чтобы одна картинка пропадала, следующая появлялась и так по кругу
и чтоб то еще на jquery было завязано...
 

untied

Сдвинутый новичок
craz, используй деление с остатком. $i%$n, где $n - количество картинок. Выводишь три картинки из массива: $images[$i], $images[($i+1)%$n], $images[($i+2)%$n], потом увеличиваешь на 1: $i = ($i + 1)%$n. Будет работать.
С одним но: операция деления не шибко быстрая. Но если не критично, то почему бы и не использовать.
 

zerkms

TDD infected
Команда форума
С одним но: операция деления не шибко быстрая.
омг. где вы этого понахватались?

надо чтобы одна картинка пропадала, следующая появлялась и так по кругу
и чтоб то еще на jquery было завязано...
если сам не можешь написать - возьми готовое. google://jquery carousel
 

untied

Сдвинутый новичок
Автор оригинала: zerkms
омг. где вы этого понахватались?
Как ни странно, в институте. На курсе по проектированию микропроцессоров. Операция деления самая сложная и медленно работающая по определению. Естественно, на современных процессорах это не ощущается, но если возвести предложенную методику в абсолют (т.е. пихать повсюду деление с остатком, да еще в куче циклов), то тормозить будет. Отвечаю. :cool:
 

Фанат

oncle terrible
Команда форума
то есть, собственно картинку клиенту отдать - это, по сравнению с оператором деления, быстро? Я правильно понимаю?
 

Gas

может по одной?
untied
неокрепшие умы многих читателей не поймут контекст "операции микропроцессоров", а запомнят это как догму и будут говорить что % тормозит, хотя строкой ниже будут DOM операции, регулярка или sql-запрос и это их совершенно не будет волновать, тормозить ведь будет %

craz
самому то не стыдно вопросы уровня "Алгоритм каруселей" здесь задавать?
 

untied

Сдвинутый новичок
Чего прицепились, "картинку отдать", "sql-запрос". Я ж исключительно об алгоритме выбора нужной картинки из массива. Мой способ без if-ов, но с делением. Вполне вероятно, что способ с if-ами (отслеживаем выход за пределы массива и переключаем индекс) будет работать быстрее.
У меня на три картинки получилось три деления. А если одновременно в карусели надо 15 картинок показать... Уже 15 делений. Есть над чем подумать.
Но опять же, если скорость падает не критично, то мой код короче. :cool:
 

Gas

может по одной?
Просто уровень вопроса автора никак не сопоставим, хотя бы с подобным. И такие тонкие материи только собьют его с толку, ему хоть какой-то алгоритм придумать.

Ладно проехали, ничего личного.
 

craz

Нестандартное звание
мне стыдно))) я сделал но наверное буду все таки рандомом выкидывать потому что массив кольцо сделать так и не получилось)

-~{}~ 15.10.10 11:49:

Автор оригинала: Gas
Просто уровень вопроса автора никак не сопоставим, хотя бы с подобным. И такие тонкие материи только собьют его с толку, ему хоть какой-то алгоритм придумать.

Ладно проехали, ничего личного.
Вы зря))) просто бывают затыки... на этой задаче я всегда плыву. мне бы посмотреть один раз правильное ее решения я бы больше никогда не путался. Я в принципе этого и попросил...
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а ведь операция rand() - не шибко быстрая, даже по сравнению с делением ...
 

Фанат

oncle terrible
Команда форума
untied, нигде не написано, что ты "исключительно об алгоритме". Надо, как бы, понимать, что вопрос задан не про сферический алгоритм в вакууме, а про конкретное приложение, выводящее картинки. И если в вакууме оно и может быть критично, то в контексте конкретной задачи твое замечание про "если не критично" - неправильное и дезориентирующее. В такой задаче по определению не будет критично.
Не говоря уже о феерическом "отвечаю"
вот сначала напиши тест, протестируй время отклика сайта с делением и без деления, сравни результаты, а потом только "отвечай"
 

Вурдалак

Продвинутый новичок
untied, на PHP будет тратиться больше времени на перевод этой операции в промежуточный код и дальнейшее преобразование из него в машинный. В итоге для процессора гораздо больше работы, чем один DIV в ASM. Это даже не спичечная оптимизация ;)
 

antson

Новичок
Партнер клуба
Просто до безобразия
увеличение / уменьшение номера нужной фотки через границы массива

x++; if(x>=countPhotos)x=0;
и
x--; if(x<0)x=countPhotos-1;

оформи это как функции и выводи
PrevFoto(x),x,NextFoto(x)

-~{}~ 15.10.10 13:16:

untied
$images[$i], $images[($i+1)%$n], $images[($i+2)%$n]

Элегантно НО
в реальности $i фотка скорее всего большая и по центру
а две по бокам используются для навигации.
Возникает разрыв между тем что видим в центре и урлом.
 

craz

Нестандартное звание
короче нафик взял я jCarousel как всегда... мне столько кода на js все равно не написать, да и незачем
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху