Herausforderung
Für diese Herausforderung ist eine gebirgige Zeichenfolge eine Zeichenfolge, die der Grammatikregel entspricht, bei der M: x(Mx)*
bei jeder Produktion alle x das gleiche Zeichen sind. Wenn eine gebirgige Zeichenfolge eingerückt ist, sieht sie möglicherweise folgendermaßen aus:
A
B
C
D
C
E
F
E
C
B
A
Wie Sie sehen, sieht es von der Seite ein bisschen aus wie ein Berg.
Formale Definition
- Jedes einzelne Zeichen
a
ist bergig. - Wenn
S
es sich um eine bergige Zeichenfolge handelt und wenn es sicha
um ein Zeichen handelt, handelt es sich um eine bergige ZeichenfolgeaSa
, bei der das Nebeneinander die Verkettung der Zeichenfolgen darstellt. - Wenn
aSa
undaTa
sind bergige Saiten, dannaSaTa
ist eine bergige Saite. Beachten Sie, dass diese Regel impliziert, dass dieses Muster für eine beliebige Anzahl von Wiederholungen gilt. (dhaSaTaUa
,aSaTaUaVa
,aSaTaUaVaWa
... sind alle gebirgig.)
Beispiele
Alle ungeraden Palindrome sind bergig, zum Beispiel:
t
a
c
o
c
a
t
qwertytrasdfdgdsarewqjklkjq
ist ein weniger triviales Beispiel:
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
Beispielausgaben
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
Regeln
- Dies ist ein Entscheidungsproblem, daher ist jede Darstellung von wahr oder falsch eine gültige Ausgabe, solange sie korrekt, konsistent und eindeutig ist und das Programm in einer endlichen Zeitspanne endet. Stellen Sie sicher, dass Sie Ihre Ausgabekonvention mit Ihrer Lösung angeben.
- Es sollte trivial sein zu bestimmen, ob die Ausgabe true oder false anzeigt, ohne dass die Eingabezeichenfolge bekannt sein muss. Beachten Sie, dass dies nicht bedeutet, dass die wahren oder falschen Ausgaben konstant sein müssen. Die Konvention "Drucken einer Gebirgszeichenfolge, wenn die Zeichenfolge bergig ist, und einer nicht bergigen Zeichenfolge, wenn sie nicht bergig ist" ist jedoch aus offensichtlichen Gründen eine verbotene Lücke.
- Auf der anderen Seite wäre eine Konvention wie "wirft eine Ausnahme für falsch und beendet stillschweigend für wahr" in Ordnung, ebenso wie "druckt ein einzelnes Zeichen für wahr und alles andere für falsch".
- Dies ist Codegolf, also gewinnt das kürzeste Programm.
- Standardlücken sind verboten.
wasitacaroraratisaw
? Es scheint mir boshaft
wasitacaroraratisaw
ist in der Tat bergig AFAICT
aaa
diesem funktioniert das nicht.
aaa
wäre gut, wo der gleiche Charakter auf mehreren Ebenen verwendet werden muss.