में Salesforce सीआरएम , हर वस्तु 15-चरित्र अक्षरांकीय आईडी है, जो केस-संवेदी है है। अगर किसी के लिए उत्सुक है, वास्तव में यह आधार -62 नंबर है । हालाँकि, डेटा माइग्रेशन और एकीकरण के लिए उपयोग किए जाने वाले उपकरण केस सेंसिटिविटी का समर्थन कर सकते हैं या नहीं भी कर सकते हैं। उस पर काबू पाने के लिए, आईडी को सुरक्षित रूप से 18-वर्ण केस-असंवेदनशील अल्फ़ान्यूमेरिक आईडी में परिवर्तित किया जा सकता है। उस प्रक्रिया में 3-वर्ण अल्फ़ान्यूमेरिक चेकसम को ID से जोड़ा जाता है। रूपांतरण एल्गोरिथ्म है:
उदाहरण :
a0RE000000IJmcN
स्प्लिट आईडी को तीन 5-वर्ण वाले विखंडू में।
a0RE0 00000 IJmcN
प्रत्येक चंक को उल्टा कर दें।
0ER0a 00000 NcmJI
1
यदि यह अपरकेस है या0
यदि अन्यथा, तो प्रत्येक वर्ण को प्रत्येक वर्ण में बदलें ।01100 00000 10011
प्रत्येक 5-अंकीय बाइनरी संख्या के लिए
i
,i
अपरकेस वर्णमाला और अंक 0-5 (ABCDEFGHIJKLMNOPQRSTUVWXYZ012345
) के स्थान पर चरित्र प्राप्त करें ।00000 -> A, 00001 -> B, 00010 -> C, ..., 11010 -> Z, 11011 -> 0, ..., 11111 -> 5`
उपज:
M A T
मूल आईडी पर इन वर्णों, चेकसम को जोड़ें।
आउटपुट :
a0RE000000IJmcNMAT
प्रोग्राम या फ़ंक्शन लिखें जो इनपुट के रूप में 15-वर्ण अल्फ़ान्यूमेरिक (ASCII) स्ट्रिंग लेता है और 18-वर्ण आईडी देता है।
इनपुट सत्यापन इस प्रश्न के दायरे से बाहर है। प्रोग्राम अमान्य इनपुट पर कोई मान या क्रैश लौटा सकते हैं।
कृपया, सेल्सफोर्स के प्रॉपराइटर लैंग्वेज के फीचर्स का इस्तेमाल न करें, जो इस चैलेंज को तुच्छ बनाते हैं (जैसे कि फॉर्मूला CASESAFEID()
, APEX और में कनवर्ट Id
करना String
)।
परीक्षण के मामलों
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);}}
:। केवल वैध सेल्सफोर्स आईडी के साथ काम करता है, हालांकि।