Алгоритм прост: смещение каждого символа на 28 позиций вперед.
def encrypt(text): result = ''; for i in range(0, len(text)): result += chr(ord(text[i]) + 28); return result; def decrypt(text): result = ''; for i in range(0, len(text)): result += chr(ord(text[i]) - 28); return result;
Что-то у меня не придумывается меньше, чем за 18 телодвижений.
1. Залил полный бак в 10-литровый 2. Перелил его в 9-литровый. В 10 остался 1 литр 3. 9 опустошил, теперь в нём пусто, а в 10 по-прежнему 1 л. 4. перелил 1 л в 9. Этот 1 литр - назовём его переходящим остатком.
Опять погнали те же 4 телодвижения, по результатам переходящим остатком будет 2 литра.
Ещё раз - и получили переходящий остаток 3 литра Ещё раз, и получили 4 литра. К этому моменту сделали этот цикл уже 4 раза, итого 4*4 = 16 движений.
Опять делаем этот же цикл, но достаточно двух первых операций, и в 10-литровом баке получаем остаток 5 литров.
Итого, 16+2 = 18.
Ну, у меня так получилось. Может кто лучше придумает.
def encrypt(text):
result = '';
for i in range(0, len(text)):
result += chr(ord(text[i]) + 28);
return result;
def decrypt(text):
result = '';
for i in range(0, len(text)):
result += chr(ord(text[i]) - 28);
return result;