Challenge
For this challenge, a mountainous string is one that conforms to the grammar rule M: x(Mx)* where at each production, the all x's are the same character. When indented, a mountainous string might look something like this:
A B C D C E F E C B A As you can see, it looks a bit like a mountain from the side.
Formal Definition
- Any single character
ais mountainous. - If
Sis a mountainous string andais a character, thenaSais mountainous, where juxtaposition represents string concatenation. - If
aSaandaTaare mountainous strings, thenaSaTais a mountainous string. Note that this rule implies that this pattern holds for any number of repetitions. (i.e.aSaTaUa,aSaTaUaVa,aSaTaUaVaWa... are all mountainous.)
Examples
All odd-length palindromes are mountainous, for instance:
t a c o c a t qwertytrasdfdgdsarewqjklkjq is a less trivial example:
q w e r t y t r a s d f d g d s a r e w q j k l k j q Example Outputs
a ==> true aaa ==> true mom ==> true tacocat ==> true qwertytrasdfdgdsarewqjklkjq ==> true wasitacaroraratisaw ==> true abcbcbcbcba ==> true aaaaabcbbba ==> true <empty string> ==> false aa ==> false pie ==> false toohottohoot ==> false asdfdghgfdsa ==> false myhovercraftisfullofeels ==> false Rules
- This is a decision problem, so any representation of true or false is valid output as long as it is correct, consistent, unambiguous, and the program terminates in a finite amount of time. Be sure to state your output convention with your solution.
- It should be trivial to determine whether the output indicates true or false without having to know what the input string is. Note that this does not mean the truthy or falsy outputs have to be constant, however the convention of "print a mountainous string if the string is mountainous and a non-mountainous string if not mountainous" is a banned loophole for obvious reasons.
- On the other hand, a convention like "throws an exception for false and exits silently for true" would be fine, as well as "prints a single character for true and anything else for false"
- This is code golf, so the shortest program wins.
- Standard loopholes are banned.
aaawould be good, where the same character needs to be used on multiple levels. \$\endgroup\$wasitacaroraratisaw? It seems mountanous to me \$\endgroup\$wasitacaroraratisawis indeed mountainous AFAICT \$\endgroup\$aaamake that not work. \$\endgroup\$