RNAはDNAと同様に、遺伝情報をコードする細胞に見られる分子です。これはヌクレオチドで構成され、アデニン(A)、シトシン(C)、グアニン(G)およびウラシル(U)の塩基で表されます。* コドンは3つのヌクレオチドのシーケンスです。
タンパク質は、毛や爪に見られるケラチンや血球に酸素を運ぶヘモグロビンなど、膨大な機能を果たす大きな分子です。それらは、RNA分子のコドンとしてコード化されるアミノ酸で構成されています。異なるコドンが同じアミノ酸をエンコードする場合があります。通常、各アミノ酸は1文字で表されます。たとえば、Hはヒスチジンを表します。
のシーケンスが与えられた場合ACGU
、対応するタンパク質文字列に変換できますか?
* DNAはACGTで構成され、Tはチミンです。DNAからRNAへの転写中、チミンはウラシルに置き換えられます。
入力
入力はACGU
、大文字の文字のみで構成される単一の文字列になります。このチャレンジのために、関数または完全なプログラムを作成できます。
出力
文字列を印刷または返すことで出力することを選択できます(後者の選択は、関数の場合にのみ使用可能です)。
翻訳は、開始コドン(AUG
で表されるM
)で始まり、停止コドン(UAA
、UAG
またはのいずれかUGA
で表される*
)で終了する必要があります。入力が無効である可能性がある4つのケースがあります。
- 入力が開始コドンで始まっていない
- 入力が終止コドンで終わらない
- 入力の長さが3の倍数ではありません
- 入力には、終了以外の場所に停止コドンが含まれています
これらのすべての場合に、Error
出力する必要があります。停止コドンとは異なり、開始コドンは文字列の開始後に表示される場合があることに注意してください。
それ以外の場合は、次のRNAコドンテーブルを使用して、各コドンをそれぞれのアミノ酸に変換する必要があります。
* 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
...そして翻訳された文字列を出力します。
例
無効なケース:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
有効なケース:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
編集:テストケースを追加しました
得点
これはコードゴルフであるため、最小バイトのコードが勝ちます。
注:私は分子生物学の専門家ではないので、何かを間違えた場合はお気軽に修正してください:)
M
で終わることをテストするためのいくつかのアプローチを破るので、有用なテストケースになります*
。