freeCodeCamp/curriculum/challenges/russian/08-coding-interview-prep/project-euler/problem-352-blood-tests.rus...

58 lines
6.5 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: 5900f4cd1000cf542c50ffdf
challengeType: 5
title: 'Problem 352: Blood tests'
forumTopicId: 302012
localeTitle: 'Задача 352: Анализы крови'
---
## Description
<section id='description'>
Каждый из 25 овец в стаде должен быть проверен на наличие редкого вируса, который, как известно, влияет на 2% овец. Для образцов крови существует точный и чрезвычайно чувствительный тест ПЦР, который дает четкий положительный / отрицательный результат, но он очень трудоемкий и дорогостоящий. <p> Из-за высокой стоимости, vet-in-charge предполагает, что вместо выполнения 25 отдельных тестов можно использовать следующую процедуру: овцы разделяются на 5 групп по 5 овец в каждой группе. Для каждой группы 5 образцов смешивают вместе и проводят один тест. Затем, если результат отрицательный, все овечки в этой группе считаются безвирусными. Если результат положительный, будет проведено 5 дополнительных тестов (отдельный тест для каждого животного), чтобы определить пострадавшего человека (лиц). </p><p> Так как вероятность заражения для любого конкретного животного составляет всего 0,02, первый тест (по объединенным образцам) для каждой группы будет: Отрицательный (и больше не требуется тестов) с вероятностью 0,985 = 0,9039207968. Положительный (требуется 5 дополнительных тестов) с вероятностью 1 - 0.9039207968 = 0,0960792032. </p><p> Таким образом, ожидаемое количество тестов для каждой группы составляет 1 + 0.0960792032 × 5 = 1.480396016. Следовательно, все 5 групп могут быть экранированы с использованием в среднем только 1,480396016 × 5 = 7,40198008 тестов, что представляет собой огромную экономию более 70%! </p><p> Хотя схема, которую мы только что описали, кажется очень эффективной, ее все же можно значительно улучшить (всегда полагая, что тест достаточно чувствителен и что нет никаких побочных эффектов, вызванных смешиванием разных образцов). Например: мы можем начать с теста на смесь из всех 25 образцов. Можно проверить, что примерно в 60,35% случаев этот тест будет отрицательным, поэтому больше не потребуется никаких тестов. Дальнейшие испытания потребуются только для остальных 39,65% случаев. Если мы знаем, что по крайней мере одно животное в группе из 5 инфицировано, и первые 4 индивидуальных теста оказываются отрицательными, нет необходимости проводить тест на пятом животном (мы знаем, что он должен быть инфицирован). Мы можем попробовать различное количество групп / различное количество животных в каждой группе, регулируя эти числа на каждом уровне, чтобы общее ожидаемое количество тестов было сведено к минимуму. </p><p> Чтобы упростить очень широкий диапазон возможностей, мы устанавливаем одно ограничение при разработке самой эффективной с точки зрения затрат схемы тестирования: всякий раз, когда мы начинаем со смешанной выборки, все овцы, способствующие этому образцу, должны быть полностью экранированы (т. Е. Вердикт инфицированных / без вируса должны быть достигнуты для всех), прежде чем мы начнем изучение любых других животных. </p><p> В текущем примере выясняется, что самая экономичная схема тестирования (мы будем называть ее оптимальной стратегией) требует в среднем всего лишь 4.155452 тестов! </p><p> Используя оптимальную стратегию, пусть T (s, p) представляет среднее число тестов, необходимых для скрининга стаи овец для вируса с вероятностью p, присутствующей у любого человека. Таким образом, округленные до шести знаков после запятой, T (25, 0,02) = 4,155452 и T (25, 0,10) = 12,702124. </p><p> Найти ΣT (10000, p) для p = 0,01, 0,02, 0,03, ... 0,50. Дайте ваш ответ округленным до шести знаков после запятой. </p>
</section>
## Instructions
<section id='instructions'>
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>euler352()</code> should return 378563.260589.
testString: assert.strictEqual(euler352(), 378563.260589);
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function euler352() {
// Good luck!
return true;
}
euler352();
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>