parent
aeeb5b5bcc
commit
b7d847d6e5
@ -0,0 +1,68 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
# vim: set noet ts=4:
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import optparse
|
||||||
|
|
||||||
|
translations = {
|
||||||
|
0: "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||||
|
1: "bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA",
|
||||||
|
2: "cdefghijklmnopqrstuvwxyzabCDEFGHIJKLMNOPQRSTUVWXYZAB",
|
||||||
|
3: "defghijklmnopqrstuvwxyzabcDEFGHIJKLMNOPQRSTUVWXYZABC",
|
||||||
|
4: "efghijklmnopqrstuvwxyzabcdEFGHIJKLMNOPQRSTUVWXYZABCD",
|
||||||
|
5: "fghijklmnopqrstuvwxyzabcdeFGHIJKLMNOPQRSTUVWXYZABCDE",
|
||||||
|
6: "ghijklmnopqrstuvwxyzabcdefGHIJKLMNOPQRSTUVWXYZABCDEF",
|
||||||
|
7: "hijklmnopqrstuvwxyzabcdefgHIJKLMNOPQRSTUVWXYZABCDEFG",
|
||||||
|
8: "ijklmnopqrstuvwxyzabcdefghIJKLMNOPQRSTUVWXYZABCDEFGH",
|
||||||
|
9: "jklmnopqrstuvwxyzabcdefghiJKLMNOPQRSTUVWXYZABCDEFGHI",
|
||||||
|
10: "klmnopqrstuvwxyzabcdefghijKLMNOPQRSTUVWXYZABCDEFGHIJ",
|
||||||
|
11: "lmnopqrstuvwxyzabcdefghijkLMNOPQRSTUVWXYZABCDEFGHIJK",
|
||||||
|
12: "mnopqrstuvwxyzabcdefghijklMNOPQRSTUVWXYZABCDEFGHIJKL",
|
||||||
|
13: "nopqrstuvwxyzabcdefghijklmNOPQRSTUVWXYZABCDEFGHIJKLM",
|
||||||
|
14: "opqrstuvwxyzabcdefghijklmnOPQRSTUVWXYZABCDEFGHIJKLMN",
|
||||||
|
15: "pqrstuvwxyzabcdefghijklmnoPQRSTUVWXYZABCDEFGHIJKLMNO",
|
||||||
|
16: "qrstuvwxyzabcdefghijklmnopQRSTUVWXYZABCDEFGHIJKLMNOP",
|
||||||
|
17: "rstuvwxyzabcdefghijklmnopqRSTUVWXYZABCDEFGHIJKLMNOPQ",
|
||||||
|
18: "stuvwxyzabcdefghijklmnopqrSTUVWXYZABCDEFGHIJKLMNOPQR",
|
||||||
|
19: "tuvwxyzabcdefghijklmnopqrsTUVWXYZABCDEFGHIJKLMNOPQRS",
|
||||||
|
20: "uvwxyzabcdefghijklmnopqrstUVWXYZABCDEFGHIJKLMNOPQRST",
|
||||||
|
21: "vwxyzabcdefghijklmnopqrstuVWXYZABCDEFGHIJKLMNOPQRSTU",
|
||||||
|
22: "wxyzabcdefghijklmnopqrstuvWXYZABCDEFGHIJKLMNOPQRSTUV",
|
||||||
|
23: "xyzabcdefghijklmnopqrstuvwXYZABCDEFGHIJKLMNOPQRSTUVW",
|
||||||
|
24: "yzabcdefghijklmnopqrstuvwxYZABCDEFGHIJKLMNOPQRSTUVWX",
|
||||||
|
25: "zabcdefghijklmnopqrstuvwxyZABCDEFGHIJKLMNOPQRSTUVWXY"
|
||||||
|
}
|
||||||
|
|
||||||
|
def main():
|
||||||
|
usage = "rot.py [-n n] <string>"
|
||||||
|
parser = optparse.OptionParser(usage=usage)
|
||||||
|
parser.add_option('-n', action='store', type="int", help='Rotate by n (0 <= n <= 26)', )
|
||||||
|
options, args = parser.parse_args()
|
||||||
|
s = ""
|
||||||
|
if len(args) == 0:
|
||||||
|
print("Please provide a string!")
|
||||||
|
sys.exit(1)
|
||||||
|
elif len(args) == 1:
|
||||||
|
s = args[0]
|
||||||
|
else:
|
||||||
|
s = " ".join(args)
|
||||||
|
|
||||||
|
if options.n is not None:
|
||||||
|
if 1 <= options.n <= 25:
|
||||||
|
rot = str.maketrans("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", translations[options.n])
|
||||||
|
t = str.translate(s, rot)
|
||||||
|
print(f"rot({options.n:2d}): {t}")
|
||||||
|
elif options.n == 0 or options.n == 26:
|
||||||
|
print(f"rot({options.n:2d}): {s}")
|
||||||
|
else:
|
||||||
|
print("Valid range for n: 0 to 26! 0 equals 26")
|
||||||
|
sys.exit(1)
|
||||||
|
else:
|
||||||
|
print(f"rot( 0): {s}")
|
||||||
|
for i in range(1,26):
|
||||||
|
rot = str.maketrans("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", translations[i])
|
||||||
|
t = str.translate(s, rot)
|
||||||
|
print(f"rot({i:2d}): {t}")
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
Loading…
Reference in new issue