RNA , DNA gibi genetik bilgiyi kodlayan hücrelerinde bulunan bir moleküldür. Adenin (A), sitozin (C), guanin (G) ve urasil (U) bazları ile temsil edilen nükleotitlerden oluşur . * Bir kodon , üç nükleotidin bir dizisidir.
Proteinler , saç ve tırnaklarda bulunan keratin ve kan hücrelerinde oksijen taşıyan hemoglobin gibi çok çeşitli işlevleri yerine getiren büyük moleküllerdir. Bunlar oluşur amino asitler , RNA moleküllerinde kodonu olarak kodlanır. Bazen aynı amino asit için farklı kodonlar kodlanabilir. Her amino asit genellikle tek bir harfle temsil edilir, örneğin H, histidin anlamına gelir.
Bir dizi verildiğinde ACGU, karşılık gelen protein dizisine çevirebilir misiniz?
* DNA, T'nin timin olduğu ACGT'den oluşur. DNA'dan RNA'ya transkripsiyon sırasında timinin yerini urasil alır.
Giriş
Girdi, yalnızca ACGUbüyük harf karakterlerden oluşan tek bir dize olacaktır . Bu zorluk için bir işlev veya tam bir program yazabilirsiniz.
Çıktı
Bir dizeyi yazdırma veya döndürme yoluyla çıktı almayı seçebilirsiniz (ikinci seçenek yalnızca bir işlev durumunda kullanılabilir).
Tercüme bir başlangıç kodonu (başlamalıdır AUG, olarak temsil Mbir durdurma kodonunda) ve sonunda (biri UAA, UAGya da UGA, olarak temsil *). Girdinin geçersiz olabileceği dört durum vardır:
- Giriş bir başlangıç kodonu ile başlamıyor
- Giriş bir durdurma kodonu ile bitmiyor
- Girişin uzunluğu 3'ün katı değil
- Giriş, sonunda başka bir yerde bir durdurma kodonu içerir
Tüm bu durumlarda çıktı Erroralınmalıdır. Durdurma kodonlarının aksine, başlatma kodonları dizenin başlamasından sonra görünebilir.
Aksi takdirde, her RNA'yı aşağıdaki RNA kodon tablosu aracılığıyla ilgili amino aside dönüştürmelisiniz :
* UAA UAG UGA
A GCU GCC GCA GCG
C UGU UGC
D GAU GAC
E GAA GAG
F UUU UUC
G GGU GGC GGA GGG
H CAU CAC
I AUU AUC AUA
K AAA AAG
L UUA UUG CUU CUC CUA CUG
M AUG
N AAU AAC
P CCU CCC CCA CCG
Q CAA CAG
R CGU CGC CGA CGG AGA AGG
S UCU UCC UCA UCG AGU AGC
T ACU ACC ACA ACG
V GUU GUC GUA GUG
W UGG
Y UAU UAC
... ve çevrilen dizeyi çıktılar.
Örnekler
Geçersiz durumlar:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
Geçerli durumlar:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
Düzenleme: Daha fazla test örneği eklendi
puanlama
Bu kod golf, bu yüzden en az bayt kod kazanır.
Not: Moleküler biyoloji konusunda uzman değilim, bu yüzden bir şey kaçırırsam beni düzeltmekten çekinmeyin :)
Mbittiği test için bazı yaklaşımları kıracaktır *.