Essendo un grande fan del cubo di Rubik e della bella arte, ho lavorato per combinare i due insieme per fare delle cose davvero fantastiche. Fondamentalmente risolvendo i cubi di Rubik in miniatura per formare pixel rudimentali nella formazione del cubo di Rubik. Esempi di tale arte possono essere visti tramite questo link: http://google.com/search?q=rubik%27s+cube+art
Ora, lo scopo di questo Code Golf è quello di creare un codice che accetti un'immagine come input e quindi la converta nel modo seguente:
L'immagine viene inizialmente ridotta a colori in scala di grigi sicuri per il Web. Il motivo è dovuto al fatto che dobbiamo isolare la tavolozza di scala di grigi sicura per il Web (ad esempio 000000, 333333, 666666, 999999, CCCCCC e FFFFFF). Un algoritmo sul metodo colorimetrico di conversione in scala di grigi è disponibile su: http://en.wikipedia.org/wiki/Grayscale#Colorimetric_.28luminance-preserving.29_conversion_to_grayscale , se desideri usarlo come ispirazione.
Uno quindi renderebbe la scala di grigi ai colori appropriati. Per scomporlo rapidamente: 000000 farà riferimento al blu di Rubik, 333333 farà riferimento al rosso di Rubik, 666666 farà riferimento al verde di Rubik, 999999 farà riferimento all'arancia di Rubik, CCCCCC farà riferimento al giallo di Rubik e FFFFFF farà riferimento al bianco di Rubik.
Preferirei che il codice risultante potesse essere riprodotto dalla tavolozza della foto direttamente ai colori di Rubik. Il metodo in due fasi dal passaggio alla scala di grigi sicura per il web e quindi alla corrispondente palette di Rubik è solo quello di darti un'idea della logica alla base del processo, ma se è più facile per te farlo, lo fai sicuramente.
I valori RGB effettivi per la tavolozza di Rubik devono corrispondere a quanto segue:
- Rosso: # C41E3A
- Verde: # 009E60
- Blu: # 0051BA
- Arancione: # FF5800
- Giallo: # FFD500
- Bianco: #FFFFFF
Per fare un esempio, ho ritagliato la testa di Abraham Lincoln dalla seguente immagine: e ho reso l'algoritmo per produrre quanto segue:
La griglia è lì in modo che tu possa vedere come ogni singolo cubo di Rubik in miniatura dovrebbe essere configurato per creare l'immagine. La dimensione reale dell'immagine risultante è 45 pixel per 45 pixel, il che significa che (45/3) * (45/3) = 15 * 15 = 225 cubi di Rubik in miniatura verrebbero utilizzati per creare questa immagine. Non mi aspetto che tu presenti l'immagine risultante con una griglia come ho fatto io.
Quindi questo è ciò che è richiesto:
L'immagine che deve essere elaborata da questo algoritmo deve avere una larghezza di x pixel per un'altezza di y pixel, in modo tale che xey siano multipli di 3. Questo serve per facilitare il rendering come parte del mosaico del cubo di Rubik. Se l'immagine è piuttosto grande, si consiglia di ridurla a qualcosa di circa 45 x 45 a 75 x 75 o di dimensioni approssimative prima dell'elaborazione. Tieni presente che questo componente di ridimensionamento è FACOLTATIVO.
L'immagine deve essere convertita nella tavolozza del cubo di Rubik sestacolata per creare il mosaico.
L'immagine risultante deve essere un file grafico valido dopo l'elaborazione. Per dimostrare che il tuo codice funziona, eseguilo contro un'immagine di uno dei presidenti degli Stati Uniti d'America o di una celebrità di Hollywood ben nota. Ho già usato Abraham Lincoln nel mio esempio, quindi questo presidente non può più essere usato. Assicurati di fornire la lingua che hai usato, il conteggio dei byte e il presidente / celebrità utilizzato per testare il tuo codice, compresi gli scatti prima e dopo ...
Ogni voce deve avere un unico presidente / celebrità come test case. Non accetterò duplicati. Ciò garantirà che i risultati duplicati non vengano utilizzati per testare diverse voci di codice. Va benissimo dire che il tuo codice funziona, è un'altra cosa per dimostrarlo.
5. Vince il codice più corto.
Sto cambiando questo in un concorso di popolarità ... Preferirei vedere chi può farlo senza dover competere sul conteggio dei byte ... Quindi assegnerò questo insieme a un premio dopo il 28 febbraio 2014.
#000000 => #0051BA
, ecc.