Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: UTF-8 -*-
- # Encurtador de URL
- # Alysson Gonçalves de Azevedo - 05/06/2012
- # Função Gera_url
- def Gera_url(num):
- # Gera uma url baseada em um numero passado por param (deve ser maior que zero)
- # Define caracteres válidos
- chr_valid = ['0','1','2','3','4','5','6','7','8','9']
- chr_valid += ['a','b','c','b','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
- chr_valid += ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
- # Base é o valor passado por param, como 0 também conta
- base = num
- # Quantidade de posições disponíveis para utilizar [0-9a-zA-Z]
- size = len(chr_valid)
- # Variável que será retornada
- url = ''
- # Verifica range do param, não pode ser menor que zero nem maior que 62^4
- if base < 0 or base >= size**4:
- print 'Parâmetro fora da faixa, selecione outro.'
- return '';
- # Se base = zero, preenche url com '0', isso é importante porque base = 0 não entra no loop
- if base == 0:
- url = chr_valid[base]
- # Looping
- while base > 0:
- # Índice é calculado com base no resto da divisão entre base por size
- index = base % size
- # url é formada com base no indece do vetor de caracteres válidos, sempre acumulando da direita para a esquerda
- url = chr_valid[index] + url
- # Valor do índice é subtraído da base e então dividido por size
- # isso dá o "efeito" de mudança de cursor através do vetor de caracteres válidos
- base = ((base - index) / size)
- # quando base é reduzida a zero, acaba o looping
- return url
- # Fim da função
- # Execução da função
- for num in [0 ,1 ,61, 62, 62**2-1, 62**2, 62**3-1, 62**3-1, 62**4-1, 62**4]:
- print num, Gera_url(num)
- #Range pode ser entre 0 e 62^4; Atenção, dependendo do valor, pode demorar um pouco;
- #for num in range(62**4):
- # print num, Gera_url(num)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement