Уникальная сортировка элемента списка списков [закрыто]Python

Программы на Python
Ответить
Anonymous
 Уникальная сортировка элемента списка списков [закрыто]

Сообщение Anonymous »

Я запускаю программу Hillclimber на Python для решения шифров. Альпинист добавляет количество нграмм, расшифрованное сообщение и алфавит в виде списка в текущий выходной список. Вполне возможно, что одно и то же сообщение может быть создано несколько раз с использованием разных алфавитов, и я хочу отсортировать сообщение, чтобы удалить дубликаты, прежде чем сортировать по количеству ngram, чтобы получить выходные данные в числовом порядке. То есть, если у меня:

Код: Выделить всё

output = [[10, 'HELLO', 'ABCD'], [10, 'HELLO', 'ABDC'], [18, 'HLELO', 'BCDA']]
[Изменить для ясности]
Хорошо, Hillclimber работает над простым сообщением замены (a=h, b=x, c=m и т. д.). Для коротких открытых текстов не все буквы алфавита появляются в зашифрованном тексте. Что я делаю, так это идентифицирую уникальные буквы в зашифрованном тексте, помещаю их в начало списка, а затем дополняю список оставшимися недостающими буквами. Альпинист случайным образом распределяет буквы открытого текста во втором списке и пытается расшифровать сообщение, используя два алфавита. Если шифралфавит использует только 18 букв из-за того, что сообщение короткое, то только первые 18 букв в этом списке имеют значение, так что что-то вроде
'JOHNABCDEFGIKLMPQRZYXSTUVW'
и
'JOHNABCDEFGIKLMPQRWVUSTZXY'
выдаст тот же "открытый текст" с той же самой ngram имеет значение. Я сортирую по количеству нграмм, чтобы получить 200 лучших результатов, которые наиболее близки к нормальному распределению частот на английском языке, и мне нужна только одна копия каждого сообщения, чтобы увидеть, правильная ли это расшифровка или нет. Я хочу отбросить повторы.
Поскольку неиспользуемые буквы необходимы для простого шага замены, мне нужно сохранить их в списке шифралфавита, но неиспользуемые буквы не способствуют восстановлению ключа шифра (мне нужно только «ДЖОН» из приведенного выше примера, чтобы узнать, каким был настоящий ключ). Это означает, что не имеет значения, какой из двух алфавитов я оставлю после уникальной сортировки, поскольку от каждого нужны только первые 18 букв. А поскольку в примере первые 18 букв дают две идентичные расшифровки, количество нграмм (то есть количество раз, когда в результате появляются общие группы букв, такие как «ed», «er», «ing») будет идентичным.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»