summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2013-03-08 03:04:42 -0600
committerJesse Luehrs <doy@tozt.net>2013-03-08 03:04:42 -0600
commit275fb6919260a545ca46181e297cdfe4a1880865 (patch)
treee2e3fdeb39e5b2a281bf977aafe4653d728783ff
parent91aa0faa200421e5a95fc52d20e492288dc94f31 (diff)
downloadrosalind-275fb6919260a545ca46181e297cdfe4a1880865.tar.gz
rosalind-275fb6919260a545ca46181e297cdfe4a1880865.zip
couple more rust solutions
-rw-r--r--REVC.rs26
-rw-r--r--RNA.rs12
2 files changed, 38 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));
+}
diff --git a/RNA.rs b/RNA.rs
new file mode 100644
index 0000000..30091fe
--- /dev/null
+++ b/RNA.rs
@@ -0,0 +1,12 @@
+use io::{stdin,stdout,ReaderUtil,WriterUtil};
+
+fn main() {
+ let stdout = stdout();
+ for stdin().each_char() |ch| {
+ match ch {
+ 'T' => { stdout.write_char('U') }
+ '\n' => { stdout.write_char(ch); return }
+ _ => { stdout.write_char(ch) }
+ }
+ }
+}