挑战
对于这一挑战,山区字符串是一个符合语法规则的字符串,M: x(Mx)*其中在每个产品中所有x都是相同的字符。缩进后,山峰字符串可能如下所示:
A
 B
  C
   D
  C
   E
    F
   E
  C
 B
A
如您所见,从侧面看它有点像一座山。
正式定义
- 任何单个字符
a都是多山的。 - 如果
S是多山字符串,并且a是字符,aSa则为多山,其中并置表示字符串连接。 - 如果
aSa和aTa是多山的弦,那么aSaTa就是多山的弦。请注意,此规则意味着该模式适用于任意数量的重复。(即aSaTaUa,aSaTaUaVa,aSaTaUaVaWa...都是山区。) 
例子
所有奇长回文都是山区,例如:
t
 a
  c
   o
  c
 a
t
qwertytrasdfdgdsarewqjklkjq 是一个比较简单的例子:
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
规则
- 这是一个决策问题,因此,只要是正确的,一致的,明确的,并且程序在有限的时间内终止,则对true或false的任何表示都是有效的输出。确保在解决方案中说明您的输出约定。
- 在不必知道输入字符串是什么的情况下确定输出是true还是false是不容易的。注意,这并不意味着真实或虚假的输出必须是恒定的,但是出于明显的原因,“如果字符串是山区的,则打印山区字符串,如果不是山区的,则是非山区字符串”的约定出于明显的原因而被禁止。
 - 另一方面,像“为false抛出异常并为true静默退出”这样的约定以及“将单个字符打印为true以及将其他任何字符打印为false”的约定都可以。
 
 - 这是代码高尔夫,所以最短的程序会获胜。
 - 禁止出现标准漏洞。
 
wasitacaroraratisaw吗?这似乎mountanous我
                wasitacaroraratisaw确实是山区 AFAICT
                aaamake这样的情况不起作用。
                
aaa这样的测试用例会很好,需要在多个级别上使用相同的字符。