El ARN , como el ADN, es una molécula que se encuentra en las células que codifican la información genética. Consiste en nucleótidos , que están representados por las bases adenina (A), citosina (C), guanina (G) y uracilo (U). * Un codón es una secuencia de tres nucleótidos.
Las proteínas son moléculas grandes que realizan una amplia gama de funciones, como la queratina que se encuentra en el cabello y las uñas y la hemoglobina que transporta oxígeno en las células sanguíneas. Están formados por aminoácidos , que están codificados como codones en las moléculas de ARN. A veces, codones diferentes pueden codificar para el mismo aminoácido. Cada aminoácido está comúnmente representado por una sola letra, por ejemplo, H significa histidina.
Dada una secuencia de ACGU
, ¿puedes traducirla a la cadena de proteínas correspondiente?
* El ADN consiste en ACGT, donde la T es timina. Durante la transcripción de ADN a ARN, la timina es reemplazada por uracilo.
Entrada
La entrada será una sola cadena que constará solo de los caracteres ACGU
en mayúscula. Puede escribir una función o un programa completo para este desafío.
Salida
Puede elegir imprimir mediante la impresión o la devolución de una cadena (la última opción solo está disponible en el caso de una función).
La traducción debe comenzar en un codón de inicio ( AUG
, representado como M
) y finalizar en un codón de detención (uno de UAA
, UAG
o UGA
, representado como *
). Hay cuatro casos donde la entrada puede ser inválida:
- La entrada no comienza con un codón de inicio
- La entrada no termina con un codón de parada
- La longitud de la entrada no es múltiplo de 3
- La entrada contiene un codón de parada en otro lugar que no sea al final
En todos estos casos, se Error
debe generar. Tenga en cuenta que, a diferencia de los codones de detención, los codones de inicio pueden aparecer después del inicio de la cadena.
De lo contrario, debe convertir cada codón en su aminoácido respectivo a través de la siguiente tabla de codones de ARN :
* 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
... y genera la cadena traducida.
Ejemplos
Casos inválidos:
<empty string> -> Error
AUG -> Error
UAA -> Error
AUGCUAG -> Error
AAAAAAA -> Error
GGGCACUAG -> Error
AUGAACGGA -> Error
AUGUAGUGA -> Error
AUGUUUGUUCCGUCGAAAUACCUAUGAACACGCUAA -> Error
Casos válidos:
AUGUGA -> M*
AUGAGGUGUAGCUGA -> MRCS*
AUGGGUGAGAAUGAAACGAUUUGCAGUUAA -> MGENETICS*
AUGCCAGUCGCACGAUUAGUUCACACGCUCUUGUAA -> MPVARLVHTLL*
AUGCUGCGGUCCUCGCAUCUAGCGUUGUGGUUAGGGUGUGUAACUUCGAGAACAGUGAGUCCCGUACCAGGUAGCAUAAUGCGAGCAAUGUCGUACGAUUCAUAG -> MLRSSHLALWLGCVTSRTVSPVPGSIMRAMSYDS*
AUGAAAAACAAGAAUACAACCACGACUAGAAGCAGGAGUAUAAUCAUGAUUCAACACCAGCAUCCACCCCCGCCUCGACGCCGGCGUCUACUCCUGCUUGAAGACGAGGAUGCAGCCGCGGCUGGAGGCGGGGGUGUAGUCGUGGUUUACUAUUCAUCCUCGUCUUGCUGGUGUUUAUUCUUGUUUUAA -> MKNKNTTTTRSRSIIMIQHQHPPPPRRRRLLLLEDEDAAAAGGGGVVVVYYSSSSCWCLFLF*
Editar: se agregaron más casos de prueba
Puntuación
Este es el código de golf, por lo que gana el código en la menor cantidad de bytes.
Nota: No soy un experto en biología molecular, así que siéntete libre de corregirme si he expresado algo incorrecto :)
M
y termina con *
.