Mentre scarabocchiavo su carta a quadretti l'altro giorno, ho trovato il carattere sopra lo spazio negativo per le cifre. Nel caso in cui non l'avessi ancora individuato, gli spazi tra le forme sopra riportate producono il rapporto aureo 1.618033988749 . In questa sfida, il tuo compito è prendere un numero come input e renderlo esattamente come mostrato nell'esempio sopra.
Ecco come vengono creati. Tutte le linee saranno su una griglia regolare, in modo che le singole cifre siano costituite da un piccolo numero di celle della griglia. Ecco le forme delle 10 cifre (ignoreremo il punto decimale per questa sfida):
Sì, il 7 differisce dall'esempio del rapporto aureo in alto. L'ho un po 'incasinato. Andremo con questo.
Si noti che ogni cifra è alta cinque celle e larga tre celle. Per rendere un numero, puoi immaginare di posizionare tutte le sue cifre una accanto all'altra, in modo che ci sia esattamente una colonna vuota tra ogni coppia di cifre. Ad esempio, prendendo 319
come input, scriveremmo:
Si noti che aggiungiamo una colonna vuota iniziale e finale. Ora invertiamo le celle:
L'output dovrebbe quindi essere i confini dei poligoni risultanti:
Naturalmente è possibile generare il risultato in qualsiasi altro modo, a condizione che l'output del rendering appaia lo stesso.
Ingresso
- È possibile scrivere un programma o una funzione, prendendo input tramite STDIN (o l'alternativa più vicina), argomento della riga di comando o argomento della funzione, come una stringa o un elenco di cifre. (Non puoi prendere un numero in quanto ciò non ti permetterebbe di supportare gli zeri iniziali.)
- Si può presumere che non ci saranno più 16 cifre nell'input.
Produzione
- L'output può essere visualizzato sullo schermo o scritto su un file in un formato immagine comune.
- È possibile utilizzare sia grafica raster che grafica vettoriale.
- In entrambi i casi, le proporzioni delle celle della griglia sottostante devono essere 1 (ovvero, le celle dovrebbero essere quadrate).
- Nel caso della grafica raster, ogni cella dovrebbe coprire almeno 20 per 20 pixel.
- Le linee non devono essere più larghe del 10% della dimensione della cella. Sono disposto a dare uno o due pixel di libertà a causa dell'aliasing qui.
- Le linee e lo sfondo possono essere due colori chiaramente distinguibili, ma le forme create dalle linee non devono essere riempite (ovvero gli interni dovrebbero essere anche il colore di sfondo).
- Non ci devono essere spazi vuoti all'interno di ogni circuito chiuso.
- Naturalmente, l'intero risultato deve essere visibile.
Casi test
Ecco 10 ingressi, che insieme coprono tutte le possibili coppie di cifre adiacenti, nonché ogni possibile cifra iniziale e finale:
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
Ed ecco i risultati attesi per quelli:
Assicurati che il tuo codice funzioni anche quando ti viene data una sola cifra (non voglio includere qui i risultati previsti, perché dovrebbero essere ovvi e la sezione del test case è abbastanza gonfia così com'è).