2021-06-15 00:49:18 -07:00
---
id: 594ecc0d9a8cf816e3340187
2022-02-19 12:56:08 +05:30
title: Numeri dei taxi
2021-06-15 00:49:18 -07:00
challengeType: 5
forumTopicId: 302337
dashedName: taxicab-numbers
---
# --description--
2022-02-19 12:56:08 +05:30
Un [numero taxicab ](https://en.wikipedia.org/wiki/Hardy– Ramanujan number "wp: Hardy– Ramanujan number" ) (la definizione che viene utilizzata qui) è un intero positivo che può essere espresso come la somma di due cubi positivi in più di un modo.
2021-06-15 00:49:18 -07:00
2022-02-19 12:56:08 +05:30
Il primo numero di taxi è `1729` , che è:
2021-06-15 00:49:18 -07:00
2022-02-19 12:56:08 +05:30
1< sup > 3< / sup > + 12< sup > 3< / sup > e
2021-06-15 00:49:18 -07:00
9< sup > 3< / sup > + 10< sup > 3< / sup > .
2022-02-19 12:56:08 +05:30
I numeri dei taxi sono anche conosciuti come:
2021-06-15 00:49:18 -07:00
< ul >
< li > taxi numbers< / li >
< li > taxi-cab numbers< / li >
< li > taxi cab numbers< / li >
2022-02-19 12:56:08 +05:30
< li > Numeri di Hardy-Ramanujan< / li >
2021-06-15 00:49:18 -07:00
< / ul >
# --instructions--
2022-02-19 12:56:08 +05:30
Scrivi una funzione che restituisce i numeri di taxi più bassi `n` . Per ciascuno dei numeri taxicab indica il numero e i suoi cubi costituenti.
2021-06-15 00:49:18 -07:00
2022-02-19 12:56:08 +05:30
**Vedi anche:**
2021-06-15 00:49:18 -07:00
< ul >
2022-02-19 12:56:08 +05:30
< li > < a href = 'https://oeis.org/A001235' target = '_blank' > A001235 numeri taxicab< / a > su Enciclopedia On-Line di sequenze di numeri interi.< / li >
< li > < a href = 'https://en.wikipedia.org/wiki/Taxicab_number' target = '_blank' > numero di taxi< / a > su Wikipedia.< / li >
2021-06-15 00:49:18 -07:00
< / ul >
# --hints--
2022-02-19 12:56:08 +05:30
`taxicabNumbers` dovrebbe essere una funzione.
2021-06-15 00:49:18 -07:00
```js
assert(typeof taxicabNumbers === 'function');
```
2022-02-19 12:56:08 +05:30
`taxicabNumbers` dovrebbe restituire un array.
2021-06-15 00:49:18 -07:00
```js
assert(typeof taxicabNumbers(2) === 'object');
```
2022-02-19 12:56:08 +05:30
`taxicabNumbers` dovrebbe restituire un array di numeri.
2021-06-15 00:49:18 -07:00
```js
assert(typeof taxicabNumbers(100)[0] === 'number');
```
2022-02-19 12:56:08 +05:30
`taxicabNumbers(4)` dovrebbe restituire [1729, 4104, 13832, 20683].
2021-06-15 00:49:18 -07:00
```js
assert.deepEqual(taxicabNumbers(4), res4);
```
2022-02-19 12:56:08 +05:30
`taxicabNumbers(25)` dovrebbe restituire [1729, 4104, 13832, 20683, 32832, 39312, 40033, 46683, 64232, 65728, 110656, 110808, 134379, 149389, 165464, 171288, 195841, 216027, 216125, 262656, 314496, 320264, 327763, 373464, 402597]
2021-06-15 00:49:18 -07:00
```js
assert.deepEqual(taxicabNumbers(25), res25);
```
2022-02-19 12:56:08 +05:30
I numeri risultanti di `taxicabNumbers(39)` da 20 a 29 dovrebbero essere [314496,320264,327763,373464,402597,439101,443889,513000,513856].
2021-06-15 00:49:18 -07:00
```js
assert.deepEqual(taxicabNumbers(39).slice(20, 29), res39From20To29);
```
# --seed--
## --after-user-code--
```js
const res4 = [1729, 4104, 13832, 20683];
const res25 = [
1729, 4104, 13832, 20683, 32832, 39312, 40033, 46683, 64232, 65728, 110656,
110808, 134379, 149389, 165464, 171288, 195841, 216027, 216125, 262656, 314496, 320264, 327763,
373464, 402597
];
const res39From20To29 = [314496, 320264, 327763, 373464, 402597, 439101, 443889, 513000, 513856];
```
## --seed-contents--
```js
function taxicabNumbers(n) {
return true;
}
```
# --solutions--
```js
function taxicabNumbers(nNumbers) {
const cubeN = [];
const s3s = {};
const e = 100;
for (let n = 1; n < e ; n + = 1 ) {
cubeN[n] = n * n * n;
}
for (let a = 1; a < e - 1 ; a + = 1 ) {
const a3 = cubeN[a];
for (let b = a; b < e ; b + = 1 ) {
const b3 = cubeN[b];
const s3 = a3 + b3;
let abs = s3s[s3];
if (!abs) {
s3s[s3] = abs = [];
}
abs.push([a, b]);
}
}
let i = 0;
const res = [];
Object.keys(s3s).forEach(s3 => {
const abs = s3s[s3];
if (abs.length >= 2) { // No two cube pairs found
i += 1;
if (i < = nNumbers) {
res.push(s3);
}
}
});
return res.map(item => parseInt(item, 10));
}
```