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.
- Any single character
Sis a mountainous string and
ais a character, then
aSais mountainous, where juxtaposition represents string concatenation.
aTaare mountainous strings, then
aSaTais a mountainous string. Note that this rule implies that this pattern holds for any number of repetitions. (i.e.
aSaTaUaVaWa... are all mountainous.)
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
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
- 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.