(Bu meydan okuma çok benzer, ancak şu anki meydan okuma ek komplikasyonlara sahiptir.)
Duvarların düz aynalarla kaplandığı 2 boyutlu bir oda düşünün.
Aniden, bir duvar parçasının eksik olduğu odaya bir ışık demeti çarpıyor! Işık demeti odanın etrafında dans eder, duvar aynalarıyla yansıtılır ve sonunda odayı tekrar terk eder.
Mantık
: 5 adet değişken verilmiştir W, bir H, X, Y ve Z, .
Şimdi, ne demek istiyorlar?
W, H odanın büyüklüğü (duvarlar dahil), W genişliği ve H yüksekliği.
X, Y, duvarın deliğe sahip olduğu koordinattır. Bunun her zaman bir duvar karosu üzerinde olduğunu varsayabilirsiniz. Koordinatlar, X ekseni sağa ve Y ekseni aşağıya bakacak şekilde 0 tabanlıdır.
Z, ışığın odaya düştüğü yönü temsil eden tek bir karakter ya \
da /
.
Oda aşağıdaki karakterlerden oluşmalıdır:
|
yatay duvarlar için-
dikey duvarlar için+
köşeler için
Örnek: (W = 7, H = 4)
+-----+
| |
| |
+-----+
Artık bir odamız var, duvar karolarından birini yok edelim, böylece odaya bir ışık demeti düşer. Işığın kalaslar ile temsil diyagonal çizgiler vardır \
ve /
karakter.
X = 2, Y = 0'daki duvar karosunu bir \
ışık demeti ile değiştirelim.
+-\---+
| |
| |
+-----+
Gelen ışık, bir ayna duvarına çarpana kadar odanın çaprazından geçer. Bir duvara çarpılırsa, yön duvarın ekseni boyunca ters çevrilir ve ışın ilerler.
+-\---+
|\ \/\|
| \/\/|
+-----+
Bu örnekte, ışık huzmesi, duvarın bir köşesinin vurulduğu bir noktaya ulaşır, bu da hüzmenin tamamen ters çevrildiğini ve geriye doğru gittiğini ve sonunda odadan ayrıldığını gösterir.
Senin görevin
Odayı ve ışık demetinin tüm yolunu, odadan tekrar ayrılana veya sonsuz bir döngüye kadar tekrarlayana kadar basan bir program yazın.
Giriş
Giriş herhangi bir makul formatta alınabilir, ancak 4 W, H, X, Y tamsayısını ve Z karakterini içermelidir [10, 8, 0, 3, \]
.
Şunu varsayabilirsiniz:
- W, H> = 3
- X, Y her zaman bir duvara yerleştirilir
- Z sadece değerleri içeren mümkün olacak
\
ve/
.
Çıktı
Bir dizeyi döndürüp döndürmeyeceğinize veya doğrudan çıktıya mı karar verebilirsiniz stdout
.
Odanın duvarını ve ışık huzmesini içermelidir (yukarıdaki ASCII karakterleri ile tanımlanmıştır).
kurallar
- Standart boşluklar yasaktır.
- Bu kod golf , bu nedenle bayt cinsinden en kısa kod herhangi bir dilde kazanır.
- Bu zorluğun yayınlanmasından önce oluşturulan tüm kodlama dillerine izin verilir.
Örnekler
Giriş: [5, 4, 2, 0, /]
+-/-+
|/ /|
|\/ |
+---+
Giriş: [20, 3, 0, 1, \]
+------------------+
\/\/\/\/\/\/\/\/\/\|
+------------------+
Giriş: [10, 8, 0, 3, \]
(Odadan tekrar ayrılmayacak sonsuz bir döngü örneği.)
+--------+
|/\/\/\/\|
|\/\/\/\/|
\/\/\/\/\|
|\/\/\/\/|
|/\/\/\/\|
|\/\/\/\/|
+--------+
İyi şanslar!