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

56 lines
4.1 KiB
Markdown
Raw Normal View History

---
2018-10-10 20:20:40 +00:00
id: 5900f4cd1000cf542c50ffdf
challengeType: 5
title: 'Problem 352: Blood tests'
2018-10-10 20:20:40 +00:00
videoUrl: ''
localeTitle: 'Problema 352: Exámenes de sangre'
---
## Description
2018-10-10 20:20:40 +00:00
<section id="description"> Cada una de las 25 ovejas en un rebaño debe ser examinada para detectar un virus raro, que se sabe que afecta al 2% de la población de ovejas. Existe una prueba de PCR precisa y extremadamente sensible para las muestras de sangre, que produce un resultado positivo / negativo claro, pero es muy costoso y requiere mucho tiempo. <p> Debido al alto costo, el veterinario a cargo sugiere que en lugar de realizar 25 pruebas separadas, se puede usar el siguiente procedimiento: Las ovejas se dividen en 5 grupos de 5 ovejas en cada grupo. Para cada grupo, las 5 muestras se mezclan y se realiza una única prueba. Luego, si el resultado es negativo, todas las ovejas de ese grupo se consideran libres de virus. Si el resultado es positivo, se realizarán 5 pruebas adicionales (una prueba por separado para cada animal) para determinar la (s) persona (s) afectada (s). </p><p> Dado que la probabilidad de infección para un animal específico es solo de 0.02, la primera prueba (en las muestras agrupadas) para cada grupo será: Negativa (y no se necesitan más pruebas) con una probabilidad de 0.985 = 0.9039207968. Positivo (se necesitan 5 pruebas adicionales) con probabilidad 1 - 0.9039207968 = 0.0960792032. </p><p> Por lo tanto, el número esperado de pruebas para cada grupo es 1 + 0.0960792032 × 5 = 1.480396016. En consecuencia, los 5 grupos pueden evaluarse utilizando un promedio de solo 1.480396016 × 5 = 7.40198008 pruebas, lo que representa un gran ahorro de más del 70%. </p><p> Aunque el esquema que acabamos de describir parece ser muy eficiente, aún puede mejorarse considerablemente (siempre suponiendo que la prueba sea lo suficientemente sensible y que no haya efectos adversos causados por la mezcla de diferentes muestras). Por ejemplo: podemos comenzar realizando una prueba en una mezcla de las 25 muestras. Se puede verificar que en aproximadamente el 60,35% de los casos esta prueba será negativa, por lo que no se necesitarán más pruebas. Solo se requerirán pruebas adicionales para el 39,65% restante de los casos. Si sabemos que al menos un animal en un grupo de 5 está infectado y las primeras 4 pruebas individuales resultan negativas, no hay necesidad de realizar una prueba en el quinto animal (sabemos que debe estar infectado). Podemos probar un número diferente de grupos / número diferente de animales en cada grupo, ajustando esos números en cada nivel para que el número total esperado de pruebas se minimice. </p><p> Para simplificar el amplio rango de posibilidades, hay una restricción que imponemos al diseñar el esquema de prueba más rentable: cada vez que comenzamos con una muestra mixta, todas las ovejas que contribuyen a esa muestra deben ser examinadas completamente (es decir, un veredicto de infección). / Sin virus debe alcanzarse para todos ellos) antes de comenzar a examinar cualquier otro animal. </p><p> Para el ejemplo actual, resulta que el esquema de prueba más rentable (lo llamaremos la estrategia óptima) requiere un promedio de solo 4.155452 pruebas. </p><p> Usando la estrategia óptima, permita que T (s, p) represente el número promedio de pruebas necesarias para detectar un rebaño de ovejas en busca de un virus con probabilidad p de estar presente en cualquier individuo. Así, redondeado a seis lugares decimales, T (25, 0.02) = 4.155452 y T (25, 0.10) = 12.702124. </p><p> Encuentre ΣT (10000, p) para p = 0.01, 0.02, 0.03, ... 0.50. Da tu respuesta redondeada a seis decimales. </p></section>
## Instructions
2018-10-10 20:20:40 +00:00
<section id="instructions">
</section>
## Tests
<section id='tests'>
```yml
tests:
- text: <code>euler352()</code> debe devolver 378563.260589.
testString: 'assert.strictEqual(euler352(), 378563.260589, "<code>euler352()</code> should return 378563.260589.");'
```
</section>
## Challenge Seed
<section id='challengeSeed'>
<div id='js-seed'>
```js
function euler352() {
// Good luck!
return true;
}
euler352();
2018-10-10 20:20:40 +00:00
```
</div>
</section>
## Solution
<section id='solution'>
```js
// solution required
```
</section>