Loolii
Loolii

Reputation: 455

How to make single digits?

function SingleDigits(num) {

function makeDigits(num) {
    let value = 1 
    let arr = String(num) 
    for(let i = 0 ; i < arr.length; i++){
      value = value * Number(arr[i]) 
    }
      return value;
}
value += "";
while(1>=value.length){
  let result = 1;
  result = result 
}

I'm going to do it until I make a single digit..

num = 786

7 * 8 * 6 -> 336
3 * 3 * 6 -> 54
5 * 4 -> 20
2 * 0 -> 0

like that.. how can i setting ?? or , my direction is right ?

Upvotes: 1

Views: 82

Answers (4)

Md Sabbir Alam
Md Sabbir Alam

Reputation: 5054

I am not sure why you have to use string here. You can do the following,

function SingleDigits(num) {
   
    if(num <= 9) {
      return num;
    }
    let res = 1;
    while(num) {
      res = res * (num % 10);
      num = parseInt(num / 10);
    }
    
    if(res <= 9) {
      return res;
    }
  return SingleDigits(res);
}

console.log(SingleDigits(786));

Upvotes: 2

Laxmi Saini
Laxmi Saini

Reputation: 57

You Should use recursive strategy.

function SingleDigits(num) {
  if (parseInt(num / 10) > 0) {
    let t = 1;
    while (num > 0) {
      t *= num % 10;
      num = parseInt(num / 10);
    }
    console.log(t);
    SingleDigits(t);

  }
}
SingleDigits(786);

Upvotes: 2

KooiInc
KooiInc

Reputation: 122936

Use recursion. The function can be pretty simple using a reducer to calculate the products.

const singleDigit = num => {
  const nums = [...`${num}`];
  const product = nums.reduce( (acc, val) => acc * +val, 1);
  console.log(`${nums.join(" * ")} -> ${product}`);
  return product <= 9 ? product : singleDigit(product);
}

console.log(singleDigit(4328));

Upvotes: 2

Keith
Keith

Reputation: 24201

You can use recursion to keep on going until the total equals 0.

eg.

function digits(num) {
  const nums = num.toString().
    split('').map(Number);
  const total = nums.reduce(
    (a,v) => a * v);
  console.log(
    nums.join(' * ') + 
    " => " + total);
  if (total > 9)
    digits(total);
}


digits(786);

Upvotes: 2

Related Questions