Поиск алгоритма, возможно похожего на «скользящее окно».
// Given that array.
$elementsToShow = ['A', 'B', 'D', 'E', 'F', 'G'];
// Generate 2 differents arrays.
$slider1 = ['A', 'B', 'D', 'E', 'F', 'G'];
$slider2 = ['B', 'D', 'E', 'F', 'G', 'A'];
Они будут показаны одновременно.
$ slider1 начинает показывать 'A' и будет переходите к элементу nexts каждые 14 секунд. $ slider2 начинает показывать 'B' и будет меняться на свой элемент nexts каждые 10 секунд.
Через 60 секунд. $ slider2 завершил свои элементы и начал снова со своего первого элемента 'B'.
Через некоторое время. Элемент, показанный в $ slider1 и $ slider2, будет одинаковым.
Как этого избежать?
Что я хочу знать, если есть какой-либо известный алгоритм для этого или аналогичного ...
Наличие списка элементов ($elementsToShow
) Наличие «мест», где отображается разная длительность «на элемент». Генерируйте $silder1
и $slider2
таким образом, чтобы одно и то же значение элемента никогда не отображалось в двух местах одновременно.
Что-то вроде:
// Valid examples.
$slider1 = ['A', 'B', 'D', 'E', 'F', 'G'];
$slider2 = ['B', 'D', 'E', 'F', 'G', 'A', 'B', 'D', 'E'];
$slider2 = ['B', 'D', 'E', 'F', 'G', 'A', 'B', 'A', 'C'];
// Non valid examples.
$slider1 = ['A', 'B', 'D', 'E', 'F', 'G'];
$slider2 = ['B', 'D', 'E', 'F', 'G', 'A', 'A', 'B', 'B'];
Не является правильное решение, если то же значение повторяется в следующей позиции (визуально будет выглядеть как длительность 20 секунд).
Спасибо за чтение; P
Ответ на вопрос Vivek:
Исполнение будет «одновременно», но в другом месте. На данный момент мне нужно только создать массивы (данные ползунков).
Этот массив будет использоваться в другом месте, к которому я не могу прикоснуться. Поэтому единственное, что я могу сделать, чтобы избежать дублирования, это построить массивы в последовательности, которая не будет иметь дубликатов.
Если я рисую «временную шкалу», где ось Y - это секунды, а по оси X - «Первый» Выход и второй выход:
В другом примере:
elements = A,B,C,D,E
First output durations: 2 seconds
Second output duration: 3 seconds
+----+-----+-----+-------+
|Secs| 1th | 2nd |Problem|
+----+-----+-----+-------+
| 01| B | A | |
| 02| B | A | |
| 03| C | A | |
| 04| C | B | |
| 05| D | B | |
| 06| D | B | |
| 07| E | C | |
| 08| E | C | |
| 09| A | C | |
| 10| A | D | |
| 11| B | D | |
| 12| B | D | |
| 13| C | E | |
| 14| C | E | |
| 15| D | E | |
| 16| D | A | |
| 17| E | A | |
| 18| E | A | |
| 19| A | B | |
| 20| A | B | |
| 21| B | B | XXX |
| 23| B | C | |
| 24| C | C | XXX |
| 25| C | C | XXX |
| 26| D | D | XXX |
| 22| D | D | XXX |
| 22| E | D | |
| 22| E | E | XXX |
+----+-----+-----+-------+
Проблема в XXX: на временной шкале, когда время выполнения достигает 21,24,25, время выполнения 2 выхода показывают одинаковые значения.
У меня нет способа проверить во время выполнения значения, которые будут показаны, поэтому я не могу программно проверить, когда выход изменится, сравните, если значение, которое будет показано, в другой выход, чтобы «перейти» к следующему.