Scrivi un programma o una funzione che accetta i seguenti input in un formato ragionevole a tua scelta:
Due numeri interi positivi W e H che definiscono la larghezza e l'altezza dell'immagine che genererai.
Due colori RGB C1 e C2 che verranno utilizzati per colorare l'immagine.
Un elenco di 3 tuple della forma
(r, x, y)
che definiscono i cerchi con raggior
e centrox, y
nel piano dell'immagine.r
è un numero intero positivox
ey
sono numeri interi. Il pixel in alto a sinistra dell'immagine è0, 0
e l'asse x aumenta a destra e l'asse y aumenta verso il basso.
Stampa un'immagine con dimensioni W di H colorata con C1 e C2 in modo tale che nessuna delle due regioni vicine definite da tutti i cerchi sovrapposti abbiano lo stesso colore.
Ad esempio: se l'ingresso è
W = 300 H = 200 C1 = (255, 200, 0) C2 = (128, 0, 255) Circles = (25, 50, 80), (40, 80, 120), (300, -100, 6), (17, 253, 162)
quindi i confini del cerchio si presentano così:
Vi sono sei regioni distinte e contigue nell'immagine creata dai cerchi. Ogni regione deve essere colorata con C1 (giallo) o C2 (viola) in modo tale che non vi siano due regioni vicine dello stesso colore.
Ci sono due modi per farlo, la loro unica differenza è che i colori vengono scambiati:
Pertanto, una di queste due immagini sarebbe un output valido per l'input di esempio.
Qualcosa di simile a questo sarebbe uscita valido in quanto due regioni giallo vicino l'un l'altro.
Le immagini di output devono seguire queste linee guida:
Oltre a C1 e C2, un terzo colore neutro come il bianco o il nero può essere usato per i confini del cerchio purché non siano spessi più di 5 pixel. (Nell'esempio sopra sono presenti bordi neri spessi 1 pixel.)
I confini delle cerchie non sono richiesti, tuttavia. Le regioni possono confinarsi direttamente tra loro:
Entrambi questi sono un altro risultato valido nell'esempio sopra.
I cerchi dovrebbero essere il più precisi possibile, usando gli algoritmi di disegno del cerchio o qualsiasi altra cosa fornita dalla tua libreria grafica.
In generale, la perfezione dei pixel non è richiesta, ma se i parametri di input vengono ridimensionati in modo uguale sempre più grande, l'immagine risultante dovrebbe diventare sempre più accurata.
L'antialiasing è consentito ma non necessario.
Griglie o etichette degli assi ecc. In background non sono consentite.
Vince il codice più breve in byte.
Altri esempi
Tutti utilizzano questi input con diversi set di cerchi:
W = 100
H = 60
C1 = (255, 0, 0)
C2 = (0, 0, 255)
In qualsiasi esempio i colori possono essere scambiati e rimanere validi.
Circles =
A. empty list
B. (13, 16, 20)
C. (30, 16, 20)
D. (200, 16, 20)
E. (42, 50, 20)
F. (42, 50, 20), (17, 40, 30)
G. (42, 50, 20), (17, 20, 30)
H. (42, 50, 20), (17, 10, 30), (10, 50, 30)
I. (42, 50, 20), (17, 10, 30), (35, 50, 20)
J. (18, 36, 40), (18, 63, 40), (18, 50, 20)
K. (100, -10, -20), (60, 50, -10)
L. (18, 36, 40), (18, 63, 40), (18, 50, 20), (14, 50, 20), (5, 50, 18), (20, 0, 0), (70, 22, 0), (10000, -9970, 0), (135, 100, -80)
A.
B.
C.
D.
E.
F.
G.
H.
I.
J.
K.
L.
Assicurati che l'output si comporti in modo simile a tutti questi esempi.
tikz