Zor olan, metin tabanlı 2 boyutlu bir ışın izleme programı uygulamaktır.
Beyaz ışık kaynakları @
sembollerdir. R
, G
Ve B
hafif filtrelerdir. /
ve \
% 80 yansıtma özellikli aynalardır. ?
bir ışık sensörüdür. >
, <
, ^
Ve V
uygun yönde ışık birleştirmek (örneğin bir kırmızı ve bir yeşil bir haline geldiyse >
sağa doğru yayılan olacağını ışık ve sarı olacaktır). Diğer boşluk olmayan karakterler tüm ışığı emer. Işık dört yöndeki @
sembollerden yayılır .
Program çalıştırıldığında, girişle aynı, ancak izlenen ışınlarla çıktı üretmelidir. Bu 2 boyutlu olduğundan ve girişte hiçbir ışının geçmeyeceğini garanti ediyorum, bununla ilgili bir sorun olmayacak. Her ışın bir harfle temsil edilmelidir; r = kırmızı, g = yeşil, b = mavi, c = camgöbeği, m = macenta, y = sarı, w = beyaz. Hiç üçlü renkler olmayacak. Muhafaza, onu girişten ayırmak için önemlidir. Bu çıktıdan sonra, soru işaretleri tarafından yakalanan ışığın değerleri (görünüş sırasına göre, soldan sağa yukarıdan aşağıya) yüzde ve renk olarak verilmelidir. Örneğin, bu girdi:
/ @
-
\R> ?
@B/
Çıktı vermelidir:
/wwwwwwwwwwwwwwwwww@w
w -
w\R>mmmmmmmmmmmmmmmmm?
w b
@B/
#1: 72% Magenta
Dikkat edilmesi gereken bir başka önemli nokta - iki renk bir "prizma" (oklar) kullanılarak birleştirildiğinde, birleştirilen ışığın gücü ikisinin ortalama gücü olur. Çıktı tam olarak belirtildiği gibi olmalıdır (örneğin #x: [x] [x] x% Renk ).
Diliniz STDIN'den okuyamıyor ve STDOUT'a yazamıyorsa, girdiyi bağımsız değişken olarak kabul eden ve sonucu döndüren bir işlev (varsa anonim veya lambda) oluşturun.
Derleyicinin yönergeleri, dilde oluşturulan programların tümü veya çoğu için gerekli veya önerilen yapılar, vb. Atlanabilir. Örneğin, #include
ve using
direktifler (ancak değil #define
) C tarzı dillerde, #/usr/bin/perl -options
Perl ve
Module Module1
Sub Main()
End Sub
End Module
örneğin VB.NET'te. Ad alanlarını içe aktarırsanız veya içerme yönergeleri eklerseniz, lütfen yanıtınıza not edin.
Şimdi bu yeterince zor mu? :)
>
doğrudan geçip giden ışığı yakalamaktır. Ve eğer w
üst kısımdan geçerse , alttan da R
geçmelidir b
. Sonunda (sanırım), ışınların geçmemesi konusunda yanılıyorsunuz. Tek satırlık bir örnek vermek gerekirse, doğru çıktı ne için olurdu @R> B@
?
@
sol altta dört yönde de ışık yayıyor değil mi? Özellikle, bunu yayar w
. Ve en azından Chromium'da olduğu gibi boşluk bırakmadım. Düz bir şekilde geçmeye gelince, düzenlemem bunu temizleyebilir.