Kodunuz sonsuza dek çok basit bir ASCII-art DNA temsili oluşturacaktır. İstediğiniz herhangi bir biçimde girdi olarak iki sayı alır: bir liste olarak, bir işleve bağımsız değişken olarak, stdin'de vb.
I
Saniye cinsinden kayan nokta aralığı 0,0 ile 1,0 (dahil)Z
1 - 64 (dahil) arasında bir tam sayı olarak zoom seviyesi
Kodunuz, stdout'a veya eşdeğerine her I
saniye bir satır yazdırarak , şuna benzer sonsuz bir çıktı üretir (yakınlaştırma düzeyi 4 için):
A
T-----a
G-------c
G-----c
g
t-----A
a-------T
c-----G
T
A-----t
C-------g
...
Spesifik olarak, DNA eden temsili, tire ile bağlı sinüs dalgası bir çift bir karakterden oluşan a
, c
, g
ve t
, karakter diğer A
, C
, G
ve T
. Eğer x
şu anda baskı konum hattının 0 endeksli bir sayıdır, küçük dalga karakter 0 esaslı konum ile verilir (sin(πx / Z) + 1) * Z
, ve büyük dalga ile verilir (-sin(πx / Z) + 1) * Z
, her iki yuvarlatılmış en yakın (değil katlı) tamsayı. Daha fazla ayrıntı:
- İki dalganın üst üste geldiği durumlarda, büyük dalgadan başlayarak hangi dalganın ön tarafta olduğunu değiştirmeniz gerekir. (Küçük dalga ile başlayarak bize bir çift sarmal verecek yok !)
- Olgu göz ardı edilirse, A her zaman T ve C ile çiftler, gerçek DNA'da olduğu gibi G ile çiftler. Çiftlerin kendileri dört olasılık üzerinde eşit dağılımlı rastgele seçilmelidir. Kod seçiminizin ardışık çalışmalarında çift seçiminin aynı veya farklı olması önemli değildir. Çıktının belirgin bir deseni ve en azından milyarlarca ( RANDU gibi kusurlu PRNG'ler) süresi olmadığı sürece, rastgele seçimlerinizin istatistiksel kalitesi bir sorun değildir. iyidir.)
- Sondaki boşluklarınız olmamalı veya her satırı o yakınlaştırma düzeyindeki dalgaların maksimum konumuna kadar doldurmalısınız (yukarıdaki örnekte dokuz karakter). Yakınlaştırma düzeyi 1, matematiksel nedenlerden dolayı bir adet isteğe bağlı ek son boşluk içerebilir.
DNA küçük olduğu için kodunuzun mümkün olduğunca kısa olması gerekir.
Daha fazla örnek:
Zoom seviyesi 8:
T
C-----g
A-----------t
C-------------g
G---------------c
T-------------a
T-----------a
T-----a
c
g-----C
t-----------A
g-------------C
a---------------T
...
Zoom seviyesi 2:
A
T---a
c
g---C
G
A---t
c
a---T
...
Zoom seviyesi 1 (önde gelen boşluğa dikkat edin):
G
a
C
t
...