Sto guardando fuori dalla finestra della mia soffitta nel cortile del mio vicino. Hanno un cane incatenato a un palo nel centro del cortile. Il cane corre intorno al cortile ma è sempre alla fine della sua catena, quindi finisce per lasciare una traccia nella terra. Normalmente questa pista sarebbe perfettamente circolare, ma i miei vicini hanno alcuni altri pali nel loro cortile su cui la catena del cane viene catturata. Ogni volta che la catena del cane colpisce un palo, il cane inizia a ruotare attorno al nuovo palo con la lunghezza della catena che rimane nel raggio. Poiché i poli, il cane e la catena hanno tutti una larghezza pari a zero (i miei vicini sono matematici), la catena può avvolgere indefinitamente un palo senza accorciare il raggio del cerchio. Il cane può anche passare attraverso la catena (ma non il colletto) se la catena è sul suo cammino. Dopo aver osservato questa stranezza per un po 'decido che scriverò un codice per simulare il cane del mio vicino. Il codice prenderà le posizioni di un palo centrale, a cui è incatenato il cane, le posizioni degli altri poli nel cortile dei miei vicini, la lunghezza della catena e la posizione iniziale del cane, e produrrà un diagramma che indica il percorso in cui il cane ha logorato l'erba. Si può presumere che qualsiasi combinazione di quanto segue sia costante (e quindi non considerarli come input):
Posizione del palo a cui è incatenato il cane
Lunghezza della catena
Posizione di partenza del cane
Il sole sta sorgendo, quindi lo spazio sul pavimento della mia soffitta illuminato dalla finestra si sta riducendo, dandomi sempre meno spazio per scrivere il mio codice. Prova a ridurre al minimo il numero di byte del tuo codice in modo che io abbia spazio per disegnarlo sul mio piano attico.
Casi test
Qui suppongo che il cane inizi 3 unità a sud dal cui polo è incatenato (il punto rosso), situato a 0,0
. Ho indicato dove sono i poli con punti per maggiore chiarezza, non è necessario includerli nell'output.
Poles at 1,2 -1,2
Poles at 0,.5
Poles at 0,1 1,1 -2,1 -1,-.5
Poles at 0,1 1,1
{0,.5}
capovolto verticalmente senza il cerchio più grande. Il cane inizia essenzialmente catturato sul secondo palo.
{0,-.5}
?