Tome una matriz que consta de números o matrices, salida si solo contiene 2
s.
La salida debe ser un valor verdadero o falso (lo siento si esto destruye las respuestas)
Casos de prueba de la verdad
[2]
[2,2]
[[2],[2,2],2]
[]
[[],[]]
Casos de prueba de Falsey
[1]
[22]
[2,2,2,1]
[[1,2],2]
Las lagunas estándar están prohibidas.
Se aplican las reglas IO predeterminadas .
Code-golf, Fewest bytes gana!
[[2]]
no no contiene un dos.Respuestas:
MATL , 3 bytes
Pruébalo en línea!
Técnicamente, esto podría ser
Dado que una matriz que contiene elementos cero es falsa, pero esto parece barato.
fuente
2=
falla para matrices vacías, o?2=p
funciona bien. La versión más corta al final,2=
no. Además, "los casos extremos extraños" son dos de los casos de prueba. :-)Python 2 ,
4340 bytesPruébalo en línea!
Al momento de publicar esta respuesta, todavía se permitía que este meta consenso llegara a través de lanzar un error / no arrojar un error. Por lo tanto, esta respuesta a 26 bytes era válida:
Pruébalo en línea!
fuente
all
, nada más que un error es verdadero.Prólogo (SWI) ,
4333 bytesHuelo ... recursión .
¡Gracias a Emigna y Leaky Nun por guardar 10 bytes!
Código
Pruébalo en línea! o Verifique todos los casos de prueba!
Explicación:
Para los usuarios no-Prolog, una lista tiene el formato de la siguiente manera:
[Head | Tail]
.El
Head
es el primer elemento de la lista, y tail es la lista restante. ¡Pruébalo aquí! . Un caso importante aquí es que la cola de una lista con 1 elemento es igual a[]
. Puedes probar eso aquí .fuente
Jalea , 4 bytes
Pruébalo en línea!
Cómo funciona
fuente
Octava, 13 bytes
Verifique todos los casos de prueba.
Esta es una función anónima teniendo un argumento de entrada,
x
. Resta2
de todos los elementos, verifica si hay elementos distintos de cero. Niega la salida para obtenertrue
casos donde todos los valores son cero.Esto funciona porque
x-2
funciona para matrices de todos los tamaños, incluyendo la matriz vacía,[]
.x-2
sería suficiente si no pudiera haber matrices vacías en la entrada.fuente
Matemáticas , 28 bytes
Pruébalo en línea!
fuente
{0}
está permitida; eso resultaría en un falso positivo.Retina ,
1310 bytesGracias a Kritixi Lithos por guardar 3 bytes.
Pruébalo en línea!
fuente
05AB1E , 4 bytes
Pruébalo en línea!
Explicación
fuente
2
funcionaría en lugar deY
?2
funciona. Simplemente me gusta el hecho de que no hay números en él :)JavaScript (ES6),
22192322 bytesPruébalo
fuente
Mathematica, 15 bytes
También funciona en matemáticas. Pruébalo en línea!
fuente
APL (Dyalog) , 5 bytes
Pruébalo en línea!
Explicación
fuente
Mathematica, 24 bytes
Función pura que vuelve
True
oFalse
. DespuésFlatten
de ingresar la matriz anidada y llamarlat
,Cases[t,2]
devuelve la lista de elementos que coinciden con el "patrón"2
y==t
comprueba si esa es la lista completa.Mathematica, 29 bytes
No tan corto, pero más divertido. A partir de la entrada
#
, se aplican dos reglas de reemplazo hasta que el resultado deja de cambiar (//.
): primero, todas las2
s se reemplazan por{}
s; y luego cualquier lista cuyas entradas son todos conjuntos vacíos ({{}..}
) son reemplazados (repetidamente) por conjuntos vacíos. Si el resto es un conjunto vacío (=={}
), ganamos.fuente
Haskell , 36 bytes
Una función anónima, toma un
String
y devuelve unBool
.Usar como
(all((==2).fst).(reads=<<).scanr(:)[]) "[2,2,2,1]"
Pruébalo en línea!
Cómo funciona
scanr(:)[]
genera una lista de todos los sufijos de la cadena.(reads=<<)
intenta analizar un número al comienzo de cada sufijo, combinando los éxitos en una lista de tuplas(n,restOfString)
.all((==2).fst)
comprueba si todos los números analizados son2
.fuente
not.all(`elem`"2,[]")
?22
.Python 2 , 38 bytes
Pruébalo en línea!
Toma una cadena sin espacios, emite un bool.
Comprueba si eliminar todos los caracteres
'[],2'
del
da la cadena vacía. También verifica que22
no sea una subcadena: si lo es, la entradal
se usa en lugar de la cadena vacía para comparar con el resultado de la eliminación, y eso siempre falla.fuente
Ruby,
282322 bytes - 5 bytes guardados por GBA pesar de que "aplanar" es realmente largo, aún es más corto que las soluciones basadas en expresiones regulares o cosas recursivas que tienen que rescatar errores en el caso base. Sin embargo, la combinación de conjuntos y matrices incorporada de Ruby es increíblemente útil a veces.
fuente
[]
o[[],[]]
.[2,*x].flatten.uniq==[2]
es un poco más largox.flatten-[2]==[]
aún es más corto. ¡Gracias por el consejo!JavaScript (ES6), 26 bytes
Casos de prueba
Mostrar fragmento de código
fuente
f=
porque se refirió a él.MATL , 4 bytes
Pruébalo en línea!
Descompostura:
Bueno, outgolfed . Pero me quedo con esto, ya que estoy bastante feliz de haberlo logrado todo por mi cuenta (aunque la tarea es muy simple).
fuente
R, 28 bytes
unlist(x)
convierte una lista (anidada) en un vector. Luego2
se resta de ese vector.any
convierte (con una advertencia) numérico a lógico y comprueba si hay algúnTRUE
s. Esto se invierte con!
y salida.Esto funciona con listas anidadas porque,
unlist
de forma predeterminada, funciona de forma recursiva para eliminar todas las entradas de la lista inicial.Esto también funciona con listas vacías, porque se
unlist(list())
convierte ennumeric()
un vector numérico vacío. La coacción por loany
hacelogical()
, que se interpreta comoFALSE
porany
, y luego se invierte aTRUE
por!
.fuente
pryr::f(!any(unlist(x)-2))
Guarda un par de bytes.all(unlist(x)==2)
también.any(unlist(x)-2)
qué devuelve un valor coherenteTRUE
si hay un valor no 2 en la matriz aplanada y un valor coherenteFALSE
si todos los valores son2
...TRUE
cuenta como falsey: /Python 3 , 55 bytes
Sin trampas. Utiliza la lista anidada como entrada.
Pruébalo en línea!
fuente
int!=type(x)and
Jalea , 4 bytes
Pruébalo en línea!
Ligeramente diferente al algoritmo de Leaky.
Explicación:
fuente
Retina ,
1411 bytesPruébalo en línea!
fuente
\W
no parece un buen criterio:2.2
es un número que no lo es2
, pero supongo que coincidiría05AB1E , 4 bytes
Pruébalo en línea!
fuente
JavaScript (ES6),
535048 bytes¡Guardado 5 bytes, gracias a @Shaggy!
Casos de prueba :
fuente
f([])
yf([[],[]])
debería ser sincero!c
lugar dec==""
.05AB1E , 7 bytes
Pruébalo en línea! o prueba todas las pruebas!
fuente
Java 8,
1265527 bytesPuerto de la sorprendente respuesta de Retina de @KritixiLithos , excluyendo el
^...$
, ya queString#matches
siempre coincide con toda la cadena y agrega^...$
implícitamente.-2 bytes gracias a @Jakob por recordarme
^...$
no es necesarioString#matches
.Pruébalo aquí
fuente
boolean c(java.util.List l){return(l+"").matches("^(\\W|2\\b)+$");}
funcionaría, ¿verdad? Solo quería señalarlo en caso de que planeara seguir desarrollando la solución de la lista.^
y$
en la expresión regular, ya queString.matches
solo prueba contra toda la cadena.^...$
. Olvidé eso, a pesar de que lo he usado muchas veces en el pasado ...Python 2 ,
444342 bytesToma
x
como la representación de cadena de la lista. Esto también supone que, como en el ejemplo, las representaciones no tienen espacios.Pruébalo en línea!
Explicación
Ambos toman los caracteres en la representación de cadena de la entrada y determinan si hay otros caracteres que no
[], 2
estén en ella. Lo hacen al elegir un conjunto y compararlo con el conjunto de esos personajes. Sin embargo, esto falla si tenemos un número distinto de 2 que solo tiene dígitos de 2 (por ejemplo, 22 o 222), para parchear este caso multiplicamos la cadena utilizada para crear el conjunto por la negación de six
contiene o no"22"
. Si lo contiene, este será el conjunto vacío, de lo contrario será el mismo que antes.fuente
lambda x:set(x)==set("[], 2")
?[22]
[]
lambda x:set(x)<=set("[],2"*-~-("22"in x))
para -1Ohm, 6 bytes
Utiliza
CP-437
codificación.Explicación:
fuente
PHP, 46 bytes
fuente
$_GET
como cadenas?<?=!preg_match('/:"(?!2")/',$argn);
y la entrada es una representación en cadena de la matriz serializada - 11 BytesPHP <7.0, 29 bytes
Entrada como codificación JSON de matriz de cadenas
PHP <7.0, 42 bytes
usar la función obsoleta ereg
PHP, 50 bytes
imprime 1 para verdadero y nada para falso
-1 Byte para otro sabio eliminar
!
o + 1 Byte para verdadero 1, falso 0 agregar
+
antes!
Pruébalo en línea!
fuente
$r
variable de:<?array_walk_recursive($_GET,function($i){$i-2&¨})?>1
.Pyth, 6 bytes
Muy similar a mi respuesta CJam. Todavía soy nuevo en Pyth, así que dígame si hay algo que pueda jugar al golf.
Explicación:
fuente