DNA 와 같은 RNA 는 유전 정보를 암호화하는 세포에서 발견되는 분자입니다. 염기는 아데닌 (A), 사이토 신 (C), 구아닌 (G) 및 우라실 (U)로 표시되는 뉴클레오티드 로 구성됩니다 . * 코돈 은 3 개의 뉴클레오티드 시퀀스입니다.
단백질 은 모발과 손톱에서 발견되는 각질 및 혈액 세포에서 산소를 운반하는 헤모글로빈과 같은 광범위한 기능을 수행하는 큰 분자입니다. 그들은 아미노산으로 구성 되어 있으며 RNA 분자에서 코돈으로 인코딩됩니다. 때때로 다른 코돈이 동일한 아미노산을 암호화 할 수 있습니다. 각 아미노산은 일반적으로 단일 문자로 표시됩니다. 예를 들어 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
하고 끝나는 테스트에 대한 일부 접근 방식을 중단하므로 유용한 테스트 사례 가됩니다 *
.