fix(curriculum): make expected result format in instructions and tests match (#41760)
* fix: make expected result format in instructions and tests match * fix: grammar Co-authored-by: Tom <20648924+moT01@users.noreply.github.com> Co-authored-by: Tom <20648924+moT01@users.noreply.github.com>
This commit is contained in:
@ -14,42 +14,145 @@ The decimal number eleven can be written as `0*13 + 1*8 + 0*5 + 1*3 + 0*2 + 0*1`
|
|||||||
|
|
||||||
# --instructions--
|
# --instructions--
|
||||||
|
|
||||||
Write a function that generates and returns an array of the first `n` Zeckendorf numbers in order.
|
Write a function that generates and returns the Zeckendorf number representation of `n`.
|
||||||
|
|
||||||
# --hints--
|
# --hints--
|
||||||
|
|
||||||
zeckendorf should be function.
|
`zeckendorf` should be a function.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.equal(typeof zeckendorf, 'function');
|
assert.equal(typeof zeckendorf, 'function');
|
||||||
```
|
```
|
||||||
|
|
||||||
Your `zeckendorf` function should return the correct answer.
|
`zeckendorf(0)` should return `0`.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
assert.deepEqual(answer, solution20);
|
assert.equal(zeckendorf(0), 0);
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(1)` should return `1`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(1), 1);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(2)` should return `10`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(2), 10);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(3)` should return `100`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(3), 100);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(4)` should return `101`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(4), 101);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(5)` should return `1000`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(5), 1000);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(6)` should return `1001`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(6), 1001);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(7)` should return `1010`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(7), 1010);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(8)` should return `10000`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(8), 10000);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(9)` should return `10001`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(9), 10001);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(10)` should return `10010`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(10), 10010);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(11)` should return `10100`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(11), 10100);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(12)` should return `10101`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(12), 10101);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(13)` should return `100000`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(13), 100000);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(14)` should return `100001`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(14), 100001);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(15)` should return `100010`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(15), 100010);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(16)` should return `100100`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(16), 100100);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(17)` should return `100101`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(17), 100101);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(18)` should return `101000`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(18), 101000);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(19)` should return `101001`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(19), 101001);
|
||||||
|
```
|
||||||
|
|
||||||
|
`zeckendorf(20)` should return `101010`.
|
||||||
|
|
||||||
|
```js
|
||||||
|
assert.equal(zeckendorf(20), 101010);
|
||||||
```
|
```
|
||||||
|
|
||||||
# --seed--
|
# --seed--
|
||||||
|
|
||||||
## --after-user-code--
|
|
||||||
|
|
||||||
```js
|
|
||||||
const range = (m, n) => (
|
|
||||||
Array.from({
|
|
||||||
length: Math.floor(n - m) + 1
|
|
||||||
}, (_, i) => m + i)
|
|
||||||
);
|
|
||||||
|
|
||||||
const solution20 = [
|
|
||||||
'1', '10', '100', '101', '1000', '1001', '1010', '10000', '10001',
|
|
||||||
'10010', '10100', '10101', '100000', '100001', '100010', '100100', '100101',
|
|
||||||
'101000', '101001', '101010'
|
|
||||||
];
|
|
||||||
|
|
||||||
const answer = range(1, 20).map(zeckendorf);
|
|
||||||
```
|
|
||||||
|
|
||||||
## --seed-contents--
|
## --seed-contents--
|
||||||
|
|
||||||
```js
|
```js
|
||||||
@ -61,13 +164,13 @@ function zeckendorf(n) {
|
|||||||
# --solutions--
|
# --solutions--
|
||||||
|
|
||||||
```js
|
```js
|
||||||
// zeckendorf :: Int -> String
|
// zeckendorf :: Int -> Int
|
||||||
function zeckendorf(n) {
|
function zeckendorf(n) {
|
||||||
const f = (m, x) => (m < x ? [m, 0] : [m - x, 1]);
|
const f = (m, x) => (m < x ? [m, 0] : [m - x, 1]);
|
||||||
return (n === 0 ? ([0]) :
|
return parseInt((n === 0 ? ([0]) :
|
||||||
mapAccumL(f, n, reverse(
|
mapAccumL(f, n, reverse(
|
||||||
tail(fibUntil(n))
|
tail(fibUntil(n))
|
||||||
))[1]).join('');
|
))[1]).join(''));
|
||||||
}
|
}
|
||||||
|
|
||||||
// fibUntil :: Int -> [Int]
|
// fibUntil :: Int -> [Int]
|
||||||
|
Reference in New Issue
Block a user