Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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));
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment