รหัสของคุณกำลังจะสร้างตัวแทน ASCII แบบศิลปะที่เรียบง่ายอย่างมากตลอดไป มันจะใช้ตัวเลขสองตัวเป็นอินพุตในรูปแบบใด ๆ ที่คุณต้องการ: เป็นรายการเป็นอาร์กิวเมนต์สำหรับฟังก์ชันบน stdin เป็นต้น
- ช่วงเวลาทศนิยม
I
ในหน่วยวินาทีระหว่าง 0.0 ถึง 1.0 (รวม) - ระดับการซูม
Z
เป็นจำนวนเต็มตั้งแต่ 1 ถึง 64 (รวม)
รหัสของคุณจะพิมพ์หนึ่งบรรทัดไปยัง stdout หรือเทียบเท่าทุกI
วินาทีสร้างเอาต์พุตไม่สิ้นสุดที่มีลักษณะคล้ายนี้ (สำหรับระดับการซูม 4):
A
T-----a
G-------c
G-----c
g
t-----A
a-------T
c-----G
T
A-----t
C-------g
...
โดยเฉพาะการเป็นตัวแทนของดีเอ็นเอของเราคือคู่ของคลื่นไซน์เชื่อมต่อกันด้วยยัติภังค์หนึ่งประกอบด้วยตัวอักษรa
, c
, g
และt
อื่น ๆ ของตัวละครA
, C
, และG
T
หากx
เป็นจำนวน 0 ที่จัดทำดัชนีของบรรทัดที่เรากำลังพิมพ์อยู่ตำแหน่ง 0 ตามของตัวละครในคลื่นตัวพิมพ์เล็กจะได้รับจาก(sin(πx / Z) + 1) * Z
และในคลื่นตัวพิมพ์ใหญ่จะได้รับจาก(-sin(πx / Z) + 1) * Z
ทั้งสองโค้งมน (ไม่ปูพื้น) ที่ใกล้ที่สุด จำนวนเต็ม. รายละเอียดเพิ่มเติม:
- ในกรณีที่คลื่นทั้งสองทับกันคุณต้องสลับว่าคลื่นใดที่อยู่ข้างหน้าเริ่มต้นด้วยคลื่นตัวพิมพ์ใหญ่ (เริ่มต้นด้วยคลื่นตัวพิมพ์เล็กจะทำให้เราเป็นเกลียวคู่ที่ไม่มีอยู่ !)
- กรณีที่ไม่สนใจ A จับคู่กับ T และ C เสมอจับคู่กับ G เช่นเดียวกับ DNA จริง คู่ตัวเองควรได้รับการสุ่มเลือกด้วยการกระจายแบบฟอร์มที่เป็นไปได้ทั้งสี่ ไม่สำคัญว่าการเลือกคู่จะเหมือนหรือต่างกันในการรันต่อเนื่องของรหัสของคุณ คุณภาพทางสถิติของตัวเลือกแบบสุ่มของคุณไม่ใช่ปัญหาตราบใดที่เอาต์พุตไม่มีรูปแบบที่ชัดเจนและช่วงเวลาอย่างน้อยพันล้าน (ข้อผิดพลาดPRNGsเช่นRANDUนั้นดี)
- คุณต้องไม่มีช่องว่างต่อท้ายหรือวางแผ่นทุกบรรทัดไปยังตำแหน่งสูงสุดของคลื่นที่ระดับการซูมนั้น (ในตัวอย่างด้านบนอักขระเก้าตัว) ระดับการซูม 1 อาจมีพื้นที่ต่อท้ายเพิ่มเติมหนึ่งช่องสำหรับเหตุผลทางคณิตศาสตร์
เนื่องจาก DNA มีขนาดเล็กรหัสของคุณจะต้องสั้นที่สุด
ตัวอย่างเพิ่มเติม:
ระดับการซูม 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
...
ระดับการซูม 2:
A
T---a
c
g---C
G
A---t
c
a---T
...
ระดับการซูม 1 (สังเกตพื้นที่นำ):
G
a
C
t
...