summaryrefslogtreecommitdiffstats
path: root/REVC.rs
diff options
context:
space:
mode:
Diffstat (limited to 'REVC.rs')
-rw-r--r--REVC.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/REVC.rs b/REVC.rs
new file mode 100644
index 0000000..3c9e9e7
--- /dev/null
+++ b/REVC.rs
@@ -0,0 +1,26 @@
+use io::{stdin,println,ReaderUtil};
+
+/* really feels like there should be a more efficient way to do this */
+fn reverse(s: &str) -> ~str {
+ let mut r = ~"";
+ str::reserve(&mut r, str::len(s));
+ for str::each_char(s) |ch| {
+ str::unshift_char(&mut r, ch)
+ }
+ r
+}
+
+fn complement(ch: char) -> char {
+ match ch {
+ 'A' => 'T',
+ 'C' => 'G',
+ 'G' => 'C',
+ 'T' => 'A',
+ _ => fail ~"Unknown character found",
+ }
+}
+
+fn main() {
+ let dna = stdin().read_line();
+ println(str::map(reverse(dna), complement));
+}