Kode Anda akan menghasilkan representasi DNA ASCII-art yang sangat sederhana, selamanya. Dibutuhkan dua angka sebagai input dalam format apa pun yang Anda inginkan: sebagai daftar, sebagai argumen untuk fungsi, di stdin, dll.
- Interval titik-mengambang
I
dalam detik antara 0,0 dan 1,0 (inklusif) - Level zoom
Z
sebagai bilangan bulat dari 1 hingga 64 (inklusif)
Kode Anda akan mencetak satu baris ke stdout atau yang setara setiap I
detik, menghasilkan output tanpa batas yang terlihat seperti ini (untuk level zoom 4):
A
T-----a
G-------c
G-----c
g
t-----A
a-------T
c-----G
T
A-----t
C-------g
...
Secara khusus, representasi kami DNA adalah sepasang gelombang sinus dihubungkan dengan tanda hubung, salah satu yang terdiri dari karakter a
, c
, g
, dan t
, yang lain dari karakter A
, C
, G
, dan T
. Jika x
nomor 0-diindeks dari garis yang sedang kita cetak, posisi berbasis-0 karakter dalam gelombang huruf kecil diberikan oleh (sin(πx / Z) + 1) * Z
, dan pada gelombang huruf besar diberikan oleh (-sin(πx / Z) + 1) * Z
, keduanya bulat (tidak berlantai) ke terdekat bilangan bulat. Keterangan lebih lanjut:
- Dalam kasus di mana kedua gelombang tumpang tindih, Anda harus mengganti gelombang yang ada di depan, dimulai dengan gelombang huruf besar. (Dimulai dengan gelombang huruf kecil akan memberi kita heliks ganda yang tidak ada !)
- Mengabaikan kasus, A selalu berpasangan dengan T dan C selalu berpasangan dengan G, seperti pada DNA asli. Pasangan itu sendiri harus dipilih secara acak dengan distribusi yang seragam atas empat kemungkinan. Tidak masalah jika pilihan pasangan sama atau berbeda pada berturut-turut menjalankan kode Anda. Kualitas statistik dari pilihan acak Anda tidak menjadi masalah selama output tidak memiliki pola yang jelas dan periode setidaknya dalam miliaran (PRNG cacat seperti RANDU baik-baik saja.)
- Anda tidak boleh memiliki spasi tambahan atau gabungkan setiap baris ke posisi maksimum gelombang pada level zoom tersebut (dalam contoh di atas, sembilan karakter.) Level zoom 1 mungkin memiliki satu ruang tambahan tambahan opsional untuk alasan matematis.
Karena DNA kecil, kode Anda harus sesingkat mungkin.
Lebih banyak contoh:
Tingkat zoom 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
...
Tingkat pembesaran 2:
A
T---a
c
g---C
G
A---t
c
a---T
...
Tingkat zoom 1 (perhatikan ruang utama):
G
a
C
t
...