Skip to content

Instantly share code, notes, and snippets.

@eevee
Created December 5, 2012 07:06
Show Gist options
  • Save eevee/4213289 to your computer and use it in GitHub Desktop.
Save eevee/4213289 to your computer and use it in GitHub Desktop.
everlang solution in rust
fn main() {
for (io::stdin() as io::ReaderUtil).each_line |line| {
for str::words_each(line) |message| {
io::print(message);
io::print(" ");
if is_valid_message(str::chars(message)) {
io::println("VALID");
}
else {
io::println("INVALID");
}
}
}
}
fn is_valid_message(message: &[char]) -> bool {
let len = message.len();
if len == 0 {
return false;
}
match message[0] {
'Z' => return is_valid_message(message.view(1, len)),
'K' | 'M' | 'P' | 'Q' => {
for uint::range(2, len - 1) |midpoint| {
if is_valid_message(message.view(1, midpoint)) &&
is_valid_message(message.view(midpoint, len)) {
return true;
}
}
return false;
}
_ => return len == 1 && 'a' <= message[0] && message[0] <= 'j',
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment