freeCodeCamp/curriculum/challenges/chinese/10-coding-interview-prep/project-euler/problem-300-protein-folding.md

34 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
id: 5900f49a1000cf542c50ffac
title: 问题300蛋白质折叠
challengeType: 5
videoUrl: ''
---
# --description--
以一种非常简化的形式我们可以将蛋白质视为由疏水H和极性P元素例如HHPPHHHPHHPH。
对于这个问题蛋白质的方向很重要。例如HPP被认为与PPH不同。因此存在2n个由n个元素组成的不同蛋白质。
当人们自然地遇到这些弦时它们总是以H-H接触点的数量尽可能多的方式折叠因为这在能量上是有利的。 结果H元素倾向于在内部积累而P元素在外部。 天然蛋白质当然会在三个维度上折叠,但我们只会考虑蛋白质在两个维度上的折叠。
下图显示了我们的示例蛋白质可以折叠的两种可能方式H-H接触点用红色圆点显示
左侧的折叠只有六个H-H接触点因此永远不会自然发生。 另一方面右侧的折叠具有9个H-H接触点这对于此琴弦是最佳的。
假设H和P元素同样可能出现在沿着字符串的任何位置那么长度为8的随机蛋白质字符串最优折叠中H-H接触点的平均数量为850/28 = 3.3203125。
在最佳折叠长度为15的随机蛋白质串中H-H接触点的平均数量是多少 要获得准确的结果,请使用尽可能多的小数位给出答案。
# --hints--
`euler300()`应该返回8.0540771484375。
```js
assert.strictEqual(euler300(), 8.0540771484375);
```
# --solutions--