Desafio
Para esse desafio, uma cadeia montanhosa é aquela que se ajusta à regra gramatical, M: x(Mx)*
onde em cada produção, todos os x são o mesmo caractere. Quando recuado, uma cadeia montanhosa pode se parecer com isso:
A
B
C
D
C
E
F
E
C
B
A
Como você pode ver, parece um pouco com uma montanha do lado.
Definição formal
- Qualquer caractere único
a
é montanhoso. - Se
S
é uma cadeia montanhosa ea
é um caractere, entãoaSa
é montanhosa, onde a justaposição representa concatenação de cadeias. - Se
aSa
eaTa
são cadeias montanhosas, entãoaSaTa
é uma cadeia montanhosa. Observe que esta regra implica que esse padrão é válido para qualquer número de repetições. (ou sejaaSaTaUa
,aSaTaUaVa
,aSaTaUaVaWa
... são todos montanhosa.)
Exemplos
Todos os palíndromos de comprimento ímpar são montanhosos, por exemplo:
t
a
c
o
c
a
t
qwertytrasdfdgdsarewqjklkjq
é um exemplo menos trivial:
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
Saídas de exemplo
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
Regras
- Esse é um problema de decisão; portanto, qualquer representação de true ou false é válida, desde que seja correta, consistente, inequívoca e o programa seja finalizado em um período finito de tempo. Certifique-se de indicar sua convenção de saída com sua solução.
- Deve ser trivial determinar se a saída indica verdadeiro ou falso sem precisar saber qual é a sequência de entrada. Observe que isso não significa que as saídas verdadeiras ou falsas devam ser constantes; no entanto, a convenção de "imprimir uma cadeia montanhosa se a cadeia for montanhosa e uma cadeia não montanhosa se não montanhosa" é uma brecha proibida por razões óbvias.
- Por outro lado, uma convenção como "lança uma exceção para falso e sai silenciosamente para verdadeiro" seria boa, além de "imprime um único caractere para verdadeiro e qualquer outra coisa para falso"
- Isso é código de golfe, então o programa mais curto vence.
- As brechas padrão são proibidas.
wasitacaroraratisaw
? Parece montagem para mim
wasitacaroraratisaw
é realmente montanhoso AFAICT
aaa
isso não funcionam.
aaa
seria bom, onde o mesmo caractere precisa ser usado em vários níveis.