Brain-flak a un an demain! En l'honneur de son anniversaire, nous organisons une fête d'anniversaire de style PPCG, où plusieurs utilisateurs publient des questions liées au brain-flak! Aidez-nous à célébrer! :)
Brain-flak est un langage ésotérique que j'ai écrit où toutes les commandes sont des crochets et tous les crochets doivent être entièrement mis en correspondance. Pour emprunter ma propre définition :
Aux fins de ce défi, un « support » est l' un de ces caractères:
()[]{}<>
.Une paire de crochets est considérée comme "assortie" si les crochets d'ouverture et de fermeture sont dans le bon ordre et ne contiennent aucun caractère, comme
() []{}
Ou si chaque sous-élément à l'intérieur est également mis en correspondance.
[()()()()] {<[]>} (()())
Les sous-éléments peuvent également être imbriqués plusieurs couches en profondeur.
[(){<><>[()]}<>()] <[{((()))}]>
Une chaîne est considérée comme "entièrement mise en correspondance" si et seulement si:
Chaque caractère est une parenthèse,
Chaque paire de supports a le support d'ouverture et de fermeture correct et dans le bon ordre
Pour célébrer le premier anniversaire de brain-flak, le défi d'aujourd'hui consiste à prendre un ensemble de supports déséquilibré et à déterminer les types d'opérations nécessaires pour le rendre valide.
Par exemple,
((
n'est pas un code de flak de cerveau valide, mais si nous y ajoutons))
, il devient(())
, qui est entièrement équilibré, et donc un flak de cerveau valide. Cela rend cette entrée annexable .De même,
>}
n'est pas valide, mais nous pouvons lui ajouter{<
à faire{<>}
, ce qui est valide. Cela rend cette entrée pré-disponible .Certaines entrées sont légèrement plus compliquées. Par exemple,
)][({
ne peut pas être rendu valide uniquement en ajoutant ou en ajoutant. Mais il peut être validé en ajoutant[(
et en ajoutant})]
. Par conséquent, cette entrée peut être ajoutée et ajoutée à la fois .Enfin, certaines entrées ne peuvent jamais être rendues valides comme un flak de cerveau par n'importe quelle combinaison d'ajout ou de pré-ajout. Par exemple,
(>
ne peut jamais être rendu valide. (La<
création de préfixe<(>
et la)
création de création(>)
ne sont valides ni l'une ni l'autre). Par conséquent, cette entrée n'est ni modifiable ni modifiable.
Pour le défi d'aujourd'hui, vous devez écrire un programme ou une fonction qui prend une chaîne de crochets et détermine si la chaîne est
appendable
prependable
both
neither
Vous pouvez choisir les valeurs que vous utilisez pour représenter pour chaque cas. Par exemple, la sortie 1, 2, 3, 4
, ou 'a', 'p', 'b', 'n'
, ou 1, 'foo', 3.1415, -17
, ou tout ce qui est bien. Tant que chaque sortie est distincte et cohérente , c'est bien. Vous devez cependant spécifier clairement quelle sortie correspond à quel cas.
Vous pouvez renvoyer cette valeur dans le format le plus pratique (par exemple, retour d'une fonction, impression vers STDOUT, modification des arguments, écriture dans un fichier, etc.).
Vous pouvez supposer que l'entrée ne sera jamais valide ou vide.
Exemples
Les entrées suivantes peuvent toutes être ajoutées :
))
(((()()())))}
)>}]
()[]{}<>)
Ce sont tous annexables :
(({}{})
((((
([]()())(
{<<{
Ce sont tous les deux :
))((
>()[(()){
>{
Et ce ne sont ni l'un ni l'autre :
)(}
{(((()()()))>
[}
((((((((((>
((((((((((<>()]
Comme d'habitude, il s'agit de code-golf , donc les failles standard s'appliquent et la réponse la plus courte en octets gagne!
Ce défi est particulièrement difficile en brain-flak, donc le maximum de brownie pointe vers toutes les réponses écrites en brain-flak. :)
][
est pas inscriptible, comme rien que vous pouvez ajouter peut la rendre valide. De même, ce n'est pas disponible. C'est ... 'insérable'! Vous pouvez l'insérer dans une chaîne pour rendre l'ensemble Brainflak valide.
You can assume that the input will never be valid brain-flak or empty.
maximum brownie points
Je pense qu'offrir à la place un maximum de points de brownie et de cookies encouragerait Brain-Flaking ce défi plus que de simples points de brownie, car je ne pense pas que ce soit trivial du tout dans n'importe quelle langue, sans parler de Brain-Flak. : P