stevenrwalter icon

sumsequence coding dojo

stevenrwalter | PRO | 01/24/14 06:04:49 PM UTC | 0 ⭐ | 158 👁️ | Never ⏰ | []
C |

930 B

|

None

|

0 👍

/

0 👎

extern mod extra;
extern mod std;
 
type Substr = (uint, uint);
 
fn sumsequence (s: &str, start: uint) -> ~[Substr] {
    let mut acc = ~[];
    let mut sum = 0;
 
    for i in range(start, s.len()) {
        let val = from_str(s.slice(i,i+1)).unwrap();
 
        if sum == val {
            acc.push((start, i+1));
        }
        sum += val;
        if sum > 9 {
            break;
        }
    }
 
    acc
}
 
fn main () {
    //let s = "87456481848451713265785181841515124617521496471297469154148163548464541124";
    let raw_input = std::io::stdin().read_to_str();
    let input = extra::arc::Arc::new(raw_input);
    let mut all_results = ~[];
    
    for i in range(0, input.get().len()) {
        let clone = input.clone();
        let result = do extra::future::Future::spawn { sumsequence(*clone.get(), i) };
        all_results.push(result);
    }
    for results in all_results.mut_iter() {
        for r in results.get_ref().iter() {
            let &(start, end) = r;
            println(input.get().slice(start, end));
        }
    }
}

Comments