Nehmen Sie ein Array, das aus Zahlen oder Arrays besteht, und geben Sie es aus, wenn es nur 2
s enthält .
Die Ausgabe sollte ein wahrer oder falscher Wert sein. (Entschuldigung, wenn dies die Antworten zerstört.)
Wahrheitstestfälle
[2]
[2,2]
[[2],[2,2],2]
[]
[[],[]]
Falsche Testfälle
[1]
[22]
[2,2,2,1]
[[1,2],2]
Standardlücken sind verboten.
Es gelten die Standard-E / A- Regeln.
Code-Golf, nur wenige Bytes gewinnen!
[[2]]
enthält keine Zwei.Antworten:
MATL , 3 Bytes
Probieren Sie es online!
Technisch könnte dies nur sein
Da ein Array, das keine Nullelemente enthält, falsch ist, scheint dies aber billig zu sein.
quelle
2=
scheitert bei leeren matrizen, oder?2=p
funktioniert gut. Die kürzere Version am Ende2=
nicht. Auch "die seltsamen Randfälle" sind zwei der Testfälle. :-)Python 2 ,
4340 BytesProbieren Sie es online!
Zum Zeitpunkt der Veröffentlichung dieser Antwort war es weiterhin gemäß diesem Metakonsens zulässig , einen Fehler auszulösen bzw. keinen Fehler auszulösen. Daher war diese Antwort bei 26 Bytes gültig:
Probieren Sie es online!
quelle
all
. Alles andere als ein Fehler ist wahr.Prolog (SWI) ,
4333 BytesIch rieche ... Rekursion .
Vielen Dank an Emigna und Leaky Nun für das Speichern von 10 Bytes!
Code
Probieren Sie es online! oder Überprüfen Sie alle Testfälle!
Erläuterung:
Für Nicht-Prolog Benutzer wird eine Liste in der folgenden Weise formatiert:
[Head | Tail]
.Dies
Head
ist das erste Element der Liste, und tail ist die verbleibende Liste. Teste es hier! . Ein wichtiger Fall hier ist , dass der Schwanz einer Liste mit 1 Elemente gleich[]
. Das können Sie hier testen .quelle
Gelee , 4 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Oktave, 13 Bytes
Überprüfen Sie alle Testfälle.
Dies ist eine anonyme Funktion, die ein Eingabeargument verwendet
x
. Es subtrahiert2
von allen Elementen und prüft, ob es Elemente ungleich Null gibt. Es negiert die Ausgabetrue
für Fälle, in denen alle Werte Null sind.Dies funktioniert, weil es
x-2
für Matrizen aller Größen funktioniert, einschließlich der leeren Matrix[]
.x-2
wäre ausreichend, wenn die Eingabe keine leeren Matrizen enthalten könnte.quelle
Mathematik , 28 Bytes
Probieren Sie es online!
quelle
{0}
erlaubt ist; das würde zu einem falsch positiven Ergebnis führen.Retina ,
1310 BytesVielen Dank an Kritixi Lithos für die Einsparung von 3 Bytes.
Probieren Sie es online!
quelle
05AB1E , 4 Bytes
Probieren Sie es online!
Erläuterung
quelle
2
stattdessen arbeitenY
?2
funktioniert auch. Ich mag nur die Tatsache, dass es keine Zahlen gibt :)JavaScript (ES6),
22192322 ByteProbier es aus
quelle
Mathematica, 15 Bytes
Es funktioniert auch in der Mathematik. Probieren Sie es online!
quelle
APL (Dyalog) , 5 Bytes
Probieren Sie es online!
Erläuterung
quelle
Mathematica, 24 Bytes
Reine Funktionsrückgabe
True
oderFalse
. NachFlatten
dem Aufrufen des verschachtelten Arrayst
wirdCases[t,2]
die Liste der Elemente zurückgegeben, die dem "Muster" entsprechen2
, und es wird==t
geprüft, ob dies die gesamte Liste ist.Mathematica, 29 Bytes
Nicht so kurz, aber mehr Spaß. Ausgehend von der Eingabe
#
werden zwei Ersetzungsregeln angewendet, bis sich das Ergebnis nicht mehr ändert (//.
): Zuerst werden alle2
s durch{}
s ersetzt. und dann wird jede Liste, deren Einträge alle leere Mengen ({{}..}
) sind, (wiederholt) durch leere Mengen ersetzt. Wenn der Rest eine leere Menge ist (=={}
), gewinnen wir.quelle
Haskell , 36 Bytes
Eine anonyme Funktion nimmt ein
String
und gibt ein zurückBool
.Benutzen als
(all((==2).fst).(reads=<<).scanr(:)[]) "[2,2,2,1]"
Probieren Sie es online!
Wie es funktioniert
scanr(:)[]
generiert eine Liste aller Suffixe des Strings.(reads=<<)
versucht, am Anfang jedes Suffixes eine Zahl zu parsen, wobei die Erfolge in einer Liste von Tupeln zusammengefasst werden(n,restOfString)
.all((==2).fst)
prüft, ob alle geparsten Zahlen vorhanden sind2
.quelle
not.all(`elem`"2,[]")
?22
.Python 2 , 38 Bytes
Probieren Sie es online!
Übernimmt einen String ohne Leerzeichen und gibt einen Bool aus.
Überprüft, ob alle Zeichen entfernt wurden
'[],2'
vonl
die leere Zeichenfolge ergibt. Überprüft auch,22
ob es sich nicht um eine Teilzeichenfolge handelt. Wenn dies der Fall ist, wird die Eingabel
anstelle der leeren Zeichenfolge verwendet, um sie mit dem Ergebnis der Entfernung zu vergleichen. Dies schlägt immer fehl.quelle
Rubin,
282322 Bytes - 5 Bytes, die von GB gespeichert wurdenObwohl "flatten" sehr lang ist, ist es immer noch kürzer als auf Regex basierende Lösungen oder rekursives Material, das Fehler im Basisfall beheben muss. Rubys eingebaute Vereinigung von Mengen und Arrays ist jedoch manchmal erstaunlich nützlich.
quelle
[]
oder nicht[[],[]]
.[2,*x].flatten.uniq==[2]
ist etwas längerx.flatten-[2]==[]
ist noch kürzer. Danke für den Tipp!JavaScript (ES6), 26 Byte
Testfälle
Code-Snippet anzeigen
quelle
f=
weil Sie sich darauf bezogen haben.MATL , 4 Bytes
Probieren Sie es online!
Nervenzusammenbruch:
Na ja, outgolfed . Aber ich behalte das, da ich ziemlich glücklich bin, dass ich das alles alleine geschafft habe (obwohl die Aufgabe super einfach ist).
quelle
R, 28 Bytes
unlist(x)
verwandelt eine (verschachtelte) Liste in einen Vektor. Dann2
wird von diesem Vektor abgezogen.any
wandelt (mit einer Warnung) numerisch in logisch um und prüft, ob es irgendwelcheTRUE
s gibt. Dies wird mit invertiert!
und ausgegeben.Dies funktioniert mit verschachtelten Listen, da
unlist
standardmäßig alle Listeneinträge der ursprünglichen Liste rekursiv gelöscht werden.Dies funktioniert auch mit leeren Listen, da dies
unlist(list())
zunumeric()
einem leeren numerischen Vektor wird. Zwang durchany
macht eslogical()
, was alsFALSE
von interpretiert wirdany
, und dann umgekehrt zuTRUE
von!
.quelle
pryr::f(!any(unlist(x)-2))
spart ein paar Bytes.all(unlist(x)==2)
.any(unlist(x)-2)
was ein konsistentesTRUE
FALSE
2
TRUE
als Falschgeld gilt: /Python 3 , 55 Bytes
Kein Schummeln. Verwendet verschachtelte Liste als Eingabe.
Probieren Sie es online!
quelle
int!=type(x)and
Gelee , 4 Bytes
Probieren Sie es online!
Etwas anders als Leakys Algorithmus.
Erläuterung:
quelle
Retina ,
1411 BytesProbieren Sie es online!
quelle
\W
scheint kein so gutes Kriterium zu sein:2.2
Ist eine Zahl, die nicht stimmt2
, aber ich nehme an, dass sie übereinstimmt05AB1E , 4 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6),
535048 Bytes5 Bytes gespart, dank @Shaggy!
Testfälle:
quelle
f([])
undf([[],[]])
sollte wahr sein!c
stattc==""
.05AB1E , 7 Bytes
Probieren Sie es online! oder versuchen Sie alle Tests!
quelle
Java 8,
1265527 BytesPort von @KritixiLithos 'erstaunlicher Retina-Antwort , mit Ausnahme der
^...$
, daString#matches
immer die gesamte Zeichenfolge übereinstimmt und die^...$
implizit hinzufügt .-2 Bytes Dank an @Jakob für die Erinnerung
^...$
ist nicht notwendig fürString#matches
.Probieren Sie es hier aus.
quelle
boolean c(java.util.List l){return(l+"").matches("^(\\W|2\\b)+$");}
würde es funktionieren, oder? Ich wollte nur darauf hinweisen, falls Sie vorhaben, die Listenlösung weiter zu verbessern.^
und$
in der Regex verlieren , daString.matches
nur Tests gegen die gesamte Zeichenfolge.^...$
. Das habe ich vergessen, obwohl ich es in der Vergangenheit ziemlich oft benutzt habe.Python 2 ,
444342 BytesNimmt
x
als Zeichenfolgendarstellung der Liste. Dies setzt auch voraus, wie im Beispiel, dass die Darstellungen keine Leerzeichen haben.Probieren Sie es online!
Erläuterung
In beiden Fällen werden die Zeichen in der Zeichenfolgendarstellung der Eingabe verwendet, um festzustellen, ob andere Zeichen als
[], 2
die darin enthaltenen vorhanden sind. Sie tun dies, indem sie in eine Menge umwandeln und mit der Menge dieser Zeichen vergleichen. Dies schlägt jedoch fehl, wenn wir eine andere Zahl als 2 haben, die nur 2 Ziffern hat (z. B. 22 oder 222). Um diesen Fall zu patchen, multiplizieren wir die Zeichenfolge, die zum Erstellen der Menge verwendet wird, mit der Negation, ob siex
enthält oder nicht"22"
. Wenn es es enthält, ist dies das leere Set, ansonsten ist es das gleiche wie zuvor.quelle
lambda x:set(x)==set("[], 2")
?[22]
[]
lambda x:set(x)<=set("[],2"*-~-("22"in x))
für -1Ohm, 6 Bytes
Verwendet
CP-437
Codierung.Erläuterung:
quelle
PHP, 46 Bytes
quelle
$_GET
als Zeichenfolgen, wenn Sie es nicht über einen Browser testen ?<?=!preg_match('/:"(?!2")/',$argn);
und input ist eine Stringdarstellung des serialisierten Arrays - 11 BytesPHP <7.0, 29 Bytes
Eingabe als String-Array JSON-codiert
PHP <7.0, 42 Bytes
benutze die veraltete Funktion ereg
PHP, 50 Bytes
Gibt 1 für wahr und nichts für falsch aus
-1 Byte für andernfalls entfernen
!
oder + 1 Byte für wahr 1, falsch 0
+
vorher addieren!
Probieren Sie es online!
quelle
$r
Variable:<?array_walk_recursive($_GET,function($i){$i-2&¨})?>1
.Pyth, 6 Bytes
Sehr ähnlich zu meiner CJam-Antwort. Ich bin noch neu in Pyth, also sag mir bitte, ob ich irgendetwas ausprobieren kann.
Erläuterung:
quelle