Sendo um grande fã do cubo de Rubik e da arte legal, tenho trabalhado na combinação dos dois para fazer coisas realmente legais. Resolvendo basicamente os cubos de Rubik em miniatura para formar pixels rudimentares na formação da arte do cubo de Rubik. Exemplos dessa arte podem ser vistos neste link: http://google.com/search?q=rubik%27s+cube+art
Agora, o objetivo deste Code Golf é criar um código que aceite uma imagem como entrada e depois a converta da seguinte maneira:
A imagem é inicialmente reduzida para cores em escala de cinza seguras para a Web. A razão por trás disso é porque precisamos isolar a paleta de escala de cinza segura na Web (por exemplo, 000000, 333333, 666666, 999999, CCCCCC e FFFFFF). Um algoritmo sobre o método colorimétrico de conversão em escala de cinza está disponível em: http://en.wikipedia.org/wiki/Grayscale#Colorimetric_.28luminance-preserving.29_conversion_to_grayscale , caso você queira usá-lo como inspiração.
Um seria renderizar a escala de cinza para as cores apropriadas. Para dividir rapidamente: 000000 se refere ao azul de Rubik, 333333 se refere ao vermelho de Rubik, 666666 se refere ao verde de Rubik, 999999 se refere ao laranja de Rubik, </font> se refere ao laranja de Rubik, </font> se refere ao amarelo de Rubik e FFFFFF se refere ao branco de Rubik.
Prefiro que o código resultante possa renderizar da paleta da foto diretamente para as cores de Rubik. O método de dois estágios, da conversão para escala de cinza segura na Web e, em seguida, para a paleta correspondente do Rubik é apenas para lhe dar uma idéia da lógica por trás do processo, mas se for mais fácil fazer isso, faça isso de qualquer maneira.
Os valores RGB reais da paleta do Rubik devem corresponder ao seguinte:
- Vermelho: # C41E3A
- Verde: # 009E60
- Azul: # 0051BA
- Laranja: # FF5800
- Amarelo: # FFD500
- Branco: #FFFFFF
Para dar um exemplo, recortei a cabeça de Abraham Lincoln da seguinte figura: e renderizei o algoritmo para produzir o seguinte:
A grade está lá para que você possa ver como cada cubo de Rubik em miniatura individual precisaria ser configurado para compor a imagem. O tamanho real da imagem resultante é de 45 por 45 pixels, significando (45/3) * (45/3) = 15 * 15 = 225 os cubos de Rubik em miniatura seriam usados para fazer essa imagem. Não estou esperando que você apresente a imagem resultante com uma grade como eu.
Portanto, é isso que é necessário:
A imagem a ser processada por esse algoritmo deve ter x pixels de largura por y pixels de altura, de modo que x e y sejam múltiplos de 3. Isso ajuda a facilitar a renderização como parte do mosaico de cubos de Rubik. Se sua imagem for muito grande, é aconselhável reduzi-la para algo em torno de 45 x 45 a 75 x 75 ou em dimensões anteriores ao processamento. Lembre-se de que esse componente de redimensionamento é OPCIONAL.
A imagem precisa ser convertida na paleta de cubos do Rubik, com cores sextadas, para criar o mosaico.
A imagem resultante precisa ser um arquivo gráfico válido após o processamento. Para provar que seu código funciona, execute-o contra a imagem de um dos presidentes dos Estados Unidos da América ou de uma celebridade conhecida de Hollywood. Eu já usei Abraham Lincoln no meu exemplo, então esse presidente não pode mais ser usado. Certifique-se de fornecer o idioma que você usou, a contagem de bytes e o presidente / celebridade usado para testar seu código, incluindo fotos antes e depois ...
Cada entrada deve ter um presidente / celebridade exclusivo como seu caso de teste. Não aceitarei duplicatas. Isso garantirá que resultados duplicados não sejam usados para testar entradas de código diferentes. É muito bom dizer que seu código funciona, é outra coisa para provar isso.
5. O código mais curto vence.
Estou mudando isso para um concurso de popularidade ... Prefiro ver quem pode fazer isso sem ter que competir com a contagem de bytes ... Portanto, atribuirei isso juntamente com uma recompensa após o dia 28 de fevereiro de 2014.
#000000 => #0051BA
, etc.