Побудуємо функцію f (x) = sin (πx) + 0,5 sin (3πx) над областю [-3,3] . Ми можемо трактувати це як сипучу струну, що лежить на дошці. Тепер введемо n цвяхів у дошку в положеннях (x 1 , y 1 ) до (x n , y n ) , де x i ∈ (-3,3) і y i ∈ [-1,1] . Уявіть, що в кінці струни є два вушка, тобто в положеннях (-3,0) і (3,0). Тепер ми можемо взяти кінці струни і протягнути наскрізні вушка, поки струна не буде натягнутою. Це деформує наш графік на кусково-лінійну функцію.
Деякі фотографії можуть допомогти. Візьміть 8 цвяхів при (-2,8, -0,7), (-2,5, -0,9), (-1,2, .2), (-0,5, .8), (0,5, .4), (1,2, -0,9), (1,5, -0,6), (1,8, -0,8) . Наступні три сюжети показують описаний вище процес:
Для більшої версії: Клацніть правою кнопкою миші -> Відкрити в новій вкладці
Ось анімація затягування рядків, якщо у вас виникли труднощі із візуалізацією:
Змагання
Подаючи список "цвяхів" (які не обов'язково сортуються), побудуйте ці цвяхи та натягнутий рядок, якщо він починається з форми вищевказаної функції f .
Ви можете написати програму або функцію та взяти вхід через STDIN, ARGV або аргумент функції. Ви можете відображати результат на екрані або зберігати зображення у файлі.
Якщо результат розсіяний, він повинен бути не менше 300 пікселів у ширину та 100 пікселів у висоту. Діапазон координат від (-3, -1.1) до (3,1.1) повинен охоплювати щонайменше 75% горизонтальної та вертикальної протяжності зображення. Масштаби довжини x і y не повинні бути однаковими. Потрібно показати цвяхи (використовуючи принаймні 3х3 пікселі) та рядок (не менше 1 пікселя). Ви можете або не включати оси.
Кольори - це ваш вибір, але вам потрібно як мінімум два кольори, що відрізняються: один для фону і один для нігтів і рядок (хоча вони можуть мати різні кольори).
Ви можете припустити, що всі цвяхи розташовані як мінімум на 10 -5 одиниць від f (так що вам не потрібно турбуватися про неточність з плаваючою комою).
Це кодовий гольф, тому найкоротша відповідь (у байтах) виграє.
Більше прикладів
Ось ще два (простіші) приклади:
{{-2.5, 1}, {-1.5, -1}, {-0.5, 1}, {0.5, -1}, {1.5, 1}, {2.5, -1}}
(Рядок збігається з x -x.)
{{-2.7, -0.5}, {-2.3, -0.5}, {-1.7, 0.5}, {-1.3, 0.5}, {-0.7, -0.5}, {-0.3, -0.5}, {0.5, 1}, {1.5, -1}, {2.5, 1}}