Прикреплённый файл «re_dumbcode.py»

Загрузка

   1 #!/usr/bin/env python
   2 # coding: utf
   3 '''
   4 «Шифр». Во введённом тексте заменить буквы так, чтобы слова продолжали читаться, но были непонятными. Например, подставлять вместо каждой гласной другую гласную, звонкую согласную превращать в глухую и т. п. Написать шифратор и дешифратор (если он не совпадает с шифратором). Почитать вслух шифровки :)
   5 '''
   6 
   7 import re, sys
   8 
   9 Code=u"""
  10 аоуыэ -> яеиёю
  11 яёюие -> ла лы лу лэ ло
  12 бпфв -> сзтд
  13 сзтд -> бпвф
  14 кхгц -> шжчщ
  15 шжчщ -> кхгц
  16 рмн -> нмр
  17 лйъь -> ля ли лё лю
  18 """.strip()         # без переводов строки
  19 
  20 # Преобразуем к виду [ [строка, строка], ...]
  21 Codeset=[re.split(" *-> *",s) for s in Code.split("\n")]
  22 # Перобразуем к виду [(буква, замена), ...]
  23 # используется «вытягивание списка», ср.
  24 #   [range(-1,l) for l in range(4)]
  25 # и [e for l in range(4) for e in range(-1,l)]  
  26 Codeset=[el for k,v in Codeset for el in zip(k, (" " in v and v.split() or v))]
  27 
  28 Coder=dict(Codeset)
  29 Decoder=dict(((b,a) for a,b in Codeset))
  30 Codelist,Decodelist=zip(*Codeset)
  31 if len(sys.argv)<2: # Coder
  32     reCoder=re.compile("("+"|".join(Codelist)+")")
  33     source=sys.stdin.read()
  34     pre=reCoder.split(source.decode("utf"))
  35     post=""
  36     while len(pre)>1:
  37         n,r=pre.pop(0),pre.pop(0)
  38         post+=n+Coder[r]
  39     print post.encode("utf")
  40 else:
  41     reCoder=re.compile("("+"|".join(Decodelist)+")")
  42     source=sys.stdin.read()
  43     pre=reCoder.split(source.decode("utf"))
  44     post=""
  45     while len(pre)>1:
  46         n,r=pre.pop(0),pre.pop(0)
  47         post+=n+Decoder[r]
  48     print post.encode("utf")

Прикреплённые файлы

Для ссылки на прикреплённый файл в тексте страницы напишите attachment:имяфайла, как показано ниже в списке файлов. Не используйте URL из ссылки «[получить]», так как он чисто внутренний и может измениться.

Вам нельзя прикреплять файлы к этой странице.