summary refs log tree commit diff
path: root/src/test/bench/99bob-simple.rs
blob: 6d8a17cc93218a5b47c5eb39e11106965d30bc73 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52


/* -*- mode::rust;indent-tabs-mode::nil -*-
 * Implementation of 99 Bottles of Beer
 * http://99-bottles-of-beer.net/
 */
use std;
import int;
import str;

fn b1() -> str { ret "# of beer on the wall, # of beer."; }

fn b2() -> str {
    ret "Take one down and pass it around, # of beer on the wall.";
}

fn b7() -> str {
    ret "No more bottles of beer on the wall, no more bottles of beer.";
}

fn b8() -> str {
    ret "Go to the store and buy some more, # of beer on the wall.";
}

fn sub(t: str, n: int) -> str {
    let b: str = "";
    let i: uint = 0u;
    let ns: str;
    alt n {
      0 { ns = "no more bottles"; }
      1 { ns = "1 bottle"; }
      _ { ns = int::to_str(n, 10u) + " bottles"; }
    }
    while i < str::byte_len(t) {
        if t[i] == '#' as u8 { b += ns; } else { str::push_byte(b, t[i]); }
        i += 1u;
    }
    ret b;
}


/* Straightforward counter */
fn main() {
    let n: int = 99;
    while n > 0 {
        log(debug, sub(b1(), n));
        log(debug, sub(b2(), n - 1));
        #debug(""); n -= 1;
    }
    log(debug, b7());
    log(debug, sub(b8(), 99));
}