chore(i18n,chn): manually downloaded curriculum (#42858)

This commit is contained in:
Mrugesh Mohapatra
2021-07-15 13:04:11 +05:30
committed by GitHub
parent eef1805fe6
commit 7eb0630f2d
248 changed files with 5645 additions and 2149 deletions

View File

@ -14,22 +14,40 @@ A spider, S, sits in one corner of a cuboid room, measuring 6 by 5 by 3, and a f
However, there are up to three "shortest" path candidates for any given cuboid and the shortest route doesn't always have integer length.
It can be shown that there are exactly 2060 distinct cuboids, ignoring rotations, with integer dimensions, up to a maximum size of M by M by M, for which the shortest route has integer length when M = 100. This is the least value of M for which the number of solutions first exceeds two thousand; the number of solutions when M = 99 is 1975.
It can be shown that there are exactly `2060` distinct cuboids, ignoring rotations, with integer dimensions, up to a maximum size of M by M by M, for which the shortest route has integer length when M = 100. This is the least value of M for which the number of solutions first exceeds two thousand; the number of solutions when M = 99 is `1975`.
Find the least value of M such that the number of solutions first exceeds one million.
Find the least value of M such that the number of solutions first exceeds `n`.
# --hints--
`cuboidRoute()` should return a number.
`cuboidRoute(2000)` should return a number.
```js
assert(typeof cuboidRoute() === 'number');
assert(typeof cuboidRoute(2000) === 'number');
```
`cuboidRoute()` should return 1818.
`cuboidRoute(2000)` should return `100`.
```js
assert.strictEqual(cuboidRoute(), 1818);
assert.strictEqual(cuboidRoute(2000), 100);
```
`cuboidRoute(25000)` should return `320`.
```js
assert.strictEqual(cuboidRoute(25000), 320);
```
`cuboidRoute(500000)` should return `1309`.
```js
assert.strictEqual(cuboidRoute(500000), 1309);
```
`cuboidRoute(1000000)` should return `1818`.
```js
assert.strictEqual(cuboidRoute(1000000), 1818);
```
# --seed--
@ -37,16 +55,40 @@ assert.strictEqual(cuboidRoute(), 1818);
## --seed-contents--
```js
function cuboidRoute() {
function cuboidRoute(n) {
return true;
}
cuboidRoute();
cuboidRoute(2000);
```
# --solutions--
```js
// solution required
function cuboidRoute(n) {
// Based on https://www.mathblog.dk/project-euler-86-shortest-path-cuboid/
function getLength(a, b) {
return Math.sqrt(a ** 2 + b ** 2);
}
let M = 2;
let counter = 0;
while (counter < n) {
M++;
for (let baseHeightWidth = 3; baseHeightWidth <= 2 * M; baseHeightWidth++) {
const pathLength = getLength(M, baseHeightWidth);
if (Number.isInteger(pathLength)) {
if (baseHeightWidth <= M) {
counter += Math.floor(baseHeightWidth / 2);
} else {
counter += 1 + M - Math.floor((baseHeightWidth + 1) / 2);
}
}
}
}
return M;
}
```