56 lines
3.4 KiB
Markdown
56 lines
3.4 KiB
Markdown
|
---
|
|||
|
id: 5900f49a1000cf542c50ffac
|
|||
|
challengeType: 5
|
|||
|
title: 'Problem 300: Protein folding'
|
|||
|
videoUrl: ''
|
|||
|
localeTitle: 'Проблема 300: Складывание белка'
|
|||
|
---
|
|||
|
|
|||
|
## Description
|
|||
|
<section id="description"> В очень упрощенной форме мы можем рассматривать белки как строки, состоящие из гидрофобных (H) и полярных (P) элементов, например HHPPHHHPHHPH. Для этой проблемы важна ориентация белка; например, ГЭС считается отличной от PPH. Таким образом, существует 2n различных белков, состоящих из n элементов. <p> Когда вы сталкиваетесь с этими строками в природе, они всегда складываются таким образом, что число точек контакта HH максимально велико, так как это энергетически выгодно. В результате Н-элементы, как правило, накапливаются во внутренней части, причем Р-элементы снаружи. Естественные белки, конечно, сложены в трех измерениях, но мы будем рассматривать только складку белка в двух измерениях. </p><p> На следующем рисунке показаны два возможных способа сгибания нашего примера белка (точки контакта HH показаны красными точками). </p><p> Складывание слева имеет только шесть контактных точек HH, поэтому оно никогда не будет происходить естественным образом. С другой стороны, складка справа имеет девять точек контакта HH, что является оптимальным для этой строки. </p><p> Предполагая, что элементы H и P одинаково вероятны в любой позиции вдоль строки, среднее число точек контакта HH в оптимальном сгибании случайной белковой строки длиной 8 оказывается равным 850/28 = 3,3203125. </p><p> Каково среднее число контактных точек HH в оптимальном складывании случайной белковой строки длиной 15? Дайте свой ответ, используя столько знаков после запятой, сколько необходимо для точного результата. </p></section>
|
|||
|
|
|||
|
## Instructions
|
|||
|
<section id="instructions">
|
|||
|
</section>
|
|||
|
|
|||
|
## Tests
|
|||
|
<section id='tests'>
|
|||
|
|
|||
|
```yml
|
|||
|
tests:
|
|||
|
- text: <code>euler300()</code> должен вернуться 8.0540771484375.
|
|||
|
testString: 'assert.strictEqual(euler300(), 8.0540771484375, "<code>euler300()</code> should return 8.0540771484375.");'
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
## Challenge Seed
|
|||
|
<section id='challengeSeed'>
|
|||
|
|
|||
|
<div id='js-seed'>
|
|||
|
|
|||
|
```js
|
|||
|
function euler300() {
|
|||
|
// Good luck!
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
euler300();
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
</div>
|
|||
|
|
|||
|
|
|||
|
|
|||
|
</section>
|
|||
|
|
|||
|
## Solution
|
|||
|
<section id='solution'>
|
|||
|
|
|||
|
```js
|
|||
|
// solution required
|
|||
|
```
|
|||
|
</section>
|