チャレンジ
この課題のために、山岳文字列は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の表現は、正しく、一貫性があり、明確であり、プログラムが有限時間で終了する限り、有効な出力です。ソリューションの出力規則を必ず明記してください。
- 入力文字列が何であるかを知らなくても、出力が真か偽かを判断するのは簡単です。これは、真実または偽の出力が一定である必要があるという意味ではないことに注意してください。ただし、「文字列が山岳で、山岳でない場合は非山岳文字列を印刷する」という規則は明らかな理由で禁止された抜け穴です。
- 一方、「falseの場合は例外をスローし、trueの場合は静かに終了する」などの規則は問題ありません。
- これはコードゴルフであるため、最短のプログラムが勝利します。
- 標準的な抜け穴は禁止されています。
wasitacaroraratisaw
?それは私には山のようです
wasitacaroraratisaw
確かにある山岳 AFAICTは
aaa
は機能しません。
aaa
同じキャラクターを複数のレベルで使用する必要があるようなテストケースが良いでしょう。