#!/usr/bin/env perl use strict; use warnings; use 5.016; use List::Util 'reduce'; our ($a, $b); my %map = qw( UUU F CUU L AUU I GUU V UUC F CUC L AUC I GUC V UUA L CUA L AUA I GUA V UUG L CUG L AUG M GUG V UCU S CCU P ACU T GCU A UCC S CCC P ACC T GCC A UCA S CCA P ACA T GCA A UCG S CCG P ACG T GCG A UAU Y CAU H AAU N GAU D UAC Y CAC H AAC N GAC D UAA Stop CAA Q AAA K GAA E UAG Stop CAG Q AAG K GAG E UGU C CGU R AGU S GGU G UGC C CGC R AGC S GGC G UGA Stop CGA R AGA R GGA G UGG W CGG R AGG R GGG G ); my %freq; for my $codon (keys %map) { $freq{$map{$codon}}++; } chomp(my $input = <>); say $freq{Stop} * reduce { $a * $b } map { $freq{$_} } split '', $input;