Хорошо, первое сообщение ..
Итак, у меня есть это задание для расшифровки криптограмм вручную, но я также хотел немного автоматизировать процесс, если не все, по крайней мере, несколько частей, поэтому я просмотрел и нашел несколько лайнеров sed и awk one, чтобы сделать некоторые вещи, которые я хотел сделать, но не все, что хотел / нуждался.
Есть некоторые сайты, которые вроде как делают то, что я хочу, но я действительно хочу просто сделать это в bash по какой-то причине, просто потому, что я хочу понять это лучше и так далее:)
Сценарий примет имя файла в качестве параметра и выведет другой файл, такой как solution$1
, когда будет готово.
if [ -e "$PWD/$1" ]; then
echo "$1 exists"
else
echo "$1 doesnt exists"
fi
Запустил бы скрипт, чтобы увидеть, существует ли файл в параметре ..
Тогда я нашел этот лайнер
sed -e "s/./\0\n/g" $1 | while read c;do echo -n "$c" ; done
Что отлично работает, но мне нужно было бы указать количество вхождений на одну букву, я действительно не понимаю, как это сделать.
Вот то, чего я пытаюсь добиться более или менее http://25yearsofprogramming.com/fun/ciphers.htm для подсчета уникальных буквенных случаев и тому подобное.
Затем мне нужно поместить все буквы в нижний регистр.
После этого я вижу сценарий, выполняющий эти вещи ..
-скрипт, который сканирует файл словаря по определенному шаблону и размеру слов
чем больше слов, тем лучше.
Например: скажем, решением является слово «одежда», а зашифрованное слово - «zxxzgvk»
существует ли способ регулярного выражения для выражения шаблона, который сравнивает эти два слова и перечисляет слово «одежда» в файле словаря, потому что «appa» и «zxxz» являются похожими шаблонами, а «zxxzgvk» имеет такую же длину с «одеждой»
Можно ли это сделать частично, и реалистично ли смотреть на проблему, как эта, или это просто надумано?
- Другой индекс, который берет найденные буквы из предыдущего выходного слова и меняет местами
буквы в криптограмме.
Поменяйте местами буквы в верхнем регистре, чтобы различать их по времени.
Тогда мне придется выяснить, как перейти к повторному поиску новых найденных слов, чтобы увидеть, найдены ли они в файле словаря частично или полностью, а затем поменять местами больше букв.
Кто-нибудь видел эту проблему в прошлом и пытался решить ее с помощью шаблонов в словах
как я описал, или это слишком сложно?
Должен ли я регистрировать любой из свопов?
Может быть, просто отсканируйте все зашифрованные слова и поменяйте местами, а затем сделайте еще одну зачистку
с наличием для ограничения в первом цикле, чтобы не изменять заглавные буквы (фактически использовать их как более точные шаблоны ..!)
Кто-нибудь делал похожий скрипт / программу в другом языке? Если да, то какой? Может быть, я могу как-то относиться :) 1052 *
Может быть, мы можем использовать ваше понимание того, как вы продумали свой код.
Я с радостью включу криптограммы, которые я декодировал, и ту, которую мне еще предстоит расшифровать:)
Опять же, целью моего задания является не выполнение этого сценария, а просто разрешение криптограмм. Но выполнение сценариев или, по крайней мере, попытка понять, как я буду выполнять этот сценарий, помогает мне немного больше понять, как мыслить с точки зрения кода. Не стесняйтесь указывать мне в правильном направлении!
Сама криптограмма основана на простой буквенной замене.
Я сделал пастин с кодом, который будет :) http://pastebin.com/UEQDsbPk
В псевдокоде я вижу это так:
- вызов программы с входным именем файла в параметре и, необязательно, вторым именем файла (словарем)
- проверить, что входной файл существует и не пуст
- прочитать содержимое файла и отобразить его на экране
- преобразовать в нижний регистр
- отсканируйте текст и посчитайте количество каждой буквы, чтобы провести частотный анализ
- спросить пользователя, каким языком должен быть текст (по умолчанию на английском)
- используйте ответ, чтобы указать, какие буквенные частоты использовать в качестве базовой линии
- поменять местами буквы, соответствующие частоте анализа в верхнем регистре.
- распечатать измененный документ на экране
- попросить пользователя поменять буквы в зашифрованном тексте
- , если пользователь задал файл словаря в качестве второго аргумента
- , затем просканироватьзашифруйте слова и найдите слова большего размера
- найдите слова с похожим шаблоном (некоторые буквы повторяются) в файле словаря
- отобразите на экране результаты, если они есть
- предлагаем поменять местами буквы, соответствующие шифру
- напечатать модифицированный шифр на экране
- попросить еще раз поменять буквы или найти больше похожих слов
Более или менее этос моей точки зрения, сценарий структурирован.
- Вы видите что-нибудь, что я должен добавить, я что-то пропустил?
Надеюсь, эта пересмотренная версия более понятна для всех!