2010-12-14 8 views
2

Quelqu'un peut-il me aider à trouver un algorithme ou moyen de décoder un numéro à 3 caractères lorsqu'ils sont codés de la manière suivante:Nombre au texte décodage

Chaque élément représente 3 caractères alphabétiques comme dans les exemples suivants:

DOG -> (3 * 26^2) + (14 * 26) + 6 = 2398

CAT -> (2 * 26^2) + (0 * 26) + 19 = 1371

ZZZ -> (25 * 26^2) + (25 * 26^2) + 25 = 17575

Donc, disons que j'ai 7446 ou 3290, comment pourrais-je les convertir en texte?

Répondre

3

Essayez ceci pour extraire les lettres dans l'ordre inverse:

7446    % 26 = 10 
(7446/26)  % 26 = 0 
(7446/26/26) % 26 = 11 

Par exemple:

1371    % 26 = 19 (T) 
(1371/26)  % 26 = 0 (A) 
(1371/26/26) % 26 = 2 (C) 

CAT 

Le % fait référence à la modulo operation. x % y vous donne le reste de la division x/y.

+0

Ou inverser cette tendance et l'obtenir dans le bon ordre. :) – Instantsoup

+0

@Instantsoup: Heh, oui. :) –

0

Modulo

input = 2398 
iteration = 1 
while input > 0 
    character = input % 26 
    input = input - character 
    input = input/26 
    print character 
+0

vient de remarquer que si vous ajoutez un deux-points après l'instruction while, cela devient un code python 2.x valide – Novikov