Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 28, 2014 12:57:28

Nameless95
Зарегистрирован: 2014-11-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Подстановочный шифр

Напишите программу, которая умеет шифровать и расшифровывать шифр подстановки. Программа принимает на вход две строки одинаковой длины, на первой строке записаны символы исходного алфавита, на второй строке — символы конечного алфавита, после чего идёт строка, которую нужно зашифровать переданным ключом, и ещё одна строка, которую нужно расшифровать.

Пусть, например, на вход программе передано:
abcd
*d%#
abacabadaba
#*%*d*%

Это значит, что символ a исходного сообщения заменяется на символ * в шифре, b заменяется на d, c — на % и d — на #.
Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*% с помощью этого шифра. Получаем следующие строки, которые и передаём на вывод программы:
*d*%*d*#*d*
dacabac
Пример ввода/вывода:
Input 1:
abcd
*d%#
abacabadaba
#*%*d*%
Output 1:
*d*%*d*#*d*
dacabac
Input 2:
dcba
badc
dcba
badc
Output 2:
badc
dcba

Офлайн

#2 Ноя. 28, 2014 14:03:17

botinag
Зарегистрирован: 2014-02-20
Сообщения: 179
Репутация: +  35  -
Профиль   Отправить e-mail  

Подстановочный шифр

python2:

ish = raw_input('ishodnyi alfavit: ')
kon = raw_input('konechnyi alfavit: ')
rassh = raw_input('rasshifrovat: ')
zash = raw_input('zashifrovat: ')
ish_to_kon = dict(zip(ish, kon))
kon_to_ish = dict(zip(kon, ish))
print ''.join(map(ish_to_kon.get, rassh))
print ''.join(map(kon_to_ish.get, zash))

Офлайн

#3 Ноя. 28, 2014 14:35:20

GreyZmeem
От: Киев
Зарегистрирован: 2013-12-03
Сообщения: 147
Репутация: +  34  -
Профиль   Отправить e-mail  

Подстановочный шифр

from string import maketrans
 
in_chars = raw_input('In chars: ')
out_chars = raw_input('Out chars: ')
message = raw_input('String to encode: ')
 
trans_table = maketrans(in_chars, out_chars)
print message.translate(trans_table)
Или, если хочется без maketrans и zip:
in_chars = raw_input('In chars: ')
out_chars = raw_input('Out chars: ')
message = raw_input('String to encode: ')
 
for index, char in enumerate(in_chars):
	message = message.replace(char, out_chars[index])
 
print message
In chars: aioet
Out chars: 41037
String to encode: batman ate my bicycle
b47m4n 473 my b1cycl3

Отредактировано GreyZmeem (Ноя. 28, 2014 14:42:49)

Офлайн

#4 Ноя. 29, 2014 20:35:58

Nameless95
Зарегистрирован: 2014-11-28
Сообщения: 9
Репутация: +  0  -
Профиль   Отправить e-mail  

Подстановочный шифр

Большое спасибо за помощь!

Офлайн

#5 Дек. 2, 2014 14:04:20

JustJames
Зарегистрирован: 2014-11-30
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Подстановочный шифр

насколько я понимаю, по условию в аутпуте должно быть две строки?
“Нужно зашифровать строку abacabadaba и расшифровать строку #*%*d*%”

Отредактировано JustJames (Дек. 2, 2014 14:06:59)

Офлайн

#6 Дек. 2, 2014 14:11:29

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

Подстановочный шифр

JustJames
насколько я понимаю, по условию в аутпуте должно быть две строки?
но ведь не сложно самому доделать?!
in_chars = raw_input('In chars: ')
out_chars = raw_input('Out chars: ')
message = raw_input('String to encode: ')
d_message = raw_input('String to decode: ') 
for index, char in enumerate(in_chars):
	message = message.replace(char, out_chars[index])
print message
for index, char in enumerate(out_chars):
	d_message = d_message.replace(char, in_chars[index])
print d_message



————————————————
-*- Simple is better than complex -*-

Офлайн

#7 Дек. 2, 2014 14:20:17

JustJames
Зарегистрирован: 2014-11-30
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Подстановочный шифр

Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version