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 IJmcNInvierta cada trozo.
0ER0a 00000 NcmJIReemplace cada personaje en cada fragmento por
1si está en mayúscula o por0lo contrario.01100 00000 10011Para cada número binario de 5 dígitos
i, obtenga el carácter en la posiciónien 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 TAgregue 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 Ida StringAPEX & 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.