Транслюйте послідовності РНК у білки.
Ланцюги РНК складаються з послідовностей із трьох нуклеотидів, які називаються кодонами. Кожен кодон відповідає амінокислоті. Коли вони зʼєднуються, ці амінокислоти утворюють білок.
У реальному світі існує 64 кодони, які, своєю чергою, відповідають 20 амінокислотам. Однак у цій вправі ми використаємо лише кілька з можливих 64. Вони наведені нижче:
| Кодон | Амінокислота |
|---|---|
| AUG | Methionine |
| UUU, UUC | Phenylalanine |
| UUA, UUG | Leucine |
| UCU, UCC, UCA, UCG | Serine |
| UAU, UAC | Tyrosine |
| UGU, UGC | Cysteine |
| UGG | Tryptophan |
| UAA, UAG, UGA | STOP |
Наприклад, послідовність РНК «AUGUUUUCU» має три кодони: «AUG», «UUU» й «UCU». Вони відповідають Methionine, Phenylalanine та Serine.
З наведеної вище таблиці видно, що є три кодони «STOP». Якщо трапиться будь-який із цих кодонів, проігноруйте решту послідовності, адже білок завершено.
Наприклад, «AUGUUUUCUUAAAUG» містить кодон «STOP» («UAA»). Щойно ми досягаємо цієї точки, ми припиняємо обробку. Тому ми розглядаємо лише частину перед ним (тобто «AUGUUUUCU»), а не будь-які подальші кодони після нього (тобто «AUG»).
Дізнайтеся більше про трансляцію білків у Вікіпедії.
Байти 1024-1279 лінійної памʼяті зарезервовано для вхідного рядка тексту (англ. string).
За потреби вхідний рядок тексту можна змінити на місці.
Кодони передаються зʼєднаними, без доповнення, як рядок тексту.
Послідовність білків виводиться як рядок тексту, завершений нульовим символом, із символом нового рядка після кожного білка.
Приклад вихідних даних: "Methionine\nPhenylalanine\nSerine\n"
Якщо вхідні дані некоректні, виводиться порожній рядок тексту.
Зареєструйтеся на Exercism, щоб вивчати й опановувати WebAssembly, а також 87 вправ та справжнє наставництво від людей, і все це безкоштовно.
Розгляньмо 11 різних способів розвʼязати цю вправу: імперативні підходи, функціональні ідеї на кшталт зіставлення зі зразком, рекурсію та функції вищого порядку, а також трохи низькорівневого коду на C++ та Assembly.