freeCodeCamp/curriculum/challenges/spanish/08-coding-interview-prep/project-euler/problem-165-intersections.s...

2.6 KiB
Raw Blame History

id challengeType title videoUrl localeTitle
5900f4111000cf542c50ff24 5 Problem 165: Intersections Problema 165: Intersecciones

Description

Un segmento está definido de forma única por sus dos puntos finales. Al considerar dos segmentos de línea en la geometría plana, hay tres posibilidades: los segmentos tienen cero puntos, un punto o infinitos puntos en común. Además, cuando dos segmentos tienen exactamente un punto en común, puede darse el caso de que ese punto común sea un punto final de uno de los segmentos o de ambos. Si un punto común de dos segmentos no es un punto final de cualquiera de los segmentos, es un punto interior de ambos segmentos. Llamaremos a un punto común T de dos segmentos L1 y L2 un verdadero punto de intersección de L1 y L2 si T es el único punto común de L1 y L2 y T es un punto interior de ambos segmentos.

Considere los tres segmentos L1, L2 y L3: L1: (27, 44) a (12, 32) L2: (46, 53) a (17, 62) L3: (46, 70) a (22, 40) Se puede verificar que los segmentos de línea L2 y L3 tienen un verdadero punto de intersección. Notamos que como uno de los puntos finales de L3: (22,40) se encuentra en L1, esto no se considera un verdadero punto de intersección. L1 y L2 no tienen un punto común. Entonces, entre los tres segmentos de línea, encontramos un verdadero punto de intersección. Ahora hagamos lo mismo para 5000 segmentos de línea. Para este fin, generamos 20000 números utilizando el llamado generador de números pseudoaleatorios llamado "Blum Blum Shub". s0 = 290797 sn + 1 = sn × sn (modulo 50515093) tn = sn (modulo 500) Para crear cada segmento de línea, usamos cuatro números consecutivos tn. Es decir, el primer segmento de línea viene dado por: (t1, t2) a (t3, t4) Los primeros cuatro números calculados de acuerdo con el generador anterior deberían ser: 27, 144, 12 y 232. El primer segmento sería así ( 27,144) a (12,232). ¿Cuántos puntos de intersección verdaderos distintos se encuentran entre los 5000 segmentos de línea?

Instructions

Tests

tests:
  - text: <code>euler165()</code> debe devolver 2868868.
    testString: 'assert.strictEqual(euler165(), 2868868, "<code>euler165()</code> should return 2868868.");'

Challenge Seed

function euler165() {
  // Good luck!
  return true;
}

euler165();

Solution

// solution required