View difference between Paste ID: Z6hkAaci and
SHOW: | | - or go back to the newest paste.
1-
1+
from sys import argv
2
3
def gen_words(word):
4
    yield word
5
    sub = ['aA@', 'bB8', 'cC', 'dD', 'eE3', 'fF', 'gG6', 'hH#', 'iIlL1!', 'jJ', 'kK', 'mM', 'nN', 'oO0', 'pP', 'qQ', 'rR', 'sSzZ5$', 'tT7', 'uUvV', 'wW', 'xX', 'yY']
6
    def subs(l):
7
        for i, s in enumerate(sub):
8
            if l in s:
9
                if s.index(l) < len(s) - 1:
10
                    return s[s.index(l) + 1]
11
        return l
12
    def reset_before(word, index):
13
        new_word = ""
14
        for i in range(0, index):
15
            for s in sub:
16
                if word[i] in s:
17
                    new_word += s[0]
18
            if len(new_word) == i:
19
                new_word += word[i]
20
        return new_word + word[index:]
21
    index = 0
22
    while True:
23
        l = word[index]
24
        subs_l = subs(l)
25
        if subs_l != l:
26
            p1 = "" if index == 0 else word[:index]
27
            p2 = subs_l
28
            p3 = "" if index == len(word) else word[index+1:]
29
            word = p1 + p2 + p3
30
            word = reset_before(word, index)
31
            index = 0
32
            yield word
33
        else:
34
            index = index + 1
35
        if index >= len(word):
36
            break
37
38
word = argv[1]
39
for w in gen_words(word):
40
    print w