freeCodeCamp/curriculum/challenges/russian/08-coding-interview-prep/project-euler/problem-300-protein-folding...

58 lines
3.3 KiB
Markdown
Raw Normal View History

---
id: 5900f49a1000cf542c50ffac
challengeType: 5
title: 'Problem 300: Protein folding'
forumTopicId: 301954
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> should return 8.0540771484375.
testString: assert.strictEqual(euler300(), 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>