Sha256: 8582239144849eb56cbc62b55b734e42099b460eda771ac904de6d153ea54abe
Contents?: true
Size: 762 Bytes
Versions: 20
Compression:
Stored size: 762 Bytes
Contents
module rna_transcription; import std.exception; import std.regex; import std.string; immutable dchar[dchar] rnaTransTable; static this() { rnaTransTable = [ 'C': 'G', 'G': 'C', 'T': 'A', 'A': 'U']; } enum dnaRegex = regex(r"^[CGTA]*$"); string dnaComplement(string dna) { enforce(dna.matchFirst(dnaRegex), "Invalid DNA string"); return dna.translate(rnaTransTable); } unittest { assert(dnaComplement("C") == "G"); assert(dnaComplement("G") == "C"); assert(dnaComplement("T") == "A"); assert(dnaComplement("A") == "U"); assert(dnaComplement("ACGTGGTCTTAA") == "UGCACCAGAAUU"); assertThrown(dnaComplement("U")); assertThrown(dnaComplement("XXX")); assertThrown(dnaComplement("ACGTXXXCTTAA")); }
Version data entries
20 entries across 20 versions & 1 rubygems