Prenez un tableau composé de nombres ou de tableaux, sortez s'il ne contient que 2
s.
La sortie doit être une valeur true ou falsey (Désolé si cela détruit les réponses)
Cas de test authentiques
[2]
[2,2]
[[2],[2,2],2]
[]
[[],[]]
Cas de test Falsey
[1]
[22]
[2,2,2,1]
[[1,2],2]
Les échappatoires standard sont interdites.
Les règles d' E / S par défaut s'appliquent.
Code-golf, le moins d'octets gagne!
[[2]]
ne contient pas de deux.Réponses:
MATL , 3 octets
Essayez-le en ligne!
Techniquement, cela pourrait simplement être
Puisqu'un tableau contenant des éléments nuls est faux, mais cela semble bon marché.
la source
2=
échoue pour les matrices vides, ou?2=p
marche bien. La version courte à la fin,2=
non. En outre, "les cas de bord étranges" sont deux des cas de test. :-)Python 2 ,
4340 octetsEssayez-le en ligne!
Au moment de publier cette réponse, il était toujours autorisé par ce méta-consensus de produire via le lancement d'une erreur / le non-lancement d'une erreur. Par conséquent, cette réponse à 26 octets était valide:
Essayez-le en ligne!
la source
all
, rien d'autre qu'une erreur est véridique.Prolog (SWI) ,
4333 octetsJe sens ... la récursivité .
Merci à Emigna et Leaky Nun pour avoir économisé 10 octets!
Code
Essayez-le en ligne! ou Vérifiez tous les cas de test!
Explication:
Pour les utilisateurs non-Prolog, une liste est formatée de la manière suivante:
[Head | Tail]
.Le
Head
est le premier élément de la liste et la queue est la liste restante. Testez-le ici! . Un cas important ici est que la queue d'une liste avec 1 élément est égale à[]
. Vous pouvez le tester ici .la source
Gelée , 4 octets
Essayez-le en ligne!
Comment ça fonctionne
la source
Octave, 13 octets
Vérifiez tous les cas de test.
Ceci est une fonction anonyme avec un argument d'entrée,
x
. Il soustrait2
de tous les éléments, vérifie s'il y a des éléments non nuls. Il annule la sortie pour obtenirtrue
des cas où toutes les valeurs sont nulles.Cela fonctionne parce que les
x-2
travaux pour les matrices de toutes tailles, y compris la matrice vide,[]
.x-2
serait suffisant s'il ne pouvait pas y avoir de matrices vides dans l'entrée.la source
Mathématiques , 28 octets
Essayez-le en ligne!
la source
{0}
est autorisée; cela entraînerait un faux positif.Rétine ,
1310 octetsMerci à Kritixi Lithos pour avoir économisé 3 octets.
Essayez-le en ligne!
la source
05AB1E , 4 octets
Essayez-le en ligne!
Explication
la source
2
fonctionnerait pas à la place deY
?2
fonctionne également. J'aime juste le fait qu'il n'y ait pas de chiffres dedans :)JavaScript (ES6),
22192322 octetsEssaye-le
la source
Mathematica, 15 octets
Il fonctionne également en mathématiques. Essayez-le en ligne!
la source
APL (Dyalog) , 5 octets
Essayez-le en ligne!
Explication
la source
Mathematica, 24 octets
Fonction pure retournant
True
ouFalse
. Après avoirFlatten
ing le tableau imbriqué et l'avoir appelét
,Cases[t,2]
retourne la liste des éléments qui correspondent au "modèle"2
et==t
vérifie s'il s'agit de la liste entière.Mathematica, 29 octets
Pas aussi court, mais plus amusant. À partir de l'entrée
#
, deux règles de remplacement sont appliquées jusqu'à ce que le résultat cesse de changer (//.
): tout d'abord, tous les2
s sont remplacés par des{}
s; puis toute liste dont les entrées sont toutes des ensembles vides ({{}..}
) est remplacée (à plusieurs reprises) par des ensembles vides. Si le reste est un ensemble vide (=={}
), nous gagnons.la source
Haskell , 36 octets
Une fonction anonyme, prend a
String
et retourne aBool
.Utilisé comme
(all((==2).fst).(reads=<<).scanr(:)[]) "[2,2,2,1]"
Essayez-le en ligne!
Comment ça fonctionne
scanr(:)[]
génère une liste de tous les suffixes de la chaîne.(reads=<<)
essaie d'analyser un nombre au début de chaque suffixe, en combinant les succès dans une liste de tuples(n,restOfString)
.all((==2).fst)
vérifie si tous les nombres analysés le sont2
.la source
not.all(`elem`"2,[]")
?22
.Python 2 , 38 octets
Essayez-le en ligne!
Prend une chaîne sans espaces, génère un booléen.
Vérifie si la suppression de tous les caractères
'[],2'
del
donne la chaîne vide. Vérifie également qu'il22
ne s'agit pas d'une sous-chaîne - si c'est le cas, l'entréel
est utilisée à la place de la chaîne vide pour se comparer au résultat de la suppression, et cela échoue toujours.la source
Ruby,
282322 octets - 5 octets économisés par GoBien que "aplatir" soit vraiment long, il est toujours plus court que les solutions basées sur l'expression régulière ou les trucs récursifs qui doivent sauver les erreurs dans le cas de base. Cependant, la fusion intégrée de Ruby des ensembles et des tableaux est parfois incroyablement utile.
la source
[]
ou[[],[]]
.[2,*x].flatten.uniq==[2]
est légèrement plus longx.flatten-[2]==[]
est encore plus court. Merci pour le conseil!JavaScript (ES6), 26 octets
Cas de test
Afficher l'extrait de code
la source
f=
parce que vous y avez fait référence.MATL , 4 octets
Essayez-le en ligne!
Panne:
Eh bien, hors - golf . Mais je garde ça, car je suis assez content d'avoir tout fait par moi-même (même si la tâche est super simple).
la source
R, 28 octets
unlist(x)
transforme une liste (imbriquée) en vecteur.2
Est ensuite soustrait de ce vecteur.any
convertit (avec un avertissement) numérique en logique et vérifie s'il y a desTRUE
s. Ceci est inversé avec!
et en sortie.Cela fonctionne avec les listes imbriquées car,
unlist
par défaut, fonctionne de manière récursive pour annuler la liste de toutes les entrées de liste de la liste initiale.Cela fonctionne également avec des listes vides, car
unlist(list())
devientnumeric()
, un vecteur numérique vide. La contrainte par leany
faitlogical()
, ce qui est interprété commeFALSE
parany
, puis inversé enTRUE
par!
.la source
pryr::f(!any(unlist(x)-2))
enregistre quelques octets.all(unlist(x)==2)
.any(unlist(x)-2)
qui renvoie une constanteTRUE
s'il y a une valeur non-2 dans le tableau aplati et une cohérenteFALSE
si toutes les valeurs sont2
...TRUE
ça compte comme Falsey: /Python 3 , 55 octets
Pas de tricherie. Utilise la liste imbriquée comme entrée.
Essayez-le en ligne!
la source
int!=type(x)and
Gelée , 4 octets
Essayez-le en ligne!
Légèrement différent de l'algorithme de Leaky.
Explication:
la source
Rétine ,
1411 octetsEssayez-le en ligne!
la source
\W
ne semble pas un si bon critère:2.2
est un nombre qui ne l'est pas2
, mais je suppose qu'il correspondrait05AB1E , 4 octets
Essayez-le en ligne!
la source
JavaScript (ES6),
535048 octets5 octets enregistrés grâce à @Shaggy!
Cas de test:
la source
f([])
etf([[],[]])
devrait être véridique!c
au lieu dec==""
.05AB1E , 7 octets
Essayez-le en ligne! ou essayez tous les tests!
la source
Java 8,
1265527 octetsPort de @KritixiLithos 's étonnante réponse Retina , excluant le
^...$
, carString#matches
correspond toujours à la chaîne entière et ajoute^...$
implicitement.-2 octets merci à @Jakob de me le rappeler
^...$
n'est pas nécessaire pourString#matches
.Essayez-le ici.
la source
boolean c(java.util.List l){return(l+"").matches("^(\\W|2\\b)+$");}
ça marcherait, non? Je voulais juste le signaler au cas où vous envisagiez de continuer à jouer au golf avec la solution de liste.^
et$
dans l'expression régulière, carString.matches
seuls les tests par rapport à la chaîne entière.^...$
. J'ai oublié ça, même si je l'ai utilisé beaucoup de fois dans le passé ..Python 2 ,
444342 octetsPrend
x
comme représentation sous forme de chaîne de la liste. Cela suppose également que dans l'exemple les représentations n'ont pas d'espaces.Essayez-le en ligne!
Explication
Les deux prennent les caractères dans la représentation sous forme de chaîne de l'entrée et déterminent s'il
[], 2
existe des caractères autres que ceux -ci. Ils le font en lançant un ensemble et en le comparant à l'ensemble de ces personnages uniquement. Cependant, cela échoue si nous avons un nombre autre que 2 qui n'a que des chiffres de 2 (par exemple 22 ou 222), afin de corriger ce cas, nous multiplions la chaîne utilisée pour créer l'ensemble par la négation de s'ilx
contient ou non"22"
. S'il le contient, ce sera l'ensemble vide, sinon ce sera le même qu'avant.la source
lambda x:set(x)==set("[], 2")
?[22]
[]
lambda x:set(x)<=set("[],2"*-~-("22"in x))
pour -1Ohm, 6 octets
Les usages
CP-437
encodage.Explication:
la source
PHP, 46 octets
la source
$_GET
tant que chaînes?<?=!preg_match('/:"(?!2")/',$argn);
et l'entrée est une représentation sous forme de chaîne du tableau sérialisé - 11 octetsPHP <7,0, 29 octets
Entrée sous forme de tableau de chaînes codé JSON
PHP <7,0, 42 octets
utiliser la fonction obsolète ereg
PHP, 50 octets
imprime 1 pour vrai et rien pour faux
-1 octet pour les autres suppressions
!
ou + 1 octet pour vrai 1, faux 0 ajouter
+
avant!
Essayez-le en ligne!
la source
$r
variable:<?array_walk_recursive($_GET,function($i){$i-2&¨})?>1
.Pyth, 6 octets
Très similaire à ma réponse CJam. Je suis encore nouveau sur Pyth, alors dites-moi s'il y a quelque chose que je peux jouer au golf.
Explication:
la source