Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript로 생년월일에서 생명 경로 숫자(Life Path Number) 계산하기

생명 경로 숫자란?

생명 경로 숫자(Life Path Number)는 점성술·수리학에서 개인의 삶의 방향을 나타내는 숫자로, 생년월일에 포함된 모든 숫자를 각각 더해 한 자릿수가 될 때까지 반복해서 줄여서 계산합니다.

문제 정의

우리는 'yyyy-mm-dd' 형식의 날짜 문자열을 입력받아 해당 생년월일의 생명 경로 숫자를 반환하는 JavaScript 함수를 작성해야 합니다.

예를 들어, 날짜가 1999-06-10이라면 다음과 같이 계산할 수 있습니다.

연도 : 1 + 9 + 9 + 9 = 28 → 2 + 8 = 10 → 1 + 0 = 1
월 : 0 + 6 = 6
일 : 1 + 0 = 1
결과 : 1 + 6 + 1 = 8

즉, 연도·월·일을 각각 한 자릿수로 줄인 뒤, 그 결과들을 다시 합산하여 최종적으로 한 자릿수를 얻습니다.

구현 예제

다음은 이를 구현한 코드입니다.

const date = '1999-06-10';
const findLifePath = (date = '') => {
    const sum = (arr = []) => {
        if(arr.length === 1){
            return +arr[0]
        };
        let total = arr.reduce((acc, val) => acc + val);
        if (total < 10){
            return total
        };
        return sum(String(total).split("").map(Number));
    };
    let [year, month, day] = date.split("-")
    year = sum(String(year).split("").map(Number));
    month = sum(String(month).split("").map(Number));
    day = sum(String(day).split("").map(Number));
    return sum([year,month,day]);
};
console.log(findLifePath(date));

코드 설명

이 코드의 핵심은 재귀 함수 sum입니다. 배열의 길이가 1이면 그 값을 그대로 반환하고, 합계가 10 미만이면 바로 반환하며, 그렇지 않으면 합계를 다시 문자열로 변환해 각 자릿수로 분리한 후 재귀적으로 합산을 반복합니다. 이렇게 하면 어떤 큰 수든 한 자릿수로 줄어들 때까지 처리할 수 있습니다.

출력 결과

콘솔 출력 결과는 다음과 같습니다.

8