Brain-Flak wird morgen ein Jahr alt! Zu Ehren des Geburtstages veranstalten wir eine Geburtstagsfeier im PPCG-Stil, auf der mehrere Benutzer Fragen zu Brain Flak stellen! Hilf uns zu feiern! :)
Brain-Flak ist eine esoterische Sprache, die ich geschrieben habe, in der alle Befehle Klammern sind und alle Klammern vollständig übereinstimmen müssen. Meine eigene Definition ausleihen :
Für die Zwecke dieser Herausforderung ist eine „Klammer“ eines dieser Zeichen:
()[]{}<>
.Ein Klammerpaar wird als "übereinstimmend" betrachtet, wenn die öffnende und schließende Klammer in der richtigen Reihenfolge sind und keine Zeichen enthalten, z
() []{}
Oder wenn jedes Unterelement in ihm auch übereinstimmt.
[()()()()] {<[]>} (()())
Unterelemente können auch mehrere Ebenen tief verschachtelt sein.
[(){<><>[()]}<>()] <[{((()))}]>
Eine Zeichenfolge wird genau dann als "vollständig zugeordnet" betrachtet, wenn:
Jedes einzelne Zeichen ist eine Klammer,
Jedes Klammerpaar hat die richtige Öffnungs- und Schließklammer in der richtigen Reihenfolge
Zur Feier des ersten Geburtstages von brain-flak geht es bei der heutigen Herausforderung darum, einen unausgeglichenen Satz von Klammern zu verwenden und zu bestimmen, welche Arten von Operationen erforderlich sind, um die Gültigkeit von brain-flak zu gewährleisten.
Zum Beispiel
((
ist es kein gültiger Brain-Flak-Code, aber wenn wir ihn anhängen))
, wird er zu einem(())
vollständig ausgeglichenen und daher gültigen Brain-Flak. Das macht diese Eingabe anhängbar .Ebenso
>}
ist es nicht gültig, aber wir können es vorher{<
machen{<>}
, was gültig ist. Das macht diese Eingabe vorzeigbar .Einige Eingaben sind etwas komplizierter. Zum Beispiel
)][({
kann nicht nur durch Anhängen oder Voranstellen gültig gemacht werden. Sie kann jedoch durch Voranstellen[(
und Anhängen gültig gemacht werden})]
. Daher kann diese Eingabe sowohl vorab als auch angehängt werden .Schließlich können einige Eingaben durch eine Kombination von Anhängen oder Voranstellen niemals zu einem gültigen Brain-Flak-Code gemacht werden. Zum Beispiel
(>
kann nie gültig gemacht werden. (Voranstellen<
schafft<(>
, und Anfügen)
erzeugt(>)
, von denen keiner gültig sind) Daher dieser Eingang weder appendable oder prependable.
Für die heutige Herausforderung müssen Sie ein Programm oder eine Funktion schreiben, die eine Reihe von Klammern verwendet und feststellt, ob es sich um eine Zeichenfolge handelt
appendable
prependable
both
neither
Sie können auswählen, welche Werte Sie für jeden Fall verwenden. Zum Beispiel ausgeben 1, 2, 3, 4
, oder 'a', 'p', 'b', 'n'
, oder 1, 'foo', 3.1415, -17
, oder was auch immer in Ordnung ist. Solange jede Ausgabe unterschiedlich und konsistent ist, ist das in Ordnung. Sie müssen jedoch eindeutig angeben, welcher Ausgang welchem Fall entspricht.
Sie können diesen Wert in einem beliebigen Format zurückgeben (z. B. von einer Funktion zurückkehren, in STDOUT drucken, Argumente ändern, in eine Datei schreiben usw.).
Sie können davon ausgehen, dass die Eingabe niemals gültig oder leer sein wird.
Beispiele
Die folgenden Eingaben können alle vorangestellt werden :
))
(((()()())))}
)>}]
()[]{}<>)
Diese sind alle anhängbar :
(({}{})
((((
([]()())(
{<<{
Dies sind alles beide :
))((
>()[(()){
>{
Und das sind beide nicht :
)(}
{(((()()()))>
[}
((((((((((>
((((((((((<>()]
Wie üblich ist dies Codegolf , daher gelten Standardlücken und die kürzeste Antwort in Bytes gewinnt!
Diese Herausforderung ist bei Brain-Flak besonders schwierig, daher zeigt maximaler Brownie auf jede Antwort, die in Brain-Flak geschrieben ist. :)
][
ist nicht anhängbar, da nichts, was Sie anhängen können, ihn gültig machen kann. Ebenso ist es nicht vorzeigbar. Es ist ... "einfügbar"! Sie können es in eine Zeichenfolge einfügen, um den gesamten gültigen Brainflak zu erstellen.
You can assume that the input will never be valid brain-flak or empty.
maximum brownie points
Ich denke, dass das Anbieten maximaler Brownie-Punkte und Cookies das Brain-Flaking dieser Herausforderung mehr als nur zu Brownie-Punkten anregen würde, da es meiner Meinung nach in keiner Sprache trivial ist, geschweige denn zu Brain-Flak. : P