Здесь:
генератор фракталов (жмякаем F5 или кнопочку внизу, чтобы сгенерировать новый фрактал)
В двух словах:
Perfect Shuffle - это такой алгоритм "смешиваний" или тасований. Делим исходный массив пополам. Четные элементы размещаем в начале массива, нечетные - в конце. На картинке наглядно:
Интересно то, что для любой длины массива, после некоторого числа итераций, все элементы возвращаются в исходное состояние.
Еще интересней то, что невозможно предугадать, какое число перестановок понадобится, чтобы вернуть все элементы в исходной состояние. На графике ниже: X - длина массива, Y - количество итераций, белыми точками отмечены исходные состояния:
Про траекторию первого элемента:
http://xcontcom.livejournal.com/14840.html Вместо одномерного массива, можно использовать двумерную матрицу. Берем матрицу (на первой итерации 2х2), делаем 4 копии. С каждой копией производим некоторое действие (поворот, инверсия), дальше совмещаем 4 копии, используя алгоритм perfect shuffle. Получаем новую матрицу.
С учетом всех возможных действий, можно сгенерировать 65536 фракталов. Некоторые из них: