Feat: add new Markdown parser (#39800)
and change all the challenges to new `md` format.
This commit is contained in:
committed by
GitHub
parent
a07f84c8ec
commit
0bd52f8bd1
@ -5,43 +5,151 @@ challengeType: 5
|
||||
forumTopicId: 323652
|
||||
---
|
||||
|
||||
## Description
|
||||
# --description--
|
||||
|
||||
<section id='description'>
|
||||
The bounded knapsack problem is defined as follows:
|
||||
You are given an array of objects representing items to be put in a knapsack. The objects have 4 attributes: name, pieces (the number of the particular item), weight, and value. The items need to be selected so that the total weight does not exceed the maximum weight and the value is maximized. Keep in mind that each item can appear between 0 and <code>pieces</code> times.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
You are given an array of objects representing items to be put in a knapsack. The objects have 4 attributes: name, pieces (the number of the particular item), weight, and value. The items need to be selected so that the total weight does not exceed the maximum weight and the value is maximized. Keep in mind that each item can appear between 0 and `pieces` times.
|
||||
|
||||
# --instructions--
|
||||
|
||||
<section id='instructions'>
|
||||
Write a function to solve the knapsack problem. The function is given the array of objects and the maximum weight as parameters. It should return the maximum total value possible.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
# --hints--
|
||||
|
||||
<section id='tests'>
|
||||
`findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 300)` should return `755`.
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 300)</code> should return <code>755</code>.
|
||||
testString: assert.equal(findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 300), 755);
|
||||
- text: <code>findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 400)</code> should return <code>875</code>.
|
||||
testString: assert.equal(findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 400), 875);
|
||||
- text: <code>findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 500)</code> should return <code>1015</code>.
|
||||
testString: assert.equal(findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 500), 1015);
|
||||
- text: <code>findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 600)</code> should return <code>1120</code>.
|
||||
testString: assert.equal(findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 600), 1120);
|
||||
- text: <code>findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 700)</code> should return <code>1225</code>.
|
||||
testString: assert.equal(findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 700), 1225);
|
||||
```js
|
||||
assert.equal(
|
||||
findBestPack(
|
||||
[
|
||||
{ name: 'map', weight: 9, value: 150, pieces: 1 },
|
||||
{ name: 'compass', weight: 13, value: 35, pieces: 1 },
|
||||
{ name: 'water', weight: 153, value: 200, pieces: 2 },
|
||||
{ name: 'sandwich', weight: 50, value: 60, pieces: 2 },
|
||||
{ name: 'glucose', weight: 15, value: 60, pieces: 2 },
|
||||
{ name: 'tin', weight: 68, value: 45, pieces: 3 },
|
||||
{ name: 'banana', weight: 27, value: 60, pieces: 3 },
|
||||
{ name: 'apple', weight: 39, value: 40, pieces: 3 },
|
||||
{ name: 'cheese', weight: 23, value: 30, pieces: 1 },
|
||||
{ name: 'beer', weight: 52, value: 10, pieces: 3 },
|
||||
{ name: 'suntan, cream', weight: 11, value: 70, pieces: 1 },
|
||||
{ name: 'camera', weight: 32, value: 30, pieces: 1 },
|
||||
{ name: 'T-shirt', weight: 24, value: 15, pieces: 2 }
|
||||
],
|
||||
300
|
||||
),
|
||||
755
|
||||
);
|
||||
```
|
||||
|
||||
</section>
|
||||
`findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 400)` should return `875`.
|
||||
|
||||
## Challenge Seed
|
||||
```js
|
||||
assert.equal(
|
||||
findBestPack(
|
||||
[
|
||||
{ name: 'map', weight: 9, value: 150, pieces: 1 },
|
||||
{ name: 'compass', weight: 13, value: 35, pieces: 1 },
|
||||
{ name: 'water', weight: 153, value: 200, pieces: 2 },
|
||||
{ name: 'sandwich', weight: 50, value: 60, pieces: 2 },
|
||||
{ name: 'glucose', weight: 15, value: 60, pieces: 2 },
|
||||
{ name: 'tin', weight: 68, value: 45, pieces: 3 },
|
||||
{ name: 'banana', weight: 27, value: 60, pieces: 3 },
|
||||
{ name: 'apple', weight: 39, value: 40, pieces: 3 },
|
||||
{ name: 'cheese', weight: 23, value: 30, pieces: 1 },
|
||||
{ name: 'beer', weight: 52, value: 10, pieces: 3 },
|
||||
{ name: 'suntan, cream', weight: 11, value: 70, pieces: 1 },
|
||||
{ name: 'camera', weight: 32, value: 30, pieces: 1 },
|
||||
{ name: 'T-shirt', weight: 24, value: 15, pieces: 2 }
|
||||
],
|
||||
400
|
||||
),
|
||||
875
|
||||
);
|
||||
```
|
||||
|
||||
<section id='challengeSeed'>
|
||||
<div id='js-seed'>
|
||||
`findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 500)` should return `1015`.
|
||||
|
||||
```js
|
||||
assert.equal(
|
||||
findBestPack(
|
||||
[
|
||||
{ name: 'map', weight: 9, value: 150, pieces: 1 },
|
||||
{ name: 'compass', weight: 13, value: 35, pieces: 1 },
|
||||
{ name: 'water', weight: 153, value: 200, pieces: 2 },
|
||||
{ name: 'sandwich', weight: 50, value: 60, pieces: 2 },
|
||||
{ name: 'glucose', weight: 15, value: 60, pieces: 2 },
|
||||
{ name: 'tin', weight: 68, value: 45, pieces: 3 },
|
||||
{ name: 'banana', weight: 27, value: 60, pieces: 3 },
|
||||
{ name: 'apple', weight: 39, value: 40, pieces: 3 },
|
||||
{ name: 'cheese', weight: 23, value: 30, pieces: 1 },
|
||||
{ name: 'beer', weight: 52, value: 10, pieces: 3 },
|
||||
{ name: 'suntan, cream', weight: 11, value: 70, pieces: 1 },
|
||||
{ name: 'camera', weight: 32, value: 30, pieces: 1 },
|
||||
{ name: 'T-shirt', weight: 24, value: 15, pieces: 2 }
|
||||
],
|
||||
500
|
||||
),
|
||||
1015
|
||||
);
|
||||
```
|
||||
|
||||
`findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 600)` should return `1120`.
|
||||
|
||||
```js
|
||||
assert.equal(
|
||||
findBestPack(
|
||||
[
|
||||
{ name: 'map', weight: 9, value: 150, pieces: 1 },
|
||||
{ name: 'compass', weight: 13, value: 35, pieces: 1 },
|
||||
{ name: 'water', weight: 153, value: 200, pieces: 2 },
|
||||
{ name: 'sandwich', weight: 50, value: 60, pieces: 2 },
|
||||
{ name: 'glucose', weight: 15, value: 60, pieces: 2 },
|
||||
{ name: 'tin', weight: 68, value: 45, pieces: 3 },
|
||||
{ name: 'banana', weight: 27, value: 60, pieces: 3 },
|
||||
{ name: 'apple', weight: 39, value: 40, pieces: 3 },
|
||||
{ name: 'cheese', weight: 23, value: 30, pieces: 1 },
|
||||
{ name: 'beer', weight: 52, value: 10, pieces: 3 },
|
||||
{ name: 'suntan, cream', weight: 11, value: 70, pieces: 1 },
|
||||
{ name: 'camera', weight: 32, value: 30, pieces: 1 },
|
||||
{ name: 'T-shirt', weight: 24, value: 15, pieces: 2 }
|
||||
],
|
||||
600
|
||||
),
|
||||
1120
|
||||
);
|
||||
```
|
||||
|
||||
`findBestPack([{ name:'map', weight:9, value:150, pieces:1 }, { name:'compass', weight:13, value:35, pieces:1 }, { name:'water', weight:153, value:200, pieces:2 }, { name:'sandwich', weight:50, value:60, pieces:2 }, { name:'glucose', weight:15, value:60, pieces:2 }, { name:'tin', weight:68, value:45, pieces:3 }, { name:'banana', weight:27, value:60, pieces:3 }, { name:'apple', weight:39, value:40, pieces:3 }, { name:'cheese', weight:23, value:30, pieces:1 }, { name:'beer', weight:52, value:10, pieces:3 }, { name:'suntan, cream', weight:11, value:70, pieces:1 }, { name:'camera', weight:32, value:30, pieces:1 }, { name:'T-shirt', weight:24, value:15, pieces:2 }], 700)` should return `1225`.
|
||||
|
||||
```js
|
||||
assert.equal(
|
||||
findBestPack(
|
||||
[
|
||||
{ name: 'map', weight: 9, value: 150, pieces: 1 },
|
||||
{ name: 'compass', weight: 13, value: 35, pieces: 1 },
|
||||
{ name: 'water', weight: 153, value: 200, pieces: 2 },
|
||||
{ name: 'sandwich', weight: 50, value: 60, pieces: 2 },
|
||||
{ name: 'glucose', weight: 15, value: 60, pieces: 2 },
|
||||
{ name: 'tin', weight: 68, value: 45, pieces: 3 },
|
||||
{ name: 'banana', weight: 27, value: 60, pieces: 3 },
|
||||
{ name: 'apple', weight: 39, value: 40, pieces: 3 },
|
||||
{ name: 'cheese', weight: 23, value: 30, pieces: 1 },
|
||||
{ name: 'beer', weight: 52, value: 10, pieces: 3 },
|
||||
{ name: 'suntan, cream', weight: 11, value: 70, pieces: 1 },
|
||||
{ name: 'camera', weight: 32, value: 30, pieces: 1 },
|
||||
{ name: 'T-shirt', weight: 24, value: 15, pieces: 2 }
|
||||
],
|
||||
700
|
||||
),
|
||||
1225
|
||||
);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function findBestPack(data, maxweight) {
|
||||
@ -49,12 +157,7 @@ function findBestPack(data, maxweight) {
|
||||
}
|
||||
```
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
|
||||
<section id='solution'>
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function findBestPack(data, maxweight) {
|
||||
@ -106,5 +209,3 @@ function findBestPack(data, maxweight) {
|
||||
return val;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
Reference in New Issue
Block a user