Siendo un gran admirador del cubo de Rubik y del arte genial, he estado trabajando en combinar los dos para hacer algunas cosas realmente geniales. Básicamente resolviendo cubos de Rubik en miniatura para formar píxeles rudimentarios en la formación del arte del cubo de Rubik. Se pueden ver ejemplos de este tipo de arte a través de este enlace: http://google.com/search?q=rubik%27s+cube+art
Ahora, el propósito de este Code Golf es crear código que acepte una imagen como entrada y luego la convierta de la siguiente manera:
La imagen se reduce inicialmente a colores de escala de grises seguros para la web. La razón detrás de esto es porque necesitamos aislar la paleta de escala de grises segura para la web (es decir, 000000, 333333, 666666, 999999, CCCCCC y FFFFFF). Un algoritmo sobre el método colorimétrico de conversión a escala de grises está disponible en: http://en.wikipedia.org/wiki/Grayscale#Colorimetric_.28luminance-preserving.29_conversion_to_grayscale , si desea utilizar eso como inspiración.
Entonces se representaría la escala de grises a los colores apropiados. Para descomponerlo rápidamente: 000000 se referirá al azul de Rubik, 333333 se referirá al rojo de Rubik, 666666 se referirá al verde de Rubik, 999999 se referirá al naranja de Rubik, CCCCCC se referirá al amarillo de Rubik y FFFFFF se referirá al blanco de Rubik.
Prefiero que el código resultante se pueda procesar desde la paleta de fotos directamente a los colores de Rubik. El método de dos etapas, desde la conversión a escala de grises segura para la web y luego a la paleta de Rubik correspondiente, es solo para darle una idea sobre la lógica detrás del proceso, pero si es más fácil para usted hacerlo, hágalo de todos modos.
Los valores RGB reales para la paleta de Rubik deben corresponder a lo siguiente:
- Rojo: # C41E3A
- Verde: # 009E60
- Azul: # 0051BA
- Naranja: # FF5800
- Amarillo: # FFD500
- Blanco: #FFFFFF
Para darle un ejemplo, recorté la cabeza de Abraham Lincoln de la siguiente imagen: y rendericé el algoritmo para producir lo siguiente:
La cuadrícula está allí para que pueda ver cómo cada cubo individual de Rubik en miniatura tendría que configurarse para formar la imagen. El tamaño real de la imagen resultante es de 45 píxeles por 45 píxeles, lo que significa que (45/3) * (45/3) = 15 * 15 = 225 cubos de Rubik en miniatura se utilizarían para hacer esta imagen. No espero que presente la imagen resultante con una cuadrícula como yo.
Entonces esto es lo que se requiere:
La imagen a ser procesada por este algoritmo debe tener x píxeles de ancho por y píxeles de alto, de modo que x e y sean múltiplos de 3. Esto es para ayudar con la facilidad de renderizado como parte de un mosaico de cubos de Rubik. Si su imagen es bastante grande, se recomienda reducirla a alrededor de 45 x 45 a 75 x 75 o más o menos en dimensiones antes del procesamiento. Tenga en cuenta que este componente de cambio de tamaño es OPCIONAL.
La imagen debe convertirse a la paleta de cubos de Rubik sextacolored para crear el mosaico.
La imagen resultante debe ser un archivo gráfico válido después del procesamiento. Para probar que su código funciona, ejecútelo contra una imagen de uno de los presidentes de los Estados Unidos de América o una conocida celebridad de Hollywood. Ya he usado a Abraham Lincoln en mi ejemplo, por lo que este presidente ya no puede ser usado. Asegúrese de proporcionar el idioma que ha utilizado, el recuento de bytes y el presidente / celebridad utilizado para probar su código, incluso antes y después de los disparos ...
Cada entrada debe tener un presidente / celebridad único como su caso de prueba. No aceptaré duplicados. Esto asegurará que los resultados duplicados no se usen para probar diferentes entradas de código. Está muy bien decir que su código funciona, otra cosa es probarlo.
5. El código más corto gana.
Estoy cambiando esto a un concurso de popularidad ... Prefiero ver quién puede hacer esto sin tener que competir en el conteo de bytes ... Así que otorgaré esto junto con una recompensa después del 28 de febrero de 2014.
#000000 => #0051BA
, etc