Desafío
Crear una función toma dos matrices bidimensionales de caracteres (o cadenas si el lenguaje de programación no tiene caracteres como tipo de datos) como entradas: a y b. Si su idioma no admite estas entradas, puede usar cualquier otra variable estándar de un byte.
Su tarea es determinar si b contiene a. Si es así, devuelve verdadero. De lo contrario, devuelve falso.
Ejemplos de casos de prueba
a:
123
456
789
b:
123
456
789
debería volver cierto.
a:
code
golf
b:
thisis
code!!
golf!!
ohyeah
debería volver cierto.
a:
abcd
efgh
ijkl
b:
abcdef
ghijkl
mnopqr
debería devolver falso.
a:
abc
def
b:
1abc2
3def4
5ghi6
debería volver verdadero
a:
ab
cd
b:
#ab##
##cd#
debería devolver falso
Menos bytes gana.
a
no está enb
el borde izquierdo y un caso de prueba falsey donde cada líneaa
aparece en líneas consecutivasb
pero con sus bordes izquierdos escalonados?Respuestas:
Brachylog (v2), 4 bytes
Pruébalo en línea!
Se ejecuta más fácilmente como un programa completo, como de costumbre para un problema de decisión , con un argumento especificado como línea de comando, b en la entrada estándar. La pregunta solicita una función, y el programa también funciona como una función, con b a la izquierda, a a la derecha y la salida produce una excepción si y solo si la decisión es falsa .
Explicación
La "afirmación rectangular" obviamente no tiene sentido, ya que la pregunta ya lo garantiza. El resto del programa realiza la búsqueda de la cuadrícula al identificar una subcadena de las filas y las columnas, es decir, una submatriz.
Meta-discusión
Hemos tenido una pregunta muy similar antes; Esperaría que la mayoría de las respuestas a una pregunta sean modificables en respuestas a la otra. Sin embargo, creo que esta es la versión más ordenada.
fuente
Python 2 , 67 bytes
Pruébalo en línea!
Toma datos como listas de tuplas de personajes.
Intenta todas las cuadrículas secundarias
b
y comprueba sia
está entre ellas. Las subcuadrículas se generan ramificando recursivamente al quitar la primera filab
o al girarla 90 grados. Después de exactamente cuatro rotaciones, verifica si el recorteb
es igual aa
.fuente
J ,
211587 bytesPruébalo en línea!
-7 bytes gracias a Bolce Bussiere
respuesta original
J ,
2115 bytesPruébalo en línea!
-6 bytes gracias a FrownyFrog
cómo
<@[
en caja izquierda arg$@[<;.3]
todos los rectángulos en el argumento derecho con la misma forma que el argumento izquierdoe.&,
fuente
<@[e.&,$@[<;.3]
+/@:,@E.
. E. está prácticamente hecho para este desafío.Carbón , 26 bytes
Pruébalo en línea! El enlace es a la versión detallada del código. Basado en gran medida en mi respuesta para contar las submatrices contiguas , la única diferencia es que, en lugar de tomar la suma de las coincidencias, tomo el máximo, y debido a la conversión de cadena implícita debido al uso del
⭆
resultado, ya es una cadena que guarda un byte.fuente
05AB1E , 10 bytes
Toma
b
como primera entrada,a
como segunda. Ambas entradas como matrices de caracteres.El puerto de la respuesta 05AB1E de @ Mr.Xcoder para este desafío relacionado , ¡así que asegúrese de votarlo!
Pruébelo en línea o verifique todos los casos de prueba .
Explicación:
fuente
Python 2 ,
106118113 bytesPruébalo en línea!
fuente
Wolfram Language (Mathematica) , 46 bytes
Pruébalo en línea!
Función curry: llamada con
f[a][b]
.¿Hay alternativas más cortas para
Or@@Or@@@
oDimensions
?fuente
JavaScript (ES6) ,
131 112105 bytes105 bytes:
Pruébalo en línea!
Cambios:
m[i]
intox
andn[z]
intol
: Olvidé por completo que estas variables ya estaban instanciadas&&
into&
: Ambos lados del operador ya son booleanos, por lo que funcionará un operador bit a bit112 bytes:
Pruébalo en línea!
Cambios:
map((c,j)=>{...}).some(s=>s)
ensome((c,j)=>{...})
: redundanciam[i+z].join()
intom[i+z]+''
: una forma más corta de convertir la matriz en una cadenaindexOf(n[z].join(),j)
intoindexOf(n[z],j)
: elindexOf
método ya se convierten[z]
en una cadena131 bytes:
Pruébalo en línea!
Legible:
En lugar de comparar valores individuales, verifiqué si las líneas de la cuadrícula N estaban incluidas en las líneas de la cuadrícula M y, de ser así, en qué índices. Si todas las líneas se incluyen a partir del mismo índice, entonces la cuadrícula N está contenida en la cuadrícula M.
fuente
PowerShell ,
711028598 bytesgracias @Jo King; Se agregaron casos de prueba.
Pruébalo en línea!
Menos golfizado:
fuente
Javascript, 150 bytes
Pruébalo en línea
fuente