Rubik küpünün ve güzel sanatının büyük bir hayranı olarak, gerçekten güzel şeyler yapmak için ikisini bir araya getirmeye çalışıyorum. Temelde minik Rubik küplerini Rubik küp sanatının oluşumunda ilkel pikseller oluşturmak için çözme. Bu tür sanatlara örnekler bu bağlantıdan görülebilir: http://google.com/search?q=rubik%27s+cube+art
Şimdi, bu Code Golf'un amacı bir görüntüyü girdi olarak kabul eden ve ardından aşağıdaki şekilde dönüştüren bir kod oluşturmaktır:
Görüntü başlangıçta web uyumlu gri tonlamalı renklere indirgenir. Bunun arkasındaki neden, ağda güvenli gri tonlamalı paleti izole etmemiz gerektiğidir (yani 000000, 333333, 666666, 999999, CCCCCC ve FFFFFF). Gri tonlamaya dönüştürme kolorimetrik yöntemi üzerine bir algoritma şu adreste mevcuttur: http://en.wikipedia.org/wiki/Grayscale#Colorimetric_.28luminance-preserving.29_conversion_to_grayscale , bunu ilham olarak kullanmak istemeniz gerekir.
Biri daha sonra gri tonlamayı uygun renklere dönüştürür. Hızlı bir şekilde parçalamak için: 000000 Rubik'in mavisini, 333333 Rubik'in kırmızısını, 666666 Rubik'in yeşilini, 999999 Rubik'in turuncularını, CCCCCC'nin Rubik'in sarılarını, FFFFFF'nin de Rubik'in beyazını göstermesini sağlayacak.
Elde ettiğiniz kodun fotoğrafın paletinden doğrudan Rubik'in renklerine işlenmesini tercih ederim. Web uyumlu gri tonlamaya ve ardından karşılık gelen Rubik'in paletine dönüştürmekten iki aşamalı yöntem, yalnızca işlemin arkasındaki mantık hakkında bir fikir vermektir, ancak bunu yapmanız sizin için daha kolaysa, elbette bunu yapın.
Rubik'in paleti için gerçek RGB değerleri aşağıdakilere karşılık gelmelidir:
- Kırmızı: # C41E3A
- Yeşil: # 009E60
- Mavi: # 0051BA
- Turuncu: # FF5800
- Sarı: # FFD500
- Beyaz: #FFFFFF
Bir örnek vermek gerekirse, Abraham Lincoln'ün kafasını aşağıdaki resimde kestim: ve aşağıdakileri üretecek algoritmayı oluşturdum:
Izgara, her bir minyatür Rubik küpünün görüntüyü oluşturmak için nasıl yapılandırılması gerektiğini görebilmeniz için orada. Ortaya çıkan görüntünün gerçek boyutu 45 piksel x 45 pikseldir, yani (45/3) * (45/3) = 15 * 15 = 225 minyatür Rubik küpleri bu görüntüyü oluşturmak için kullanılır. Elimdeki görüntüyü benim gibi bir ızgarayla sunmanızı beklemiyorum.
Demek gereken bu:
Bu algoritma tarafından işlenecek görüntünün, x piksel genişliğinde y piksel yüksekliğinde x piksel olması gerekir; öyle ki, x ve y, 3'ün katlarıdır. Görüntünüz oldukça büyükse, onu 45 x 45 ila 75 x 75 civarında bir şeye ya da işlemden önce boyutlarda küçültmeniz önerilir. Bu yeniden boyutlandırma bileşeninin İSTEĞE BAĞLI olduğunu unutmayın.
Mozaiği oluşturmak için görüntünün sextacolored Rubik küp paletine dönüştürülmesi gerekir.
Ortaya çıkan görüntünün işlemden sonra geçerli bir grafik dosyası olması gerekir. Kodunuzun çalıştığını ispatlamak için, Amerika Birleşik Devletleri başkanlarından birinin resmine veya iyi bilinen bir Hollywood ünlüsüne karşı çalıştırın. Örneğimde Abraham Lincoln'ü zaten kullandım, bu yüzden bu başkan kullanılamaz. Kullandığınız dili, bayt sayısını ve çekim öncesi ve sonrası da dahil olmak üzere kodunuzu test etmek için kullanılan başkan / ünlüyü sağladığınızdan emin olun ...
Her giriş, kendi test durumu olarak benzersiz bir başkan / şöhrete sahip olmalıdır. Kopyaları kabul etmeyeceğim. Bu, yinelenen sonuçların farklı kod girişlerini test etmek için kullanılmamasını sağlayacaktır. Kodunuzun çalıştığını söylemek çok iyi, kanıtlamak için başka bir şey.
5. En kısa kod kazanır.
Bunu bir popülerlik yarışmasına dönüştürüyorum ... Bayt sayısıyla rekabet etmek zorunda kalmadan bunu kimin yapabileceğini görmeyi tercih ederim ... Bu yüzden 28 Şubat 2014'ten sonra bunu bir ödülle birlikte vereceğim.
#000000 => #0051BA
, vb