У меня такая проблема:
Существует список элементов класса CAnswer
(нет необходимости описывать класс), и мне нужно перетасовать его, но с одним ограничением - некоторые элементы списка имеют CAnswer.freeze
, установленный в True
, и эти элементы нельзя перетасовывать, но оставаться на их исходных позициях. Итак, скажем, для данного списка:
[a, b, c, d, e, f]
Где все элементы являются экземплярами CAnswer
, но c.freeze == True
, а для других freeze == False
возможный результат может быть:
[e, a, c, f, b, d]
Таким образом, элемент с индексом 2 все еще находится на своем месте.
Каков наилучший алгоритм для его достижения?
Заранее спасибо:)