En Salesforce CRM , cada objeto tiene una ID alfanumérica de 15 caracteres, que distingue entre mayúsculas y minúsculas. Si alguien tiene curiosidad, en realidad es el número base 62 . Sin embargo, las herramientas utilizadas para la migración e integración de datos pueden o no admitir mayúsculas y minúsculas. Para superar eso, las ID se pueden convertir de manera segura en ID alfanuméricas que no distinguen entre mayúsculas y minúsculas de 18 caracteres. En ese proceso, se agrega suma de verificación alfanumérica de 3 caracteres a la ID. El algoritmo de conversión es:
Ejemplo :
a0RE000000IJmcN
Divide la identificación en tres fragmentos de 5 caracteres.
a0RE0 00000 IJmcN
Invierta cada trozo.
0ER0a 00000 NcmJI
Reemplace cada personaje en cada fragmento por
1
si está en mayúscula o por0
lo contrario.01100 00000 10011
Para cada número binario de 5 dígitos
i
, obtenga el carácter en la posicióni
en concatenación del alfabeto en mayúscula y los dígitos 0-5 (ABCDEFGHIJKLMNOPQRSTUVWXYZ012345
).00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5`
Flexible:
M A T
Agregue estos caracteres, la suma de verificación, a la ID original.
Salida :
a0RE000000IJmcNMAT
Escriba un programa o función que tome una cadena alfanumérica de 15 caracteres (ASCII) como entrada y devuelva una ID de 18 caracteres.
La validación de entrada está fuera del alcance de esta pregunta. Los programas pueden devolver cualquier valor o bloquearse en una entrada no válida.
Por favor, no use las características de los lenguajes propios de Salesforce que hacen que este desafío sea trivial (como la fórmula CASESAFEID()
, la conversión Id
a String
APEX & c).
Casos de prueba
a01M00000062mPg -> a01M00000062mPgIAI
001M000000qfPyS -> 001M000000qfPySIAU
a0FE000000D6r3F -> a0FE000000D6r3FMAR
0F9E000000092w2 -> 0F9E000000092w2KAA
aaaaaaaaaaaaaaa -> aaaaaaaaaaaaaaaAAA
AbCdEfGhIjKlMnO -> AbCdEfGhIjKlMnOVKV
aBcDEfgHIJKLMNO -> aBcDEfgHIJKLMNO025
public class X{public X(Id i){System.debug((String)i);}}
. Sin embargo, solo funciona con ID de Salesforce válidas.