Un "support triplet" (que j'ai compensé pour ce défi) est l'un des suivants:
(...+...)
[...:...]
{...|...}
<...-...>
Une chaîne de crochets triplet équilibrée (BTBS pour faire court) est soit une chaîne vide, deux BTBS concaténés, soit l'un des crochets de triplet ci-dessus, chacun étant ...
remplacé par un BTBS.
Votre tâche consiste à écrire un programme ou une fonction qui vérifie si une chaîne composée uniquement (+)[:]{|}<->
est équilibrée. Le code le plus court gagne.
Exemples
Votre programme doit retourner véridique pour les chaînes suivantes:
(+)(+)(+)
[[[:]:]:(+(+))]{<->|<(+)->[:]}(+)
<<<<<<<<<<<<->->->->->->->->->->->->
{|(+[:<-{|(+[:<->])}>])}
[[[:]:[:]]:[[:]:[:]]]
{[:](+)|<->{|}}[(+)<->:{|}(+)]
Votre programme doit renvoyer la falsification pour les chaînes suivantes:
:[
<|>
(+(+)
[:][:](+[[:]):]
{|{|{|(+{|{|{|}}}}}+)}[:]{|}
{{||}}
<<->-<->-<->>
[(+):((+)+)+(+(+))]
<<<<<->->->->->->
code-golf
string
balanced-string
jimmy23013
la source
la source
(|)
valide. Je ne pense pas, mais je ne suis pas sûr<|>
dans les exemples de falsification.Réponses:
Japt, 25 octets
Testez-le en ligne!
e
on strings est une fonction de remplacement récursif. Le deuxième paramètre par défaut est la chaîne vide, ce qui signifie que cela supprime récursivement les correspondances de l'expression"%(%+%)|%[:]|\{%|}|<->"
régulière Japt (en termes réguliers,/\(\+\)|\[:]|{\|}|<->/
). Cela renvoie une chaîne vide pour les chaînes triplet équilibrées et une chaîne non vide pour les chaînes non équilibrées, donc la valeur de retour correcte est le NON logique de cela.la source
JavaScript (ES6),
77585756 octetsCas de test
Afficher l'extrait de code
la source
perl -lpe 's/<->|\(\+\)|{\|}|\[:]//&&redo;$_=!$_'
.0
un BTBS. Utilisez ce 38 à la place:perl -pe 's/<->|\(\+\)|{\|}|\[:]//&&redo;$_=/^$/'
f=s=>s==(s=s.replace(...))?!s:f(s)
- être ?sed,
2827 octetssed n'a pas de concept de vérité / fausse, donc je considère une chaîne vide véridique et une fausse chaîne non vide. Cela vérifie si nous considérons le conditionnel
/^$/
.Merci à @Neil d'avoir joué au golf sur 1 octet!
Essayez-le en ligne!
la source
\]
ou]
suffit-il?Python, 77 octets
Utilise l'idée de remplacement d'Arnauld . Génère et évalue une longue chaîne comme
pour basculer entre le remplacement de tous les types de supports. Ensuite, vérifie si le résultat est la chaîne vide.
la source
Mathematica, 55 octets
Fonction anonyme. Prend une chaîne en entrée et retourne
True
ouFalse
en sortie. Utilise la méthode standard pour ce faire.la source
Grime , 39 octets
Essayez-le en ligne! Malheureusement, la version TIO manque de mémoire sur la plupart des cas de test.
Explication
Rien d'extraordinaire ici.
_
est un raccourci pour l'ensemble du modèle etv*
est identique à*
, mais avec une priorité inférieure.la source
J, 48 octets
Semblable aux autres, cela est également basé sur la méthode d'Arnauld .
Usage
Explication
la source
Scala, 96 octets
C'est fondamentalement la même idée que les autres réponses, mais avec un passe-partout scala.
sans voler les idées des autres (188 octets):
la source
Pip , 26 octets
Essayez-le en ligne!
Boucle len (a) fois, remplaçant toutes les occurrences de crochets de triplets vides (
"(+)[:]{|}<->"<>3
, où<>
est l'opérateur "groupe", =>["(+)"; "[:]"; "{|}"; "<->"]
) par une chaîne vide (x
). Ce nombre d'itérations est exagéré, mais ce sera toujours plus que suffisant pour réduire complètement à néant tous les supports de triplets correctement formés. Une fois la boucle terminée, affiche!a
:0
sia
est véridique (a encore quelques caractères),1
sia
est falsey (vide).la source