Dato solo una riga e una bussola, iscrivi un rombo all'interno del rettangolo dato, condividendo due punti opposti.
Ingresso
L'input è le dimensioni del rettangolo. Nell'esempio mostrato, sarebbe 125, 50
. Puoi prendere l'input nel modo più conveniente (come due numeri interi, elenco, stringhe, ecc.).
La dimensione più grande sarà di almeno 100, mentre la più piccola sarà di 25 minimo. Entrambi i cappellini a 200.
Produzione
L'output sarà un'immagine (visualizzata sullo schermo o salvata come file) che mostra
- Il rettangolo di input
- Tutte le linee / cerchi "funzionanti"
- Il rombo inscritto
in colori distinti. Nell'immagine sopra, Il rettangolo è nero, le linee di lavoro blu e il rombo arancione. Le linee devono essere tracciate nell'ordine mostrato nell'elenco (ad es. Rombo sovrascrive le linee di lavoro e il rettangolo).
L'immagine di output deve essere abbastanza grande da contenere tutto. Ad esempio, i cerchi mostrati non possono andare oltre i limiti.
Metodo
Il metodo utilizzato nell'immagine di esempio sopra è:
- Disegna un cerchio usando l'angolo inferiore sinistro come centro e quello superiore destro come punto sul perimetro, dando un raggio uguale alla diagonale del rettangolo.
- Fai lo stesso, ma scambiando i punti centrale e perimetrale.
- Traccia una linea tra le intersezioni dei due cerchi, dando una bisettrice perpendicolare alla diagonale del rettangolo.
- Usa le intersezioni della nuova linea e rettangolo per disegnare il rombo.
Questo funziona perché le diagonali interne di un rombo si dividono sempre perpendicolarmente. Non sto includendo una prova completa di questo qui, però.
Questo non è l' unico metodo per ottenere il tuo rombo, e puoi usarne un altro, dato che spieghi cosa stai facendo. Io credo che sia probabilmente il più facile, però.
Regole
Puoi disegnare solo cerchi e linee (o meglio, segmenti di linea). Un cerchio è definito con un punto centrale e un punto perimetrale. Una linea è definita da due punti qualsiasi. Le linee non devono avere una lunghezza specifica, ma devono almeno coprire i punti di definizione (notare l'immagine di esempio: la linea passa un po 'oltre le intersezioni del cerchio, ma non al bordo). Per i cerchi, il raggio dal centro al punto perimetrale scelto è considerato una linea di lavoro e deve essere mostrato.
Per rasterizzare le linee, puoi usare qualsiasi algoritmo riconosciuto (ad es. Quello di Bresenham), oppure fare affidamento su qualunque builtin potrebbe avere la tua lingua. Se il tuo output è basato su vettori, assicurati che sia mostrato con una risoluzione almeno grande quanto il rettangolo di input in pixel. Inoltre, disegnerai su una tela semplice, quindi sopprimere eventuali segni di griglia o output estraneo.
Non imbrogliare! Puoi solo determinare il posizionamento di punti / linee / cerchi usando ciò che hai stabilito finora. Se non riesci a spiegare come usare le linee / i cerchi di lavoro per mostrare che è un rombo, stai sbagliando.
Puoi utilizzare qualsiasi coppia di punti opposti che desideri e il rettangolo non deve essere disegnato allineato sull'asse, purché l'output sia corretto.
L'input sarà sempre un rettangolo non quadrato, quindi non preoccuparti di un involucro speciale.
Infine, questo è il codice golf standard, quindi vince la dimensione più bassa in byte.