3.6 KiB
id | challengeType | title | videoUrl | localeTitle |
---|---|---|---|---|
5900f4111000cf542c50ff24 | 5 | Problem 165: Intersections | Задача 165: Пересечения |
Description
Рассмотрим три сегмента L1, L2 и L3: L1: (27, 44) - (12, 32) L2: (46, 53) - (17, 62) L3: (46, 70) - (22, 40) Можно проверить, что сегменты линии L2 и L3 имеют истинную точку пересечения. Заметим, что, поскольку одна из конечных точек L3: (22,40) лежит на L1, это не считается истинной точкой пересечения. L1 и L2 не имеют общей точки. Таким образом, среди трех сегментов линии мы находим одну истинную точку пересечения. Теперь сделаем то же самое для 5000 сегментов линии. С этой целью мы генерируем 20000 номеров, используя так называемый генератор псевдослучайных чисел Blum Blum Shub. s0 = 290797 sn + 1 = sn × sn (по модулю 50515093) tn = sn (по модулю 500). Чтобы создать каждый сегмент линии, мы используем четыре последовательных числа tn. То есть первый сегмент линии задается следующим образом: (t1, t2) - (t3, t4) Первые четыре числа, вычисленные в соответствии с указанным выше генератором, должны быть: 27, 144, 12 и 232. Таким образом, первый сегмент будет ( 27, 144) - (12 232). Сколько четких точек пересечения найдено среди 5000 сегментов линии?
Instructions
Tests
tests:
- text: <code>euler165()</code> должен возвращать 2868868.
testString: 'assert.strictEqual(euler165(), 2868868, "<code>euler165()</code> should return 2868868.");'
Challenge Seed
function euler165() {
// Good luck!
return true;
}
euler165();
Solution
// solution required