Что быстрее? Приведение и вычитание или продиктованный просмотр в Python - PullRequest
0 голосов
/ 14 марта 2012

Так что для забавы я решил вернуться к своему старому заданию в колледже, в котором был зашифрованный текст длиной около 75 символов и шпаргалка, в которой сообщение было подписано тремя буквами (инициалы моего учителя)

Что я сделал:

  1. Подшить результаты тем, у кого есть часть или вся кроватка в них.
  2. Затем я приступил к некоторому анализу частот букв на меньшем подмножестве результатов (1).

Теперь задача сводится к написанию некоторого программного обеспечения для распознавания языков, но сначала нужно решить несколько вопросов. Я выбрал перебор всех настроек ротора (тип, начальная позиция) таким образом, получающиеся записи с частью или всей кроваткой в ​​них все еще имеют некоторые буквы, выгруженные из панели управления.

Я знаю, что мой следующий шаг должен состоять в том, чтобы сделать две матрицы и переварить корпус, где в первой матрице я бы просто сделал подсчет, поэтому, если бы первая буква была буквой А, в первой матрице я был бы в ряду 0, и столбец, который я бы увеличил, будет буквой, следующей сразу за буквой A, скажем, что это буква B. Затем я перейду к букве B и увижу, что следующая буква - это буква U, поэтому я перейду к строке B и увеличу колонку. Запись U. Переварив весь корпус, я бы поместил вероятности во вторую матрицу.

Используя вторую матрицу, я мог бы присвоить значения оценки целым предложениям и иметь средства для оценки выходных данных и дальнейшего ограничения результатов, так что найти сообщение должно быть легко, как найти пин-код в НАМНОГО меньшем стоге сена.

Теперь я делаю это на python, и я хотел знать, лучше ли приводить символы к целым, делать вычитание наименьшего символа 'A' и затем использовать его в качестве индекса, или мне следует использовать dict и каждая буква будет соответствовать значению int, поэтому поиск индексов для местоположения в моих матрицах будет выглядеть примерно так: LetterTally[dict['A']][dict['B']].

Метод вычитания приведения выглядит следующим образом:

firstChar = 'A'
secondChar = 'B'

LetterTalley[(ord(firstChar)-ord('A'))][(ord(secondChar)-ord('A'))]

Из этих двух разных методов, что будет быстрее?

1 Ответ

1 голос
/ 14 марта 2012

Вместо того, чтобы строить матрицу, вы рассматривали возможность диктовать, чтобы можно было выполнить поиск (LetterTally['A']['B']) напрямую?

...