freeCodeCamp/curriculum/challenges/italian/10-coding-interview-prep/project-euler/problem-125-palindromic-sum...

1.9 KiB

id title challengeType forumTopicId dashedName
5900f3e91000cf542c50fefc Problema 125: somme palindrome 1 301752 problem-125-palindromic-sums

--description--

Il numero palindromo 595 è interessante perché può essere scritto come la somma dei quadrati consecutivi: 6^2 + 7^2 + 8^2 + 9^2 + 10^2 + 11^2 + 12^2.

Ci sono esattamente undici palindromi sotto il mille che possono essere scritti come somma di quadrati consecutivi, e la somma di questi palindromi è 4164. Nota che 1 = 0^2 + 1^2 non è stato incluso in quanto questo problema riguarda i quadrati degli interi positivi.

Trova la somma di tutti i numeri inferiori a limit che allo stesso tempo sono palindromi e possono essere scritti come la somma di quadrati consecutivi.

--hints--

palindromicSums(100000000) dovrebbe restituire 2906969179.


assert.strictEqual(palindromicSums(100000000), 2906969179);

palindromicSums(100) dovrebbe restituire 137.

assert.strictEqual(palindromicSums(100), 137);

palindromicSums(1000) dovrebbe restituire 4164.

assert.strictEqual(palindromicSums(1000),4164);

--seed--

--seed-contents--

function palindromicSums(limit) {

  return true;
}

palindromicSums(100);

--solutions--

function isPalindrome(num) {
  return num
    .toString()
    .split('')
    .every((digit, i, arr) => digit === arr[arr.length - 1 - i]);
}

function palindromicSums(limit) {
  let sumOfPalindromes = 0;
  const sqrtLimit = Math.sqrt(limit);
  const list = new Set();

  for (let i = 1; i <= sqrtLimit; i++) {
    let sumOfSquares = i * i;
    for (let j = i + 1; j <= sqrtLimit; j++) {
      sumOfSquares += j * j;
      if (sumOfSquares > limit) break;
      if (isPalindrome(sumOfSquares) && !list.has(sumOfSquares)) {
        sumOfPalindromes += sumOfSquares;
        list.add(sumOfSquares);
      }
    }
  }
  return sumOfPalindromes;
}