Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::char;
- struct State {
- chars: Vec<char>,
- res: String,
- }
- fn main() {
- let input = "CCGTATAAAGTAAGAAATAAAGTAAGAACTGTAGAGCGATCGTTCGTACCTTCGGCCGCAAGAGATGGAGAAATAAAGTAAGAAAGAGCTAACTAGCGCCCGCAATACAGAGATGGAGAAATAAAGTAAGAAAGAGCTAACTAGCGCCCGCAATAGAGAGATGGAGAAATAAAGTAAGAAAGAGCGCGCTCCCGTGCGATAGAGATGGAGAAATAACTTCAGTAAGAAATAAAGTAAGAAATACCCTC";
- let res: String = input.chars().fold(State {
- chars: vec![],
- res: String::new(),
- }, |state, c| {
- let mut chars = state.chars.clone();
- let mut result = state.res.clone();
- if chars.len() >= 7 {
- let mut res = 0u32;
- for (i, c) in chars.iter().enumerate() {
- let n = match c {
- 'A' => 0,
- 'C' => 1,
- 'G' => 2,
- _ => 3
- };
- res += n * 4_u32.pow(i as u32);
- }
- println!("{}", res);
- result = format!("{}{}", result, char::from_u32(res).unwrap());
- chars = vec![];
- } else {
- chars.push(c);
- }
- State {
- chars,
- res: result
- }
- }).res;
- println!("{}", res);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement