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,131 @@ challengeType: 5
|
||||
forumTopicId: 323654
|
||||
---
|
||||
|
||||
## Description
|
||||
# --description--
|
||||
|
||||
<section id='description'>
|
||||
A thief burgles a butcher's shop, where he can select from some items.
|
||||
|
||||
The thief knows the weights and prices of each items. Because he has a knapsack with a limit on the maximum weight that it can carry, he wants to select the items such that he would have his profit maximized. He may cut the items; the item has a reduced price after cutting that is proportional to the original price by the ratio of masses. That means: half of an item has half the price of the original.
|
||||
</section>
|
||||
|
||||
## Instructions
|
||||
# --instructions--
|
||||
|
||||
<section id='instructions'>
|
||||
Write a function that takes an array of objects representing the items available in the shop. Each object has 3 attributes: name, weight, and value. The function also takes the maximum weight as a parameter. The function should return the maximum value possible, and the total weight of the selected items should not exceed the maximum weight.
|
||||
</section>
|
||||
|
||||
## Tests
|
||||
# --hints--
|
||||
|
||||
<section id='tests'>
|
||||
`knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 10)` should return `257.875`.
|
||||
|
||||
```yml
|
||||
tests:
|
||||
- text: <code>knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 10)</code> should return <code>257.875</code>.
|
||||
testString: assert.equal(knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 10), 257.875);
|
||||
- text: <code>knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 12)</code> should return <code>295.05405405405406</code>.
|
||||
testString: assert.equal(knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 12), 295.05405405405406);
|
||||
- text: <code>knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 15)</code> should return <code>349.3783783783784</code>.
|
||||
testString: assert.equal(knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 15), 349.3783783783784);
|
||||
- text: <code>knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 22)</code> should return <code>459.5263157894737</code>.
|
||||
testString: assert.equal(knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 22), 459.5263157894737);
|
||||
- text: <code>knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 24)</code> should return <code>478.4736842105263</code>.
|
||||
testString: assert.equal(knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 24), 478.4736842105263);
|
||||
```js
|
||||
assert.equal(
|
||||
knapContinuous(
|
||||
[
|
||||
{ weight: 3.8, value: 36, name: 'beef' },
|
||||
{ weight: 5.4, value: 43, name: 'pork' },
|
||||
{ weight: 3.6, value: 90, name: 'ham' },
|
||||
{ weight: 2.4, value: 45, name: 'greaves' },
|
||||
{ weight: 4.0, value: 30, name: 'flitch' },
|
||||
{ weight: 2.5, value: 56, name: 'brawn' },
|
||||
{ weight: 3.7, value: 67, name: 'welt' },
|
||||
{ weight: 3.0, value: 95, name: 'salami' },
|
||||
{ weight: 5.9, value: 98, name: 'sausage' }
|
||||
],
|
||||
10
|
||||
),
|
||||
257.875
|
||||
);
|
||||
```
|
||||
|
||||
</section>
|
||||
`knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 12)` should return `295.05405405405406`.
|
||||
|
||||
## Challenge Seed
|
||||
```js
|
||||
assert.equal(
|
||||
knapContinuous(
|
||||
[
|
||||
{ weight: 3.8, value: 36, name: 'beef' },
|
||||
{ weight: 5.4, value: 43, name: 'pork' },
|
||||
{ weight: 3.6, value: 90, name: 'ham' },
|
||||
{ weight: 2.4, value: 45, name: 'greaves' },
|
||||
{ weight: 4.0, value: 30, name: 'flitch' },
|
||||
{ weight: 2.5, value: 56, name: 'brawn' },
|
||||
{ weight: 3.7, value: 67, name: 'welt' },
|
||||
{ weight: 3.0, value: 95, name: 'salami' },
|
||||
{ weight: 5.9, value: 98, name: 'sausage' }
|
||||
],
|
||||
12
|
||||
),
|
||||
295.05405405405406
|
||||
);
|
||||
```
|
||||
|
||||
<section id='challengeSeed'>
|
||||
<div id='js-seed'>
|
||||
`knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 15)` should return `349.3783783783784`.
|
||||
|
||||
```js
|
||||
assert.equal(
|
||||
knapContinuous(
|
||||
[
|
||||
{ weight: 3.8, value: 36, name: 'beef' },
|
||||
{ weight: 5.4, value: 43, name: 'pork' },
|
||||
{ weight: 3.6, value: 90, name: 'ham' },
|
||||
{ weight: 2.4, value: 45, name: 'greaves' },
|
||||
{ weight: 4.0, value: 30, name: 'flitch' },
|
||||
{ weight: 2.5, value: 56, name: 'brawn' },
|
||||
{ weight: 3.7, value: 67, name: 'welt' },
|
||||
{ weight: 3.0, value: 95, name: 'salami' },
|
||||
{ weight: 5.9, value: 98, name: 'sausage' }
|
||||
],
|
||||
15
|
||||
),
|
||||
349.3783783783784
|
||||
);
|
||||
```
|
||||
|
||||
`knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 22)` should return `459.5263157894737`.
|
||||
|
||||
```js
|
||||
assert.equal(
|
||||
knapContinuous(
|
||||
[
|
||||
{ weight: 3.8, value: 36, name: 'beef' },
|
||||
{ weight: 5.4, value: 43, name: 'pork' },
|
||||
{ weight: 3.6, value: 90, name: 'ham' },
|
||||
{ weight: 2.4, value: 45, name: 'greaves' },
|
||||
{ weight: 4.0, value: 30, name: 'flitch' },
|
||||
{ weight: 2.5, value: 56, name: 'brawn' },
|
||||
{ weight: 3.7, value: 67, name: 'welt' },
|
||||
{ weight: 3.0, value: 95, name: 'salami' },
|
||||
{ weight: 5.9, value: 98, name: 'sausage' }
|
||||
],
|
||||
22
|
||||
),
|
||||
459.5263157894737
|
||||
);
|
||||
```
|
||||
|
||||
`knapContinuous([{ "weight":3.8, "value":36, name:"beef" }, { "weight":5.4, "value":43, name:"pork" }, { "weight":3.6, "value":90, name:"ham" }, { "weight":2.4, "value":45, name:"greaves" }, { "weight":4.0, "value":30, name:"flitch" }, { "weight":2.5, "value":56, name:"brawn" }, { "weight":3.7, "value":67, name:"welt" }, { "weight":3.0, "value":95, name:"salami" }, { "weight":5.9, "value":98, name:"sausage" }], 24)` should return `478.4736842105263`.
|
||||
|
||||
```js
|
||||
assert.equal(
|
||||
knapContinuous(
|
||||
[
|
||||
{ weight: 3.8, value: 36, name: 'beef' },
|
||||
{ weight: 5.4, value: 43, name: 'pork' },
|
||||
{ weight: 3.6, value: 90, name: 'ham' },
|
||||
{ weight: 2.4, value: 45, name: 'greaves' },
|
||||
{ weight: 4.0, value: 30, name: 'flitch' },
|
||||
{ weight: 2.5, value: 56, name: 'brawn' },
|
||||
{ weight: 3.7, value: 67, name: 'welt' },
|
||||
{ weight: 3.0, value: 95, name: 'salami' },
|
||||
{ weight: 5.9, value: 98, name: 'sausage' }
|
||||
],
|
||||
24
|
||||
),
|
||||
478.4736842105263
|
||||
);
|
||||
```
|
||||
|
||||
# --seed--
|
||||
|
||||
## --seed-contents--
|
||||
|
||||
```js
|
||||
function knapContinuous(items, maxweight) {
|
||||
@ -49,12 +137,7 @@ function knapContinuous(items, maxweight) {
|
||||
}
|
||||
```
|
||||
|
||||
</div>
|
||||
</section>
|
||||
|
||||
## Solution
|
||||
|
||||
<section id='solution'>
|
||||
# --solutions--
|
||||
|
||||
```js
|
||||
function knapContinuous(items, maxweight) {
|
||||
@ -83,5 +166,3 @@ function knapContinuous(items, maxweight) {
|
||||
return val;
|
||||
}
|
||||
```
|
||||
|
||||
</section>
|
||||
|
Reference in New Issue
Block a user