#homework program - prints genecode table - the triplet, the three-letter code and first 1-letter code

#arrays of bases for looping
@base = ("T","C","A","G");

#associative array - keys are triplets, values are 3-letter aa names
%genetic_code = ( "TTT", "Phe", "TTC", "Phe", "TTA", "Leu", "TTG", "Leu", 
			"TCT", "Ser", "TCC", "Ser", "TCA", "Ser", "TCG", "Ser", 
			"TAT", "Tyr", "TAC", "Tyr", "TAA", "***", "TAG", "***", 
			"TGT", "Cys", "TGC", "Cys", "TGA", "***", "TGG", "Trp", 
			"CTT", "Leu", "CTC", "Leu", "CTA", "Leu", "CTG", "Leu", 
			"CCT", "Pro", "CCC", "Pro", "CCA", "Pro", "CCG", "Pro", 
			"CAT", "His", "CAC", "His", "CAA", "Gln", "CAG", "Gln", 
			"CGT", "Arg", "CGC", "Arg", "CGA", "Arg", "CGG", "Arg", 
			"ATT", "Ile", "ATC", "Ile", "ATA", "Ile", "ATG", "Met", 
			"ACT", "Thr", "ACC", "Thr", "ACA", "Thr", "ACG", "Thr", 
			"AAT", "Asn", "AAC", "Asn", "AAA", "Lys", "AAG", "Lys", 
			"AGT", "Ser", "AGC", "Ser", "AGA", "Arg", "AGG", "Arg", 
			"GTT", "Val", "GTC", "Val", "GTA", "Val", "GTG", "Val", 
			"GCT", "Ala", "GCC", "Ala", "GCA", "Ala", "GCG", "Ala", 
			"GAT", "Asp", "GAC", "Asp", "GAA", "Glu", "GAG", "Glu", 
			"GGT", "Gly", "GGC", "Gly", "GGA", "Gly", "GGG", "Gly");

			

#associative array - keys are triplets, values single letter names 

%single_letter= ( "TTT", "(F)", "TTC", "   ", "TTA", "(L)", "TTG", "   ", 
			"TCT", "(S)", "TCC", "   ", "TCA", "   ", "TCG", "   ", 
			"TAT", "(Y)", "TAC", "   ", "TAA", "   ", "TAG", "   ", 
			"TGT", "(C)", "TGC", "   ", "TGA", "   ", "TGG", "(W)", 
			"CTT", "(L)", "CTC", "   ", "CTA", "   ", "CTG", "   ", 
			"CCT", "(P)", "CCC", "   ", "CCA", "   ", "CCG", "   ", 
			"CAT", "(H)", "CAC", "   ", "CAA", "(Q)", "CAG", "   ", 
			"CGT", "(R)", "CGC", "   ", "CGA", "   ", "CGG", "   ", 
			"ATT", "(I)", "ATC", "   ", "ATA", "   ", "ATG", "(M)", 
			"ACT", "(T)", "ACC", "   ", "ACA", "   ", "ACG", "   ", 
			"AAT", "(N)", "AAC", "   ", "AAA", "(K)", "AAG", "   ", 
			"AGT", "(S)", "AGC", "   ", "AGA", "(R)", "AGG", "   ", 
			"GTT", "(V)", "GTC", "   ", "GTA", "   ", "GTG", "   ", 
			"GCT", "(A)", "GCC", "   ", "GCA", "   ", "GCG", "   ", 
			"GAT", "(D)", "GAC", "   ", "GAA", "(E)", "GAG", "   ", 
			"GGT", "(G)", "GGC", "   ", "GGA", "   ", "GGG", "   ");

			
#print the table

print "+--------------+--------------+--------------+--------------+ \n";

foreach $b1 (@base)
	{
	foreach $b3 (@base)
		{
		print "|";		
		foreach $b2 (@base)
			{
			$triplet = "$b1$b2$b3";
			$amino_acid =  $genetic_code {"$triplet"};
			$single =  $single_letter {"$triplet"};

			print "$triplet  $amino_acid  $single |";
			#print "$triplet  $amino_acid     |";
			}
		print "\n";
		}
	print "+--------------+--------------+--------------+--------------+ \n";
	}

