2021-06-15 07:49:18 +00:00
---
id: 5900f3e91000cf542c50fefc
2022-02-28 07:59:21 +00:00
title: 'Problema 125: somme palindrome'
2022-07-12 11:56:02 +00:00
challengeType: 1
2021-06-15 07:49:18 +00:00
forumTopicId: 301752
dashedName: problem-125-palindromic-sums
---
# --description--
2022-02-28 07:59:21 +00:00
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$.
2021-06-15 07:49:18 +00:00
2022-02-28 07:59:21 +00:00
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.
2021-06-15 07:49:18 +00:00
2022-10-24 17:55:50 +00:00
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.
2021-06-15 07:49:18 +00:00
# --hints--
2022-10-24 17:55:50 +00:00
`palindromicSums(100000000)` dovrebbe restituire `2906969179` .
2021-06-15 07:49:18 +00:00
2022-10-20 16:13:17 +00:00
```js
assert.strictEqual(palindromicSums(100000000), 2906969179);
```
2022-10-24 17:55:50 +00:00
`palindromicSums(100)` dovrebbe restituire `137` .
2021-06-15 07:49:18 +00:00
```js
2022-10-20 16:13:17 +00:00
assert.strictEqual(palindromicSums(100), 137);
```
2022-10-24 17:55:50 +00:00
`palindromicSums(1000)` dovrebbe restituire `4164` .
2022-10-20 16:13:17 +00:00
```js
assert.strictEqual(palindromicSums(1000),4164);
2021-06-15 07:49:18 +00:00
```
# --seed--
## --seed-contents--
```js
2022-10-20 16:13:17 +00:00
function palindromicSums(limit) {
2021-06-15 07:49:18 +00:00
return true;
}
2022-10-20 16:13:17 +00:00
palindromicSums(100);
2021-06-15 07:49:18 +00:00
```
# --solutions--
```js
2022-10-20 16:13:17 +00:00
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;
}
2021-06-15 07:49:18 +00:00
```