using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DNA_Bases
{
public class Program
{
private static Dictionary<char, char> bases;
private static Dictionary<string, string> codons;
private static string originalString;
private static string flippedString;
private static string proteinString;
public static void Main(string[] args)
{
originalString = Console.ReadLine();
SetupDictionaries();
foreach (char dnaBase in originalString)
{
flippedString += bases[dnaBase];
}
for (int i = 0; i < originalString.Length; i += 3)
{
string codon = originalString.Substring(i, 3);
proteinString += codons[codon];
if (codons[codon] != "STOP")
{
proteinString += " ";
}
}
Console.WriteLine(originalString);
Console.WriteLine(flippedString);
Console.WriteLine(proteinString);
}
private static void SetupDictionaries()
{
bases = new Dictionary<char, char>()
{
{'A', 'T'},
{'T', 'A'},
{'C', 'G'},
{'G', 'C'}
};
codons = new Dictionary<string, string>()
{
{"TTT", "Phe"},
{"TTC", "Phe"},
{"TTA", "Leu"},
{"TTG", "Leu"},
{"CTT", "Leu"},
{"CTC", "Leu"},
{"CTA", "Leu"},
{"CTG", "Leu"},
{"ATT", "Ile"},
{"ATC", "Ile"},
{"ATA", "Ile"},
{"ATG", "Met"},
{"GTT", "Val"},
{"GTC", "Val"},
{"GTA", "Val"},
{"GTG", "Val"},
{"TCT", "Ser"},
{"TCC", "Ser"},
{"TCA", "Ser"},
{"TCG", "Ser"},
{"CCT", "Pro"},
{"CCC", "Pro"},
{"CCA", "Pro"},
{"CCG", "Pro"},
{"ACT", "Thr"},
{"ACC", "Thr"},
{"ACA", "Thr"},
{"ACG", "Thr"},
{"GCT", "Ala"},
{"GCC", "Ala"},
{"GCA", "Ala"},
{"GCG", "Ala"},
{"TAT", "Tyr"},
{"TAC", "Tyr"},
{"TAA", "STOP"},
{"TAG", "STOP"},
{"CAT", "His"},
{"CAC", "His"},
{"CAA", "Gln"},
{"CAG", "Gln"},
{"AAT", "Asn"},
{"AAC", "Asn"},
{"AAA", "Lys"},
{"AAG", "Lys"},
{"GAT", "Asp"},
{"GAC", "Asp"},
{"GAA", "Glu"},
{"GAG", "Glu"},
{"TGT", "Cys"},
{"TGC", "Cys"},
{"TGA", "STOP"},
{"TGG", "Trp"},
{"CGT", "Arg"},
{"CGC", "Arg"},
{"CGA", "Arg"},
{"CGG", "Arg"},
{"AGT", "Ser"},
{"AGC", "Ser"},
{"AGA", "Arg"},
{"AGG", "Arg"},
{"GGT", "Gly"},
{"GGC", "Gly"},
{"GGA", "Gly"},
{"GGG", "Gly"}
};
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0Owp1c2luZyBTeXN0ZW0uVGhyZWFkaW5nLlRhc2tzOwoKbmFtZXNwYWNlIEROQV9CYXNlcwp7CiAgICBwdWJsaWMgY2xhc3MgUHJvZ3JhbQogICAgewogICAgICAgIHByaXZhdGUgc3RhdGljIERpY3Rpb25hcnk8Y2hhciwgY2hhcj4gYmFzZXM7CiAgICAgICAgcHJpdmF0ZSBzdGF0aWMgRGljdGlvbmFyeTxzdHJpbmcsIHN0cmluZz4gY29kb25zOwogICAgICAgIHByaXZhdGUgc3RhdGljIHN0cmluZyBvcmlnaW5hbFN0cmluZzsKICAgICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgZmxpcHBlZFN0cmluZzsKICAgICAgICBwcml2YXRlIHN0YXRpYyBzdHJpbmcgcHJvdGVpblN0cmluZzsKCiAgICAgICAgcHVibGljIHN0YXRpYyB2b2lkIE1haW4oc3RyaW5nW10gYXJncykKICAgICAgICB7CiAgICAgICAgICAgIG9yaWdpbmFsU3RyaW5nID0gQ29uc29sZS5SZWFkTGluZSgpOwogICAgICAgICAgICBTZXR1cERpY3Rpb25hcmllcygpOwoKICAgICAgICAgICAgZm9yZWFjaCAoY2hhciBkbmFCYXNlIGluIG9yaWdpbmFsU3RyaW5nKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBmbGlwcGVkU3RyaW5nICs9IGJhc2VzW2RuYUJhc2VdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG9yaWdpbmFsU3RyaW5nLkxlbmd0aDsgaSArPSAzKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBzdHJpbmcgY29kb24gPSBvcmlnaW5hbFN0cmluZy5TdWJzdHJpbmcoaSwgMyk7CgogICAgICAgICAgICAgICAgcHJvdGVpblN0cmluZyArPSBjb2RvbnNbY29kb25dOwogICAgICAgICAgICAgICAgaWYgKGNvZG9uc1tjb2Rvbl0gIT0gIlNUT1AiKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIHByb3RlaW5TdHJpbmcgKz0gIiAiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShvcmlnaW5hbFN0cmluZyk7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKGZsaXBwZWRTdHJpbmcpOwogICAgICAgICAgICBDb25zb2xlLldyaXRlTGluZShwcm90ZWluU3RyaW5nKTsKICAgICAgICB9CgogICAgICAgIHByaXZhdGUgc3RhdGljIHZvaWQgU2V0dXBEaWN0aW9uYXJpZXMoKQogICAgICAgIHsKICAgICAgICAgICAgYmFzZXMgPSBuZXcgRGljdGlvbmFyeTxjaGFyLCBjaGFyPigpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHsnQScsICdUJ30sCiAgICAgICAgICAgICAgICB7J1QnLCAnQSd9LAogICAgICAgICAgICAgICAgeydDJywgJ0cnfSwKICAgICAgICAgICAgICAgIHsnRycsICdDJ30KICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGNvZG9ucyA9IG5ldyBEaWN0aW9uYXJ5PHN0cmluZywgc3RyaW5nPigpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIHsiVFRUIiwgIlBoZSJ9LAogICAgICAgICAgICAgICAgeyJUVEMiLCAiUGhlIn0sCiAgICAgICAgICAgICAgICB7IlRUQSIsICJMZXUifSwKICAgICAgICAgICAgICAgIHsiVFRHIiwgIkxldSJ9LAogICAgICAgICAgICAgICAgeyJDVFQiLCAiTGV1In0sCiAgICAgICAgICAgICAgICB7IkNUQyIsICJMZXUifSwKICAgICAgICAgICAgICAgIHsiQ1RBIiwgIkxldSJ9LAogICAgICAgICAgICAgICAgeyJDVEciLCAiTGV1In0sCiAgICAgICAgICAgICAgICB7IkFUVCIsICJJbGUifSwKICAgICAgICAgICAgICAgIHsiQVRDIiwgIklsZSJ9LAogICAgICAgICAgICAgICAgeyJBVEEiLCAiSWxlIn0sCiAgICAgICAgICAgICAgICB7IkFURyIsICJNZXQifSwKICAgICAgICAgICAgICAgIHsiR1RUIiwgIlZhbCJ9LAogICAgICAgICAgICAgICAgeyJHVEMiLCAiVmFsIn0sCiAgICAgICAgICAgICAgICB7IkdUQSIsICJWYWwifSwKICAgICAgICAgICAgICAgIHsiR1RHIiwgIlZhbCJ9LAogICAgICAgICAgICAgICAgeyJUQ1QiLCAiU2VyIn0sCiAgICAgICAgICAgICAgICB7IlRDQyIsICJTZXIifSwKICAgICAgICAgICAgICAgIHsiVENBIiwgIlNlciJ9LAogICAgICAgICAgICAgICAgeyJUQ0ciLCAiU2VyIn0sCiAgICAgICAgICAgICAgICB7IkNDVCIsICJQcm8ifSwKICAgICAgICAgICAgICAgIHsiQ0NDIiwgIlBybyJ9LAogICAgICAgICAgICAgICAgeyJDQ0EiLCAiUHJvIn0sCiAgICAgICAgICAgICAgICB7IkNDRyIsICJQcm8ifSwKICAgICAgICAgICAgICAgIHsiQUNUIiwgIlRociJ9LAogICAgICAgICAgICAgICAgeyJBQ0MiLCAiVGhyIn0sCiAgICAgICAgICAgICAgICB7IkFDQSIsICJUaHIifSwKICAgICAgICAgICAgICAgIHsiQUNHIiwgIlRociJ9LAogICAgICAgICAgICAgICAgeyJHQ1QiLCAiQWxhIn0sCiAgICAgICAgICAgICAgICB7IkdDQyIsICJBbGEifSwKICAgICAgICAgICAgICAgIHsiR0NBIiwgIkFsYSJ9LAogICAgICAgICAgICAgICAgeyJHQ0ciLCAiQWxhIn0sCiAgICAgICAgICAgICAgICB7IlRBVCIsICJUeXIifSwKICAgICAgICAgICAgICAgIHsiVEFDIiwgIlR5ciJ9LAogICAgICAgICAgICAgICAgeyJUQUEiLCAiU1RPUCJ9LAogICAgICAgICAgICAgICAgeyJUQUciLCAiU1RPUCJ9LAogICAgICAgICAgICAgICAgeyJDQVQiLCAiSGlzIn0sCiAgICAgICAgICAgICAgICB7IkNBQyIsICJIaXMifSwKICAgICAgICAgICAgICAgIHsiQ0FBIiwgIkdsbiJ9LAogICAgICAgICAgICAgICAgeyJDQUciLCAiR2xuIn0sCiAgICAgICAgICAgICAgICB7IkFBVCIsICJBc24ifSwKICAgICAgICAgICAgICAgIHsiQUFDIiwgIkFzbiJ9LAogICAgICAgICAgICAgICAgeyJBQUEiLCAiTHlzIn0sCiAgICAgICAgICAgICAgICB7IkFBRyIsICJMeXMifSwKICAgICAgICAgICAgICAgIHsiR0FUIiwgIkFzcCJ9LAogICAgICAgICAgICAgICAgeyJHQUMiLCAiQXNwIn0sCiAgICAgICAgICAgICAgICB7IkdBQSIsICJHbHUifSwKICAgICAgICAgICAgICAgIHsiR0FHIiwgIkdsdSJ9LAogICAgICAgICAgICAgICAgeyJUR1QiLCAiQ3lzIn0sCiAgICAgICAgICAgICAgICB7IlRHQyIsICJDeXMifSwKICAgICAgICAgICAgICAgIHsiVEdBIiwgIlNUT1AifSwKICAgICAgICAgICAgICAgIHsiVEdHIiwgIlRycCJ9LAogICAgICAgICAgICAgICAgeyJDR1QiLCAiQXJnIn0sCiAgICAgICAgICAgICAgICB7IkNHQyIsICJBcmcifSwKICAgICAgICAgICAgICAgIHsiQ0dBIiwgIkFyZyJ9LAogICAgICAgICAgICAgICAgeyJDR0ciLCAiQXJnIn0sCiAgICAgICAgICAgICAgICB7IkFHVCIsICJTZXIifSwKICAgICAgICAgICAgICAgIHsiQUdDIiwgIlNlciJ9LAogICAgICAgICAgICAgICAgeyJBR0EiLCAiQXJnIn0sCiAgICAgICAgICAgICAgICB7IkFHRyIsICJBcmcifSwKICAgICAgICAgICAgICAgIHsiR0dUIiwgIkdseSJ9LAogICAgICAgICAgICAgICAgeyJHR0MiLCAiR2x5In0sCiAgICAgICAgICAgICAgICB7IkdHQSIsICJHbHkifSwKICAgICAgICAgICAgICAgIHsiR0dHIiwgIkdseSJ9CiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQp9