genel bakış
Fraktal kodlayan bir bit desen verilen artı basit fraktal kalıpları, artı fraktalın nesil başına ölçek faktörü ve kuşak sayısı yazdıran bir program yazın.
açıklama
İşte Sierpinski Halı'nın ASCII temsili :
Nesil 0:
#
1. nesil:
# # #
# #
# # #
2. nesil:
# # # # # # # # #
# # # # # #
# # # # # # # # #
# # # # # #
# # # #
# # # # # #
# # # # # # # # #
# # # # # #
# # # # # # # # #
ASCII Sierpinski Carpet'in n + 1 no'lu jenerasyonu, 8 no'lu n neslini içeren 3x3'lük bir ızgaradan oluşur;
Bu nedenle, 3x3 ızgarası kullanılarak tanımlandığından ve her nesildeki genişlik ve yükseklikten 3 kat daha büyük hale geldiğinden, 3'lük bir ölçek faktörüne sahip olduğunu söyleyebiliriz.
3x3 ızgarasındaki elemanları 0 - 8 arasında, yukarıdan aşağıya, soldan sağa doğru numaralandırarak ve eğer n + 1 nesli varsa bu grid konumundaki n neslinin kopyası:
bit: place value: bit pattern: bit value:
0 1 2 1 2 4 1 1 1 1 2 4
3 4 5 8 16 32 1 0 1 8 0 32
6 7 8 64 128 256 1 1 1 64 128 256
integer value = 1 + 2 + 4 + 8 + 32 + 64 + 128 + 256 = 495
2 ölçek faktörü için, bit deseni şöyle düzenlenir:
0 1
2 3
ve bunun gibi.
Göreviniz, bu formda bit deseni kabul eden bir program, ölçek faktörü (örneğin, Sierpinski Carpet için 3) ve bir üretim numarası yazıp bir ASCII fraktal çıktısı almaktır.
Giriş
Programınız aşağıdaki sırada 3 tam sayı kabul etmelidir: bit deseni, ölçek faktörü (2 ile 5 arasında, dahil) ve bir üretim sayısı (0 ile 5 arasında, dahil).
Bu değerler üzerinde herhangi bir giriş onayı yapmanız gerekmez ve program belirtilen aralıklardan daha büyük değerler için çalışıyorsa mükemmeldir.
Girişler herhangi bir biçimde iletilebilir (tuples, virgül / boşlukla ayrılmış liste, vb.)
Çıktı
Program, #
karakterden oluşan bir fraktal ve ardından fraktalın tanımlandığı pozisyonlarda bir boşluk, olmadığı yerde çift boşluklar ve her satırın sonunda ya da dizgiyi döndüren yeni bir satır karakteri çıkarmalıdır. bir fonksiyondan.
Örnekler
Giriş:
495,3,3
Çıktı (Sierpinski Carpet nesil 3):
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
Giriş:
7,2,5
Çıktı ( Sierpinski Üçgeni ):
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # #
# # # #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # #
# # # #
# # # # # # # #
# # # #
# # # #
# #
# # # # # # # # # # # # # # # #
# # # # # # # #
# # # # # # # #
# # # #
# # # # # # # #
# # # #
# # # #
# #
# # # # # # # #
# # # #
# # # #
# #
# # # #
# #
# #
#
Giriş:
325,3,3
Çıkış ( Cantor Dust ):
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
# # # # # # # #
Giriş
186,3,3
Çıktı ( Vicsek fraktal ):
#
# # #
#
# # #
# # # # # # # # #
# # #
#
# # #
#
# # #
# # # # # # # # #
# # #
# # # # # # # # #
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # #
# # # # # # # # #
# # #
#
# # #
#
# # #
# # # # # # # # #
# # #
#
# # #
#
Giriş:
279,3,3
Çıktı (asimetrik fraktal örneği):
# # # # # # # # # # # # # # # # # # # # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # # # # # # # #
# # #
# # #
# # # # # # # # #
# # #
# # #
# # # # # # # # #
# # #
# # #
# # #
#
#
# # #
#
#
# # # # # # # # #
# # #
# # #
# # #
#
#
# # #
#
#
vb.
Notlar:
- Bu kod-golf yani bayt cinsinden en kısa cevap kazanır
- Programınız tek başına veya 3 giriş parametresiyle çağrılan ve bir dize döndüren (veya yazdırır) bir işlev olabilir
- Jenerasyon 0, 0 bitlik bir model için bile
#
(bir#
boşluk tarafından takip edilir) olarak tanımlanır . - Son satırdaki takip eden bir yeni satır isteğe bağlıdır ancak her satırdaki sondaki beyaz boşluk miktarında olduğu gibi izin verilir.
279,3,3
?
"##"
etmek"# "
. Satır sonundaki bir boşlukun örneklerinde yer aldığını görüyorum, gerekli mi? . Son kurala göre, isteğe bağlı olduğunu varsaymak isterim, ancak 0 kuşak için son derece boş bir alana ihtiyaç duymanız beni meraklandırıyor. Ayrıca izin verilen maksimum boşluk ve newlines (çoğul var) belirtmeniz gerektiğini düşünüyorum. Aşırı bir örnek olarak, her zaman 5 ^ 6 = 15625 satır 2 * 5 ^ 6 boşluktan oluşan bir diziyle başlayabilir, ardından#
s'yi kullanabilirsiniz. Çoğu girdi vakasında, çok fazla kullanılmayan beyaz boşluk var