挑战
对于这一挑战,山区字符串是一个符合语法规则的字符串,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
aaa
make这样的情况不起作用。
aaa
这样的测试用例会很好,需要在多个级别上使用相同的字符。