Jacob'ın Merdiveni çocuk bilim müzelerinde görmüş olabilirsiniz . Neye benzediklerini bilmiyorsanız, Wikimedia Commons'da birkaç resim ve video örneği vardır . Bugünün zorluğu, elektrikli aracın animasyonlu bir ASCII sürümünü oluşturmaktır. Sonunda, böyle bir şeye benzemelidir:
Merdiven Yapımı
6 ( H ) yüksekliğinde bir merdivenin temel şekli :
6 \ /
5 \ /
4 \ /
3 \ /
2 \ /
1 \ /
0 ¯¯
Soldaki sayılar bu örnek için satır numarasını gösterir ve çıktıya dahil edilmemelidir. Belirli bir satıra numarası ( R ) ile değineceğiz . Satır 0 alttır ¯¯
. Her 1 ila H sıraları dört bölümden oluşur:
- Bir boşluk
(U + 0020) tekrarlanan ( H - R ) kez
- Bir eğik çizgi
\
(U + 005C) - Bir boşluk
(U + 0020) tekrar edildi (2 * R ) kez
- Bir eğik çizgi
/
(U + 002F)
Her iki eğik çizginin bir makron ¯
(U + 00AF) ile değiştirilmesi dışında Satır 0 aynıdır . Her satırın sonunda veya merdivenin altında izleyen boşluk boş. Önde gelen boşluk değil.
Ark Yapısı
Merdiven inşa edildikten sonra, sol ve sağ taraf arasında yaylar oluşturabilirsiniz. Bir yay tamamen üst üstedir ve öncülük \
ile takip arasındaki boşlukları değiştirir /
. Bu nedenle, satır 2 yayında 4 karakter olacak, satır 3 ise 6 vb. Her yay aşağıdaki kuralları kullanarak oluşur:
- İzin verilen tek karakterler
_/¯\
(U + 005F, U + 002F, U + 00AF, U + 005C) - Yumuşak bir görünüm sağlamak için, herhangi bir
¯
ya da/
bir ile takip edilmelidir¯
ya da\
- Yumuşak bir görünüm sağlamak için, herhangi bir
_
ya da\
bir ile takip edilmelidir_
ya da/
- Yukarıdaki iki kural, merdivenin kenarları için de geçerlidir.
- Yukarıdaki üç kural etkili bir şekilde yaydaki ilk karakterin
_
veya/
son karakterin olması gerektiği_
veya\
(\¯\_//
her iki tarafta da geçersiz olduğu, ancak\_/¯\/
tamam olduğu) anlamına gelir. - Her izin verilen karakterin belirli bir noktada gerçekleşmesi için sıfır olmayan bir şans olmalıdır.
- Her yay, her yaydan bağımsızdır
Animasyon
Tek bir yayın ömrü, 1. satırdan başlayarak ve bir sıra yukarı çıkıncaya kadar bir satır yukarı “hareket ettirerek” yaratılır. IE, önce satır 1'de bir yay üretir, sonra onu boşluklara geri getirir ve satır 2'de bir yay oluşturur, vb. Gösterilecek çok sayıda yay verildiğinde ( N ), aşağıdaki yönergeleri kullanarak bir seferde bu birçok yayın ömrünü gösterin:
- Herhangi bir zamanda sadece bir yay "canlı" olmalıdır. Bir sonraki yay, mevcut olanın üstüne gelene kadar başlayamaz ve sonra söner.
- Arkın ömrünün her bir satırı, tam olarak bir kare için gösterilmelidir.
- Yeni bir yay başlamadan önce (ilk yaydan önce isteğe bağlı) sadece temel merdivenlerden birinin (yaysız) bir çerçevesi olmalıdır.
- Animasyon N yaylarının tüm ömrünü göstermelidir . Eğer K = 0 durana kadar, sonsuza kadar rasgele yay animasyon gerekir.
- Eğer N > 0, sonsuza döngü animasyon hala may ama tekrar tekrar aynı arklar bir döngü olmalıdır. (Bu yazının tepesindeki GIF örneği H = 6 ve N = 3'tür, ancak sonsuza kadar döngüye girer.)
- Animasyon yerinde gerçekleşmelidir. Yani, her kare bir sonraki karenin üzerine tamamen yazmalı ve aynı konumda olmalıdır.
- Her bir karenin uzunluğu istediğiniz gibi olabilir ancak bir insan tarafından izlenebilir hale getirin (IE, sağduyunuzu kullanın: 0.01s / kare ve 30s / kare hem de kabul edilemez).
Giriş çıkış
- Giriş ve Çıkış herhangi bir standart formatta olabilir
- Bir GIF'yi dışa aktarabilir, ekrana metin yazabilir, her kare için tek bir dosya çıktısı alabilirsiniz ya da başka herhangi bir makul yol
- Standart boşluklar yasaktır
- H merdivenin yüksekliği pozitif bir tamsayı olacaktır.
- N'yi gösterecek yay sayısı negatif olmayan bir tam sayı olacaktır
- Hem H hem de N , seçtiğiniz herhangi bir sırada girdi olarak alınır (Lütfen cevabınıza sırayı ekleyin)
Kazanma Koşulu
Bu kod golf yani en kısa kod kazanır.
the first character in the arc must be _ or / and the last character must be _ or \
ve There must be a non-zero chance for each allowable character to occur at a given point
. Simetrik olması için, hem ilk hem de son karakterin _
her seferinde olması gerekirdi; bu , ya /
da “\” olma ihtimalinin sıfır olduğu anlamına gelir .