Files
2022-02-19 16:26:08 +09:00

84 lines
2.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
id: 5900f3881000cf542c50fe9b
title: 'Problema 28: le diagonali della spirale di numeri'
challengeType: 5
forumTopicId: 301930
dashedName: problem-28-number-spiral-diagonals
---
# --description--
Iniziando con il numero 1 e muovendo a destra in direzione oraria una spirale 5 per 5 è formata come segue:
<div style='padding-left: 4em;'>
<div style='color: red; display: inline;'>21</div> 22 23 24 <div style='color: red; display: inline;'>25</div><br>
20  <div style='color: red; display: inline;'>7</div>  8  <div style='color: red; display: inline;'>9</div> 10<br>
19  6  <div style='color: red; display: inline;'>1</div>  2 11<br>
18  <div style='color: red; display: inline;'>5</div>  4  <div style='color: red; display: inline;'>3</div> 12<br>
<div style='color: red; display: inline;'>17</div> 16 15 14 <div style='color: red; display: inline;'>13</div><br>
</div>
Può essere verificato che la somma di tutti i numeri sulle diagonali è 101.
Quale è la somma dei numeri sulle diagnonali di una spirale `n` per `n` formata nello stesso modo?
# --hints--
`spiralDiagonals(101)` dovrebbe restituire un numero.
```js
assert(typeof spiralDiagonals(101) === 'number');
```
`spiralDiagonals(101)` dovrebbe restituire 692101.
```js
assert(spiralDiagonals(101) == 692101);
```
`spiralDiagonals(303)` dovrebbe restituire 18591725.
```js
assert(spiralDiagonals(303) == 18591725);
```
`spiralDiagonals(505)` dovrebbe restituire 85986601.
```js
assert(spiralDiagonals(505) == 85986601);
```
`spiralDiagonals(1001)` dovrebbe restituire 669171001.
```js
assert(spiralDiagonals(1001) == 669171001);
```
# --seed--
## --seed-contents--
```js
function spiralDiagonals(n) {
return n;
}
spiralDiagonals(1001);
```
# --solutions--
```js
const spiralDiagonals = (n) => {
const Sn2 = (n) => {
return n*(n+1)*(2*n+1)/6;
};
const Sn = (n) => {
return n*(n+1)/2;
};
let sum = (Sn2(n-1) + Sn(n-1) + n-1) + (Math.floor(n/2) + Sn2(n));
return sum;
};
```