Advertisement
LACabeza

Encurta_url

Jun 5th, 2012
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.96 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: UTF-8 -*-
  3.  
  4. # Encurtador de URL
  5. #    Alysson Gonçalves de Azevedo - 05/06/2012
  6.  
  7. # Função Gera_url
  8. def Gera_url(num):
  9.   # Gera uma url baseada em um numero passado por param (deve ser maior que zero)
  10.  
  11.   # Define caracteres válidos
  12.   chr_valid  = ['0','1','2','3','4','5','6','7','8','9']
  13.   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']
  14.   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']
  15.  
  16.   # Base é o valor passado por param, como 0 também conta
  17.   base = num
  18.   # Quantidade de posições disponíveis para utilizar [0-9a-zA-Z]
  19.   size = len(chr_valid)
  20.   # Variável que será retornada
  21.   url = ''
  22.  
  23.   # Verifica range do param, não pode ser menor que zero nem maior que 62^4
  24.   if base < 0 or base >= size**4:
  25.     print 'Parâmetro fora da faixa, selecione outro.'
  26.     return '';
  27.  
  28.   # Se base = zero, preenche url com '0', isso é importante porque base = 0 não entra no loop
  29.   if base == 0:
  30.     url = chr_valid[base]
  31.    
  32.   # Looping
  33.   while base > 0:
  34.     # Índice é calculado com base no resto da divisão entre base por size
  35.     index = base % size
  36.     # url é formada com base no indece do vetor de caracteres válidos, sempre acumulando da direita para a esquerda
  37.     url  = chr_valid[index] + url
  38.     # Valor do índice é subtraído da base e então dividido por size
  39.     # isso dá o "efeito" de mudança de cursor através do vetor de caracteres válidos
  40.     base = ((base - index) / size)
  41.     # quando base é reduzida a zero, acaba o looping
  42.  
  43.   return url
  44. # Fim da função
  45.  
  46.  
  47. # Execução da função
  48. for num in [0 ,1 ,61, 62, 62**2-1, 62**2, 62**3-1, 62**3-1, 62**4-1, 62**4]:
  49.   print  num, Gera_url(num)
  50.  
  51. #Range pode ser entre 0 e 62^4; Atenção, dependendo do valor, pode demorar um pouco;
  52. #for num in range(62**4):
  53. #  print num, Gera_url(num)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement