URL: https://linuxfr.org/users/elessar/journaux/esod-mumixam Title: Esod mumixam ! Authors: 🚲 Tanguy Ortolo Date: 2014年12月04日T16:28:19+01:00 License: CC By-SA Tags: zorglangue, chiffrement, zorglub, eviv, bulgroz et spirou Score: 41 À toutes fins utiles, j'ai rédigé un petit traducteur pour la zorglangue. Un traducteur de et vers la zorglangue, puisque, comme le ROT13, le codage et le décodage se font avec la même seule opération. Subtilités de ce traducteur : * il est écrit en Python 3 (et n'utilise que des modules standard) ; * il laisse la ponctuation en place ; * il met les majuscules où il faut, même pour des caractères hors ASCII. Exemples : ``` $ echo 'Dose maximum !' | zorglang Esod mumixam ! echo 'Dose maximum !' | zorglang | zorglang Dose maximum ! ``` Voilà, c'est tout, ça devrait même marcher pour des langues qui s'écrivent de droite à gauche puisque cette subtilité est indépendante du flux de caractères. Eviv Bulgroz ! Ah non, j'oubliais. Le code : ```python3 #! /usr/bin/python3 import io import re import sys word_re = re.compile(r'\b\w+\b') def zorglang(text): with io.StringIO() as buf: last_index = 0 for match in word_re.finditer(text): buf.write(text[last_index:match.start()]) word = match.group() for i in range(len(word)): if word[i].isupper(): buf.write(word[-1 - i].upper()) elif word[i].islower(): buf.write(word[-1 - i].lower()) else: buf.write(word[-1 - i]) last_index = match.end() buf.write(text[last_index:]) return buf.getvalue() if __name__ == '__main__': for line in sys.stdin: print(zorglang(line), end='') ```

AltStyle によって変換されたページ (->オリジナル) /