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
a
is mountainous. - If
S
is a mountainous string anda
is a character, thenaSa
is mountainous, where juxtaposition represents string concatenation. - If
aSa
andaTa
are mountainous strings, thenaSaTa
is 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.
aaa
would be good, where the same character needs to be used on multiple levels. \$\endgroup\$wasitacaroraratisaw
? It seems mountanous to me \$\endgroup\$wasitacaroraratisaw
is indeed mountainous AFAICT \$\endgroup\$aaa
make that not work. \$\endgroup\$