Mã của bạn sẽ tạo ra một đại diện DNA nghệ thuật ASCII rất đơn giản, mãi mãi. Nó sẽ lấy hai số làm đầu vào theo bất kỳ định dạng nào bạn muốn: làm danh sách, làm đối số cho hàm, trên stdin, v.v.
- Một khoảng thời gian trôi nổi tính
I
bằng giây giữa 0,0 và 1,0 (đã bao gồm) - Mức thu phóng
Z
dưới dạng số nguyên từ 1 đến 64 (đã bao gồm)
Mã của bạn sẽ in một dòng thành thiết bị xuất chuẩn hoặc tương đương mỗi I
giây, tạo ra một đầu ra vô hạn trông giống như thế này (đối với mức thu phóng 4):
A
T-----a
G-------c
G-----c
g
t-----A
a-------T
c-----G
T
A-----t
C-------g
...
Cụ thể, đại diện của chúng ta về DNA là một cặp sóng sin nối với nhau bằng dấu gạch nối, bao gồm một trong những nhân vật a
, c
, g
, và t
, người kia trong những nhân vật A
, C
, G
, và T
. Nếu x
là số 0 được lập chỉ mục của dòng chúng tôi hiện đang in, vị trí dựa trên 0 của ký tự trong sóng chữ thường được đưa ra (sin(πx / Z) + 1) * Z
và trong sóng chữ hoa được đưa ra bởi (-sin(πx / Z) + 1) * Z
, cả hai được làm tròn (không được thả nổi) đến gần nhất số nguyên. Biết thêm chi tiết:
- Trong trường hợp hai sóng trùng nhau, bạn cần xen kẽ sóng nào ở phía trước, bắt đầu bằng sóng chữ hoa. (Bắt đầu với sóng chữ thường sẽ cho chúng ta một chuỗi xoắn kép không tồn tại !)
- Bỏ qua trường hợp, A luôn ghép với T và C luôn ghép với G, như trong DNA thực. Các cặp nên được chọn ngẫu nhiên với phân phối đồng đều theo bốn khả năng. Không có vấn đề gì nếu sự lựa chọn của các cặp giống nhau hoặc khác nhau trên các lần chạy mã liên tiếp của bạn. Chất lượng thống kê của các lựa chọn ngẫu nhiên của bạn không phải là vấn đề miễn là đầu ra không có mô hình rõ ràng và ít nhất là trong hàng tỷ (các PRNG thiếu sót như RANDU vẫn ổn.)
- Bạn phải không có khoảng trắng ở cuối hoặc đệm mỗi dòng đến vị trí tối đa của sóng ở mức thu phóng đó (trong ví dụ trên, chín ký tự.) Thu phóng cấp 1 có thể có một không gian theo dõi bổ sung tùy chọn vì lý do toán học.
Vì DNA nhỏ, mã của bạn sẽ cần phải càng ngắn càng tốt.
Ví dụ khác:
Thu phóng cấp 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
...
Thu phóng cấp 2:
A
T---a
c
g---C
G
A---t
c
a---T
...
Thu phóng cấp 1 (lưu ý không gian hàng đầu):
G
a
C
t
...