Как сделать вычисление разницы (не равна 1 или -1 – то вернуть false.)
Функцию isJumping, которая принимает число и возвращает строку JUMPING, если каждая цифра в числе отличается от соседней на 1, а если нет — строка NOT JUMPING.
Как написать эту логику, помогите, совсем запутался.
function isJumping(number) {
let toStr = String(number);
let previusNum = toStr[0];
let current;
for (let i = 1; i < toStr.length; i++) {
current = Number(toStr[i]);
let count = Math.abs(current - previusNum);
if(count === 1 || count -1){
return false
}
}
return true
}
Ответы (1 шт):
Автор решения: Daniil Loban
→ Ссылка
в своем коде Вы забыли несколько моментов:
- Math.abs не может вернуть -1
count === 1 || count -1- это условие сработает если count будет равен единице либо если count будет больше единицы (||count -1)- Выходить с false (
NOT JUMPING) нужно только если разница не совпадает с 1 - Перенести текущее число в предыдущее чтобы цепочка не обрывалась
function isJumping(number) {
let toStr = String(number);
let previusNum = toStr[0];
let current;
for (let i = 1; i < toStr.length; i++) {
current = Number(toStr[i]);
let count = Math.abs(current - previusNum);
// count может быть только положительным
// выход только если не 1
if(count !== 1){
return 'NOT JUMPING'
}
previusNum = current // переносим в previusNum
}
return 'JUMPING'
}
console.log(isJumping(13)) // NOT JUMPING
console.log(isJumping(123)) // JUMPING
console.log(isJumping(12321)) // JUMPING
console.log(isJumping(1235)) // NOT JUMPING
Со своей стороны я считаю что раз задачка математическая а не строковая то и решать ее нужно математическими средствами
function isJumping(number) {
let previusNum = number % 10
number = Math.floor(number / 10)
while (number){
current = number % 10
number = Math.floor(number / 10)
if (Math.abs(current - previusNum) !== 1){
return 'NOT JUMPING'
}
previusNum = current
}
return 'JUMPING'
}
console.log(isJumping(13)) // NOT JUMPING
console.log(isJumping(123)) // JUMPING
console.log(isJumping(12321)) // JUMPING
console.log(isJumping(1235)) // NOT JUMPING