Sha256: 91bfff9c037f508026ca1ad3a71fc6333d58901eb09409a722f898bdc8b6e29b
Contents?: true
Size: 1.39 KB
Versions: 105
Compression:
Stored size: 1.39 KB
Contents
enum ProteinTranslationError: Error { case invalidCodon } struct ProteinTranslation { private static func lookup(codon: String) -> String? { switch codon { case "AUG": return "Methionine" case "UUU", "UUC": return "Phenylalanine" case "UUA", "UUG": return "Leucine" case "UCU", "UCC", "UCA", "UCG": return "Serine" case "UAU", "UAC": return "Tyrosine" case "UGU", "UGC": return "Cysteine" case "UGG": return "Tryptophan" case "UAA", "UAG", "UGA": return "STOP" default: return nil } } static func translationOfCodon(_ codon: String) throws -> String { guard let protein = lookup(codon: codon) else { throw ProteinTranslationError.invalidCodon } return protein } static func translationOfRNA(_ strand: String) throws -> [String] { var strand = strand var result = [String]() while !strand.isEmpty { let codon = String(strand.characters.prefix(3)) let translation = try translationOfCodon(codon) if translation == "STOP" { return result } result.append(translation) strand = String(strand.characters.dropFirst(3)) } return result } }
Version data entries
105 entries across 105 versions & 1 rubygems