# Deveploed by <NAME>

# selected map can be change scrambled
map = ['a','b','c','d','e','f','g','h','i','j','k','l','1','H']

map_dict = {}
base = len(map)

# create a bi-directional dict
for item in range(base):
    map_dict[item] = map[item]
    map_dict[map[item]] = item

def i_to_map_base(num):
    if num == 0: return map_dict[0]
    base_str = []
    while num > 0:
        base_str.append(map_dict[ num % base ])
        num = num / base
    base_str.reverse()
    return ''.join(base_str)

def map_base_to_i(str):
    x = [a for a in str]
    x.reverse()
    value = 0
    for i in range(len(x)):
        item = x[i]
        value += (map_dict[item] * pow(base,i))
    return value

# test code
for i in range(1000):
    str = i_to_map_base(i)
    val = map_base_to_i(str)
    print 'i[%s] : [%s:%s]' % (i , str , val)

# Deveploed by <NAME>

# selected map can be change scrambled
map = ['a','b','c','d','e','f','g','h','i','j','k','l','1','H']

map_dict = {}
base = len(map)

# create a bi-directional dict
for item in range(base):
    map_dict[item] = map[item]
    map_dict[map[item]] = item

def i_to_map_base(num):
    if num == 0: return map_dict[0]
    base_str = []
    while num > 0:
        base_str.append(map_dict[ num % base ])
        num = num / base
    base_str.reverse()
    return ''.join(base_str)

def map_base_to_i(str):
    x = [a for a in str]
    x.reverse()
    value = 0
    for i in range(len(x)):
        item = x[i]
        value += (map_dict[item] * pow(base,i))
    return value

# test code
for i in range(1000):
    str = i_to_map_base(i)
    val = map_base_to_i(str)
    print 'i[%s] : [%s:%s]' % (i , str , val)

# Deveploed by <NAME> # selected map can be change scrambled # create a bi-directional dict # test code