2005 Canadian Computing Competition, Stage 1
Problem J5: Bananas
The term “code monkey” is sometimes used to refer to a programmer who doesn't know much about programming. This is unfair to monkeys, because contrary to popular belief, monkeys are quite smart. They have just been misunderstood. This may be because monkeys do not speak English, but only monkey language. Your job is to help humans and monkeys understand each other by writing a monkey language dictionary. For each word that is typed in, your program must determine whether it is a valid monkey language word.
Unlike in English, spelling in monkey language is very simple. Every word in monkey language satisfies the following rules, and every word satisfying the following rules is a monkey language word.
- A monkey language word is a special type of word called an A-word, which may be optionally followed by the letter N and a monkey language word.
- An A-word is either only the single letter A, or the letter B followed by a monkey language word followed by the letter S.
Here are some examples:
- The word “A”' is a monkey language word because it is an A-word.
- The word “ANA” is a monkey language word because it is the A-word “A” followed by the letter N and the monkey language word “A”.
- The word “ANANA” is a monkey language word because it is the A-word “A” followed by the letter N and the monkey language word “ANA”.
- The word “BANANAS” is a monkey language word because it is an A-word, since it is the letter B followed by the monkey language word “ANANA” followed by the letter S.
Write a program which accepts words, one word on each line, and for each word prints YES if the word is a monkey language word, and NO if the word is not a monkey language word. The input word “X” indicates the program should terminate, and there is no output for word “X” (even though it is not a monkey word).
A ANA ANANA BANANAS BANANA X
YES YES YES YES NO
Point Value: 10
Time Limit: 2.00s
Memory Limit: 16M
Added: Oct 04, 2008
- String Manipulation
C++03, PAS, C, HASK, ASM, RUBY, PYTH2, JAVA, PHP, SCM, CAML, PERL, C#, C++11, PYTH3