stevenrwalter

sumsequence coding dojo

Jan 24th, 2014
194
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. extern mod extra;
  2. extern mod std;
  3.  
  4. type Substr = (uint, uint);
  5.  
  6. fn sumsequence (s: &str, start: uint) -> ~[Substr] {
  7.     let mut acc = ~[];
  8.     let mut sum = 0;
  9.  
  10.     for i in range(start, s.len()) {
  11.         let val = from_str(s.slice(i,i+1)).unwrap();
  12.  
  13.         if sum == val {
  14.             acc.push((start, i+1));
  15.         }
  16.         sum += val;
  17.         if sum > 9 {
  18.             break;
  19.         }
  20.     }
  21.  
  22.     acc
  23. }
  24.  
  25. fn main () {
  26.     //let s = "87456481848451713265785181841515124617521496471297469154148163548464541124";
  27.     let raw_input = std::io::stdin().read_to_str();
  28.     let input = extra::arc::Arc::new(raw_input);
  29.     let mut all_results = ~[];
  30.    
  31.     for i in range(0, input.get().len()) {
  32.         let clone = input.clone();
  33.         let result = do extra::future::Future::spawn { sumsequence(*clone.get(), i) };
  34.         all_results.push(result);
  35.     }
  36.     for results in all_results.mut_iter() {
  37.         for r in results.get_ref().iter() {
  38.             let &(start, end) = r;
  39.             println(input.get().slice(start, end));
  40.         }
  41.     }
  42. }
Advertisement
Add Comment
Please, Sign In to add comment