Tracciamo una funzione f (x) = sin (πx) + 0,5 sin (3πx) sul dominio [-3,3] . Possiamo interpretarlo come una corda sciolta che giace su una tavola. Ora guidiamo n chiodi nella scacchiera nelle posizioni (x 1 , y 1 ) a (x n , y n ) , dove x i ∈ (-3,3) e y i ∈ [-1,1] . Immagina che ci siano due occhielli all'estremità della corda, cioè nelle posizioni (-3,0) e (3,0). Ora possiamo prendere le estremità della corda e tirare attraverso gli occhielli fino a quando la corda è tesa. Ciò deformerà il nostro grafico in una funzione lineare a tratti.
Alcune immagini potrebbero aiutare. Prendi 8 chiodi a (-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) . I seguenti tre grafici mostrano il processo sopra descritto:
Per versioni più grandi: fare clic con il pulsante destro del mouse -> Apri in una nuova scheda
Ed ecco un'animazione del serraggio della stringa se hai qualche difficoltà a visualizzarla:
La sfida
Dato un elenco di "chiodi" (che non è necessariamente ordinato), traccia quei chiodi e la stringa tesa se inizia dalla forma della funzione sopra f .
È possibile scrivere un programma o una funzione e accettare input tramite STDIN, ARGV o argomento della funzione. È possibile visualizzare il risultato sullo schermo o salvare un'immagine in un file.
Se il risultato è rasterizzato, deve essere largo almeno 300 pixel e alto 100 pixel. L'intervallo di coordinate da (-3, -1,1) a (3,1,1) deve coprire almeno il 75% dell'estensione orizzontale e verticale dell'immagine. Le scale di lunghezza di x ed y non devono essere uguali. Devi mostrare i chiodi (usando almeno 3x3 pixel) e la stringa (almeno 1 pixel di larghezza). È possibile includere o meno gli assi.
I colori sono la tua scelta, ma hai bisogno di almeno due colori distinguibili: uno per lo sfondo e uno per le unghie e il filo (quelli possono avere colori diversi).
Puoi presumere che tutte le unghie siano almeno 10 -5 unità da f (quindi non devi preoccuparti di imprecisioni in virgola mobile).
Questo è il golf del codice, quindi vince la risposta più breve (in byte).
Altri esempi
Ecco altri due esempi (più semplici):
{{-2.5, 1}, {-1.5, -1}, {-0.5, 1}, {0.5, -1}, {1.5, 1}, {2.5, -1}}
(La stringa coincide con l' asse 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}}