Число называется счастливым если при складывании, суммы обеих сторон числа ровны друг другу.На пример։A=1230 считается счастливым потому что сумма первой половины числа ровна второй половине (1+2 | 3+0).Нужно написать функцию solution которое получает число и возвращает true если число счастливое, false в обратном случае.
Нужно реализовать код под 4 варианта
x=[239017];
function solution(x){
let newArr = [];
for(let i=0;i<x.length;i++){
if (i % 2 == 0){
let temp = x[i] + x[i+1];
newArr.push(temp);
}
if(newArr[i]===newArr[i+1]){
return true
}
return false
}
}
console.log(solution(x))
Как реализовать код правильно
А число в качестве аргумента функции передаётся именно как массив?
Тогда как-то так можно сделать:
function solution(num) {
let x = num.join(''); //преобразуем массив в строку
let left = 0;
let right = 0;
//в цикле проходим по строке с двух сторон
for(let i = 0, j = x.length-1; i < x.length/2; i++, j--) {
left += Number(x[i]); //складываем левую часть
right += Number(x[j]); //складываем правую часть
}
if(left == right) {
return true;
}
else {
return false;
}
}
console.log(solution([134008]));
Как-то так получилось, проверки корректности входных данных нет:
let test = x => 0 === String(x).split('')
.map((x, i, a) => x * (a.length/2 > i ? -1 : 1))
.reduce((a, x) => a + x);
[1230, 239017, 134008, 10].forEach(x => console.log(x, ' -> ', test(x)));
В этом решении число представляется как строка, разбивается на символы, после чего каждый из символов приводится к числу, а те числа, индекс которых в исходном масиве больше половины длины массива, умножаются на -1. Потом сумма всех этих элементов сравнивается с 0.
Я вот такое решение нашёл :)
//на входе:x=[1230],на выходе:true
//на входе:x=[239017],на выходе:false
//на входе:x=[134008],на выходе:true
//на входе:x=[10],на выходе:false
let xn = [1230, 239017, 134008, 10];
function solution(x) {
x.forEach(elem => {
let a = elem.toString().split('');
let res1 = a.slice(0, a.length / 2).reduce((acc, cur) => +acc + +cur);
let res2 = a.slice(a.length / 2, a.length).reduce((acc, cur) => +acc + +cur)
console.log(elem, res1 === res2);
});
}
solution(xn);
function div(a, b) {
return (a - a % b) / b
}
function solution(num) {
let len = num.toString().length;
const half = div(len, 2);
let a = 0;
let b = 0;
let count = 0;
let flag = true;
while (num > 0) {
if (count === half) {
flag = !flag;
if (len % 2 > 0) {
num = div(num, 10);
}
}
if (flag) {
b += num % 10;
} else {
a += num % 10;
}
num = div(num, 10);
count++;
}
return a === b;
}
console.log(solution(1230)); // true
console.log(solution(239017)); // false
console.log(solution(134008)); // true
console.log(solution(10)); // false
console.log(solution(112)); // false
console.log(solution(35108)); // true
function isHappy(number) {
const arrayOfNumbers = String(number).split('');
if (arrayOfNumbers.length % 2 !== 0) return false;
const average = arrayOfNumbers.length / 2;
const leftSideSum = arrayOfNumbers.slice(0, average).reduce((res, num) => Number(res) + Number(num));
const rightSideSum = arrayOfNumbers.slice(average).reduce((res, num) => Number(res) + Number(num));
return leftSideSum === rightSideSum
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Найти наибольший общий делитель двух натуральных чисел:
Я подключил barba js(второй версии) и gsap через cdn:
Есть проблема, в файле dbjs есть такой код: