Quiero implementar una función para verificar si un número dado contiene menos de dos dígitos diferentes, que se llaman duodígitos.
Por ejemplo :
12, 110, -33333: son todos duodígitos, ya que no tienen más de dos dígitos diferentes 102: no es un duodígito ya que sus dígitos; 1 y 0 y 2 son tres dígitos diferentes
¿Cómo puedo implementar un método, que puede iterar y verificar si es un duodgits o no y devolver verdadero o falso como resultado?
Así es como lo haría:
/** * Checks if a number is a duodigit. * @param {number} num * @returns {boolean} */ function isDuodigit(num) { return new Set(Math.abs(num).toString()).size <= 2; }mi solucion seria:
function isDuoDigit(num) { const numArr = Array.from(num.toString()); const uniqueNums = numArr.filter((num, index) => numArr.indexOf(num) === index); return uniqueNums.length > 2 ? "Number is not DuoDigit" : "Number is DuoDigit!" } console.log(isDuoDigit(11111000000)); // Number is DuoDigit! console.log(isDuoDigit(111155555500000)); // Number is NOT DuoDigit!Convierta un número en una matriz de cadenas ( 102 = ["1", "0", "2"] )
const numArr = Array.from(num.toString());
Obtenga una matriz con valores únicos (sin duplicados)
const uniqueNums = numArr.filter((num, index) => numArr.indexOf(num) === index);
Comprobamos si la longitud de la matriz de números únicos es mayor que 2. Si es cierto, significa que el número NO es DuoDigit y si la longitud de la matriz es 2 o menos, el número es DuoDigit
devolver números únicos.longitud > 2 ? "El número no es DuoDigit": "¡El número es DuoDigit!"
Si desea hacerlo sin una conversión de conjunto o cadena.
function isDuoDigit(num){ num = Math.abs(num); let first = '', second = ''; while (num > 0) { let digit = num % 10; if(first === '') first = digit else if(second === '') second = digit else if(first !== digit && second !== digit) return false; num = Math.trunc(num / 10); } return true; }