summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2012-11-16 20:58:59 -0600
committerJesse Luehrs <doy@tozt.net>2012-11-16 20:58:59 -0600
commit3fc0ef8d9e271ebc5e34e28972d4ed646833623a (patch)
tree677a912ce3397e27def1a79573edd4ed50e29530
parentf95eb52ac418ed3d4f1f2b34ba946e8081c7fa34 (diff)
downloadrosalind-3fc0ef8d9e271ebc5e34e28972d4ed646833623a.tar.gz
rosalind-3fc0ef8d9e271ebc5e34e28972d4ed646833623a.zip
another solution
-rw-r--r--SPEC.pl43
1 files changed, 43 insertions, 0 deletions
diff --git a/SPEC.pl b/SPEC.pl
new file mode 100644
index 0000000..99ae1b9
--- /dev/null
+++ b/SPEC.pl
@@ -0,0 +1,43 @@
+#!/usr/bin/env perl
+use strict;
+use warnings;
+use 5.016;
+
+my %mass = qw(
+ A 71.03711
+ C 103.00919
+ D 115.02694
+ E 129.04259
+ F 147.06841
+ G 57.02146
+ H 137.05891
+ I 113.08406
+ K 128.09496
+ L 113.08406
+ M 131.04049
+ N 114.04293
+ P 97.05276
+ Q 128.05858
+ R 156.10111
+ S 87.03203
+ T 101.04768
+ V 99.06841
+ W 186.07931
+ Y 163.06333
+);
+
+my %protein = map {
+ val($mass{$_}) - 1 => $_,
+ val($mass{$_}) => $_,
+ val($mass{$_}) + 1 => $_,
+} keys %mass;
+
+chomp(my $prev = <>);
+while (<>) {
+ chomp;
+ my $diff = val($_) - val($prev);
+ print $protein{$diff};
+ $prev = $_;
+}
+
+sub val { int($_[0] * 10000 + 0.5) }