Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript의 문자에 숫자 매핑

<시간/>

숫자 12145가 있다고 가정합니다. 다음 규범에 따라 숫자의 자릿수를 영어 알파벳으로 매핑하는 함수를 작성해야 합니다. 알파벳은 1의 경우 'a', 2의 경우 'b', 3의 경우 'c'와 같이 1 기반 인덱스에 따라 매핑됩니다.

숫자를 매핑하는 방법에는 여러 가지가 있을 수 있습니다. 위의 숫자 121415를 예로 들어 보겠습니다.

다음과 같이 매핑할 수 있습니다. -

12145->1,2,1,4,5->a,b,a,d,e

그것은 또한 될 수 있습니다 -

12145->12,1,4,5->l,a,d,e

그것은 또한 될 수 있습니다 -

12145->12,14,5->l,n,e

등등. 그러나 12145는 알파벳에 45에 대한 매핑이 없기 때문에 1,2,1,45가 될 수 없습니다. 따라서 우리 함수는 알파벳 매핑의 모든 순열 배열을 반환해야 합니다.

이에 대한 코드는 -

예시

const num = 12145;
const mapToAlphabets = num => {
   const numStr = '' + num;
   let res = [];
   const shoveElements = (left, right) => {
      if (!left.length) {
         res.push(right.map(el => {
            return (+el + 9).toString(36);
         }).join(''));
         return;
      };
      if(+left[0] > 0){
         shoveElements(left.slice(1), right.concat(left[0]));
      };
      if(left.length >= 2 && +(left.slice(0, 2)) <= 26){
         shoveElements(left.slice(2), right.concat(left.slice(0, 2)));
      };
   };
   shoveElements(numStr, []);
   return res;
}
console.log(mapToAlphabets(num));

출력

콘솔의 출력 -

[ 'abade', 'abne', 'aude', 'lade', 'lne' ]