View difference between Paste ID: BkwYYNgz and WBHTiwQf
SHOW: | | - or go back to the newest paste.
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 s = std::io::stdin().read_to_str();
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-
	for i in range(0, s.len()) {
30+
31-
		let clone = s.clone();
31+
	for i in range(0, input.get().len()) {
32-
		let result = do extra::future::Future::spawn { sumsequence(clone, i) };
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-
			println(s.slice(start, end));
38+
39
			println(input.get().slice(start, end));
40
		}
41
	}
42
}