Dados 3 elementos de entrada, una lista de pares de coordenadas, una cadena 2D y una cadena de un solo carácter, muestran si el carácter en cada coordenada de la cadena 2D es igual al carácter único. Puede tomar la entrada en cualquier orden y las coordenadas pueden estar indexadas en 1.
Puede tomar la cadena 2D como una lista 2D, una lista de líneas o una cadena 2D.
Ejemplo: (0,0), "#_\n__", "#" -> True
La cadena es
#_
__
El carácter en la coordenada (0,0)
(desde la parte superior izquierda) es #
. Esto es igual al tercer elemento de entrada #
, por lo que la salida True
(o cualquier valor verdadero)
Ejemplo: [(0,0), (1,1)], "#_\n_#", "#" -> True
La cadena es
#_
_#
Los caracteres en las coordenadas de (0,0)
y (1,1)
son ambos #
, por lo que la salida es verdadera.
El resultado solo es verdadero si cada coordenada coincide con un hash. Sin embargo, no todos los hash deben tener una coordenada coincidente. Si no hay ocurrencias del carácter único ( #
en algunos de los casos de prueba) en la cadena 2D, la salida sigue siendo falsa.
Puede suponer que las coordenadas siempre estarán dentro de los límites de la cadena 2D.
Más casos de prueba: (pongo el único carácter en segundo lugar para facilitar la lectura)
[(0,0), (2,1), (3,0)], #
#_##
#_##
True
[(0,0), (1,1), (3,0)], #
#_##
#_##
False (1,1 is not a hash)
[(1,1)], a
#a##
#a##
True
[(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)], ' '
####
#
#
True
Tenga en cuenta que el último caso de prueba utiliza espacios como la cadena de caracteres única y hash alrededor de los espacios.
Relacionado. (inverso de este desafío)
(row, column)
pero en el último ejemplo, las coordenadas están en el formato(column, row)
.Respuestas:
Dyalog APL , 8 bytes
Solicita una lista de pares de coordenadas (fila, columna), luego matriz 2D, luego carácter.
[⎕]
solicitar coordenadas y usarlas para dispersar la selección de⎕
entrada solicitada (matriz 2D)=
comparar los elementos seleccionados con⎕
entrada (el personaje)∧/
comprobar si todo es verdad (reducción Y)Casos de prueba (
⎕IO←0
para encontrar ejemplos, pero esto no es necesario):Primer ejemplo
Segundo ejemplo
Tercer ejemplo
Cuarto ejemplo
Quinto ejemplo
fuente
Python, 39 bytes
Toma las entradas:
a
lista de(x, y)
coordenadas enterasb
lista de cadenasc
cadena de un solo carácterfuente
f=
. Bienvenido a PPCG!JavaScript (ES6), 37 bytes
Toma las entradas:
a
matriz de[x, y]
coordenadas enterass
conjunto de cuerdasc
cadena de un solo carácterfuente
Octava,
453829 bytesUna función que toma una matriz 2D de caracteres como
A
y coordenadas (basadas en 0)B
como una matriz de dos columnas[col row]
y el carácter correspondiente comoC
. Las coordenadas de dos elementos (usando la multiplicación de matrices) se convierten en índice lineal.Nota: La respuesta anterior que utilizaba una matriz dispersa era incorrecta.
Otros contribuyentes:
¡Stewie Griffin por guardar 5 bytes y señaló que [0 1 0] puede considerarse como un valor falso!
Luis Mendo por guardar 2 bytes
~0 == true
y notificaciones sobre matriz dispersa.Pruébalo en línea
fuente
all
y guardar tres bytes.1 1 1
es verdadero y1 0 1
es falso en Octave, por lo que debería estar bien. :)true
por~0
para guardar 2 bytesMathematica, 28 bytes
1 indexado. Debido a cómo se estructuran las matrices en Mathematica, las coordenadas de entrada deben invertirse (es decir
(row, column)
)Uso
fuente
Haskell, 27 bytes
Ejemplo de uso:
( ["#_##","#_##"] ! '#' ) [(0,0), (2,1), (3,0)]
->True
.fuente
Jalea , 10 bytes
Esto solo funciona como un programa completo. El orden de entrada es índices, matriz de cadenas, cadena singleton.
Pruébalo en línea!
Cómo funciona
fuente
Perl 6 ,
4140 bytesEspera la cadena 2D como una lista 2D.
Gracias a b2gills por -1 byte.
fuente
$_
lugar de\c
podría usar.map:{…}
guardar un byte.map: {…}
. Es útil saberlo. Además, es una pena que el prefijo||
aún no esté implementado, podría hacer que el lambda interno simplementen eq h[||$_]
...C #,
8077 bytesGuardado 3 bytes, gracias a pinkfloydx33
a son los pares de coordenadas, b es la lista de líneas y c es la cadena de un solo carácter.
fuente
false
con1<0
ytrue
con1>0
y guardar 3 bytes.Haskell,
7263 bytesEntrada de
c [(0,0), (1,0), (3,0)] "#_##\n#_##" '#'
salidasFalse
Entrada
c [(4, 0), (3, 0), (2, 0), (1, 0), (0, 0), (0, 1), (0, 2), (0, 3), (1, 3), (2, 3), (2, 2), (3, 2), (4, 2), (4, 3)] " \n ####\n # \n # " ' '
Salida
True
Sin golf
fuente
c[]_ _=1<2;c((f,s):t)m n|n/=lines m!!s!!f=1>2|1>0=c t m n
if n/=lines m!!s!!f then False else c t m n
se puede reemplazar porn/=lines m!!s!!f&&c t m n
.You may take the 2D string as a 2D list, a list of lines, or a 2D string.
puede soltarlines
y tomar directamente una lista de líneas como entrada.Scala, 68 bytes
fuente
Clojure, 39 bytes
Ejemplo (la entrada de cadena es un vec de vec de caracteres):
fuente