Будучи большим поклонником кубика Рубика и крутого искусства, я работал над тем, чтобы объединить их вместе, чтобы сделать действительно классные вещи. В основном решение миниатюрных кубиков Рубика для формирования элементарных пикселей в формировании кубического искусства Рубика. Примеры такого искусства можно увидеть по этой ссылке: http://google.com/search?q=rubik%27s+cube+art
Теперь целью этого Code Golf является создание кода, который принимает изображение в качестве входных данных, а затем преобразует его следующим образом:
Изображение изначально уменьшается до веб-безопасных оттенков серого. Причина этого заключается в том, что нам необходимо изолировать палитру градаций серого в сети (т. Е. 000000, 333333, 666666, 999999, CCCCCC и FFFFFF). Алгоритм колориметрического метода преобразования в оттенки серого доступен по адресу: http://en.wikipedia.org/wiki/Grayscale#Colorimetric_.28luminance-preserving.29_conversion_to_grayscale , если вы хотите использовать его в качестве источника вдохновения.
Затем можно отобразить оттенки серого до соответствующих цветов. Чтобы быстро его разбить: 000000 будет означать синий цвет Рубика, 333333 будет означать красный цвет Рубика, 666666 будет означать зеленый цвет Рубика, 999999 будет означать оранжевый цвет Рубика, CCCCCC будет означать желтый цвет Рубика, а FFFFFF будет означать белый цвет Рубика.
Я бы предпочел, чтобы ваш полученный код мог отображаться из палитры фотографии прямо в цвета Рубика. Двухэтапный метод от преобразования в веб-безопасную градацию серого и затем к соответствующей палитре Рубика состоит в том, чтобы просто дать вам представление о логике процесса, но если вам легче это сделать, то обязательно сделайте это.
Фактические значения RGB для палитры Рубика должны соответствовать следующему:
- Красный: # C41E3A
- Зеленый: # 009E60
- Синий: # 0051BA
- Оранжевый: # FF5800
- Желтый: # FFD500
- Белый: #FFFFFF
Чтобы дать вам пример, я обрезал голову Авраама Линкольна из следующей картинки: и отредактировал алгоритм для получения следующего:
Сетка предназначена для того, чтобы вы могли видеть, как каждый отдельный миниатюрный кубик Рубика должен быть сконфигурирован для формирования изображения. Истинный размер получившегося изображения составляет 45 на 45 пикселей, что означает (45/3) * (45/3) = 15 * 15 = 225 миниатюрных кубиков Рубика, которые будут использованы для создания этого изображения. Я не ожидаю, что вы представите полученное изображение с сеткой, как у меня.
Итак, вот что требуется:
Изображение, обрабатываемое этим алгоритмом, должно иметь ширину x пикселей и высоту y пикселей, чтобы x и y были кратны 3. Это облегчает рендеринг как часть мозаики кубика Рубика. Если ваше изображение достаточно велико, рекомендуется уменьшить его до размеров от 45 x 45 до 75 x 75 или около этого в размерах до обработки. Имейте в виду, этот компонент изменения размера является необязательным.
Чтобы создать мозаику, изображение необходимо преобразовать в палитру кубиков Рубика с секс-цветами.
Полученное изображение должно быть действительным графическим файлом после обработки. Чтобы доказать, что ваш код работает, запустите его с изображением одного из президентов Соединенных Штатов Америки или известной голливудской знаменитости. Я уже использовал Авраама Линкольна в своем примере, поэтому этого президента больше нельзя использовать. Убедитесь, что вы указали язык, который вы использовали, количество байтов, а также президент / знаменитость, использовавшиеся для тестирования вашего кода, в том числе до и после снимков ...
У каждой записи должен быть уникальный президент / знаменитость в качестве тестового примера. Я не буду принимать дубликаты. Это гарантирует, что повторяющиеся результаты не будут использоваться для проверки различных записей кода. Хорошо, что ваш код работает, это еще одна вещь, чтобы доказать это.
5. Самый короткий код выигрывает.
Я изменяю это на конкурс популярности ... Я бы лучше посмотрел, кто может сделать это, не участвуя в соревнованиях по количеству байтов ... Так что я награжу это вместе с наградой после 28 февраля 2014 года.
#000000 => #0051BA
, и т. Д.