{}
est l'ensemble vide. Vous pouvez utiliser ()
ou []
si vous choisissez.
Nous n'allons pas définir rigoureusement "set", mais les sets satisfont tous aux propriétés suivantes:
Les ensembles suivent la structure mathématique habituelle. Voici quelques points importants:
- Les ensembles ne sont pas commandés.
- Aucun ensemble ne se contient.
- Les éléments sont dans un ensemble ou non, c'est booléen. Par conséquent, les éléments d'ensemble ne peuvent pas avoir de multiplicités (c'est-à-dire qu'un élément ne peut pas être dans un ensemble plusieurs fois.)
- Les éléments d'un ensemble sont également des ensembles et
{}
sont le seul élément primitif.
Tâche
Écrivez un programme / une fonction qui détermine si deux ensembles sont égaux.
Contribution
Deux ensembles valides via stdin ou argument de fonction. Le format d'entrée est lâche dans des limites raisonnables.
Certaines entrées valides sont:
{} {{}}
{{},{{}}} {{{{{},{{}}}}}}
{{},{{},{{}}}} {{{},{{}}},{{{{{},{{}}}}}}}
Entrées non valides:
{{} {} Brackets will always be balanced.
{{},{}} {} Set contains the same element twice
Production
Une valeur vraie si les entrées sont égales, faux sinon.
Cas de test
Votre soumission doit répondre correctement pour toutes les entrées valides, pas seulement pour les cas de test. Ceux-ci peuvent être mis à jour à tout moment.
Vérité:
{} {}
{{},{{}}} {{{}},{}}
{{},{{},{{{}},{}}}} {{{{},{{}}},{}},{}}
Falsy:
{} {{}}
{{},{{},{{{}},{}}}} {{{{}}},{},{{}}}
{{},{{}},{{{}}},{{},{{}}}} {}
Notation
Règles supplémentaires
Une règle supplémentaire a été ajoutée interdisant complètement les types itérables non ordonnés. Ils sont trop courants et banalisent beaucoup trop ce défi. N'hésitez pas à laisser en place les réponses qui violent cela, veuillez simplement indiquer qu'elles ont été apportées avant le changement de règle.
==
dans Julia, 2 octets;frozenset.__eq__
en Python, 16 octets; etc.).See the comments for an explanation.
Veuillez ne pas faire ça. Les commentaires sont volatils et disparaissent très facilement, donc le sutff important passe dans le corps du postRéponses:
CJam, 11 octets
Essayez-le ici.
CJam, 13 octets
Essayez-le ici.
la source
Gelée , 6 octets
Essayez-le en ligne! ou vérifiez tous les cas de test .
Comment ça fonctionne
la source
Brachylog , 8 octets
Cela attend des crochets en entrée et en sortie.
Par exemple:
Explication
la source
Pyth, 9 octets
Format d'entrée: utilisez
[]
au lieu de{}
.Suite de tests
la source
Mathematica, 16 octets
Une fonction sans nom qui attend une liste contenant les deux ensembles, par exemple
Nous utilisons
//@
(MapAll
) pour trier les ensembles à chaque niveau, puis affirmons que les résultats sont égaux.la source
JavaScript (ES6), 42 octets
Accepte l'entrée en utilisant
[]
par exemple sf([[],[[]]],[[[]],[]])
. Fonctionne en convertissant les tableaux en chaînes, puis en les triant de l'intérieur vers l'extérieur.0
et1
sont utilisés parce qu'ils sont plus courtes que'['
et']'
, ainsi , par exempleg([[[]],[]])
est ce001,00111
qui représente[[],[[]]]
.la source
0+
là?0+
et+1
tout ce que j'obtiendrais serait des virgules.f=
, je ne l'ai pas inclus dans le nombre d'octets et je suis trop paresseux pour éditer le message juste pour ça.Python 2, 49 octets
Par exemple, appeler la fonction anonyme
g
:la source
g([[],[[],[]],[[],[[]]],[[]],[[[]]]], [[[],[]],[[[]],[]],[[]],[[[]]],[]])
renvoieFalse
, mais les ensembles sont égaux. Cela devrait être corrigé par mappage avant le tri.Prolog (SWI) , 37 octets
Essayez-le en ligne!
Prend les entrées sous forme de listes imbriquées, c'est-à-dire avec des crochets au lieu d'accolades. À l'origine, c'était le cas
X+Y:-sort(X,M),sort(Y,N),maplist(+,M,N).
, mais j'ai ensuite essayé de traduire la réponse Bratalylog v1 de Fatalize et il s'est avéré 3 octets plus court.Il peut en fait gérer les accolades à la place, pour 23 octets supplémentaires:
Prolog (SWI) , 60 octets
Essayez-le en ligne!
*
convertit ici un terme (non vide, d'où leX=Y;
) accolade sur son côté droit en une liste des éléments du terme, puis le trie sur son côté gauche.Étant donné que les deux arguments
+
sont*
déjà en cours, mettre unsort
in*
économise 7 octets par rapport à l'utilisation depermutation
in+
.Et enfin, voici une version qui gère les listes d'entrée ayant éventuellement des éléments en double, c'est ce qui m'a inspiré pour écrire une solution dans Prolog pour commencer:
Prolog (SWI) , 57 octets
Essayez-le en ligne!
Essentiellement,
X/Y
déclare que X est un sous-ensemble de Y, en déclarant que pour chaque élément de X, il y a un élément égal de Y,X/Y,Y/X
déclare donc que X et Y sont des ensembles égaux.la source
APL (NARS2000), 4 octets
⍦
est l'opérateur multiset, qui modifie les fonctions pour traiter leurs arguments comme des ensembles au lieu de listes≡
est la fonction d'équivalence, qui retourne un booléen indiquant si les arguments sont complètement équivalents en valeur et en formeConcernant la règle supplémentaire: Notez que cette réponse n'utilise aucun type de données d'ensemble non ordonné, mais uniquement des listes normales (qui peuvent contenir plusieurs éléments identiques). Il les traite simplement comme des ensembles.
Le nombre d'octets est 4 car le NARS2000 utilise exclusivement UCS-2.
la source
Julia,
363532 octetsL'entrée est un tableau imbriqué, soit la
{}
syntaxe (obsolète), soitAny[]
.Essayez-le en ligne!
la source
SETL, 1 octet
Prend les ensembles comme arguments gauche et droit.
Notez que cela n'adhère PAS à la règle ajoutée qui interdit les types de données définis non ordonnés.
la source
Brachylog v2, 3 octets
Essayez-le en ligne!
Prend un ensemble via la variable d'entrée et l'autre ensemble via la variable de sortie. Réussit si les ensembles sont égaux et échoue s'ils ne le sont pas.
Comme ma réponse Prolog principale, une traduction de la réponse Brachylog v1 de Fatalize (qui, je pense, pourrait être utilisée pour jouer au golf
p:0a
?).la source
𝔼𝕊𝕄𝕚𝕟, 7 caractères / 9 octets
Try it here (ES6 browsers only).
Explication
la source
Haskell, 77 octets
la source
==
et<
ne sont pas définis par défaut pour les listes?)S
comme une liste (encapsuléeL
) d'S
es. Haskell n'a pas de type intégré qui peut représenter des listes de listes de listes de…Perl 6 , 55 octets
Prend entrée avec
[]
.Essayez-le en ligne!
la source
$^
syntaxe à la place, et je ne pense pas que l'[]
entrée fonctionne, car tout,[[]],[[[]]],[[[[]]]]
etc., est évalué[]
Wolfram Language (Mathematica) , 20 octets
Essayez-le en ligne!
Fonction pure qui prend chaque ensemble en argument.
la source