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 ACGU
bü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 M
bir durdurma kodonunda) ve sonunda (biri UAA
, UAG
ya 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ı Error
alı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 :)
M
bittiği test için bazı yaklaşımları kıracaktır *
.