Middle three digits: Difference between revisions
Content added Content deleted
(+ second D entry) |
(Add Rust) |
||
Line 303: | Line 303: | ||
middle_three_digits(0) returned: AssertionError('Need odd and >= 3 digits',) |
middle_three_digits(0) returned: AssertionError('Need odd and >= 3 digits',) |
||
>>> </lang> |
>>> </lang> |
||
=={{header|Rust}}== |
|||
<lang rust>fn middle_three_digits(x: int) -> Result<~str, ~str> { |
|||
let s = int::abs(x).to_str(); |
|||
let len = s.len(); |
|||
if len < 3 { |
|||
Err(~"Too short") |
|||
} else if len % 2 == 0 { |
|||
Err(~"Even number of digits") |
|||
} else { |
|||
Ok(s.slice(len/2 - 1, len/2 + 2)) |
|||
} |
|||
} |
|||
fn print_result(x: int) { |
|||
io::print(fmt!("middle_three_digits(%?) returned: ", x)); |
|||
match middle_three_digits(x) { |
|||
Ok(move s) => io::println(fmt!("Success, %s", s)), |
|||
Err(move s) => io::println(fmt!("Failure, %s", s)) |
|||
} |
|||
} |
|||
fn main() { |
|||
let passing = [123, 12345, 1234567, 987654321, 10001, -10001, -123, -100, 100, -12345]; |
|||
let failing = [1, 2, -1, -10, 2002, -2002, 0]; |
|||
for passing.each |i| { |
|||
print_result(*i); |
|||
} |
|||
for failing.each |i| { |
|||
print_result(*i); |
|||
} |
|||
}</lang> |
|||
Output: |
|||
<pre>middle_three_digits(123) returned: Success, 123 |
|||
middle_three_digits(12345) returned: Success, 234 |
|||
middle_three_digits(1234567) returned: Success, 345 |
|||
middle_three_digits(987654321) returned: Success, 654 |
|||
middle_three_digits(10001) returned: Success, 000 |
|||
middle_three_digits(-10001) returned: Success, 000 |
|||
middle_three_digits(-123) returned: Success, 123 |
|||
middle_three_digits(-100) returned: Success, 100 |
|||
middle_three_digits(100) returned: Success, 100 |
|||
middle_three_digits(-12345) returned: Success, 234 |
|||
middle_three_digits(1) returned: Failure, Too short |
|||
middle_three_digits(2) returned: Failure, Too short |
|||
middle_three_digits(-1) returned: Failure, Too short |
|||
middle_three_digits(-10) returned: Failure, Too short |
|||
middle_three_digits(2002) returned: Failure, Even number of digits |
|||
middle_three_digits(-2002) returned: Failure, Even number of digits |
|||
middle_three_digits(0) returned: Failure, Too short</pre> |
|||
=={{header|Vedit macro language}}== |
=={{header|Vedit macro language}}== |