Dados três itens de entrada, uma lista de pares de coordenadas, uma sequência 2D e uma sequência de caracteres únicos, indica se o caractere em cada coordenada da sequência 2D é igual ao caractere único. Você pode receber a entrada em qualquer ordem e as coordenadas podem ser indexadas 1.
Você pode considerar a sequência 2D como uma lista 2D, uma lista de linhas ou uma sequência 2D.
Exemplo: (0,0), "#_\n__", "#" -> True
A string é
#_
__
O caractere na coordenada (0,0)
(do canto superior esquerdo) é #
. Isso é igual ao terceiro item de entrada #
; portanto, você produz True
(ou qualquer valor verdadeiro)
Exemplo: [(0,0), (1,1)], "#_\n_#", "#" -> True
A string é
#_
_#
Os caracteres nas coordenadas de (0,0)
e (1,1)
são ambos #
, portanto a saída é verdadeira.
A saída é verdadeira apenas se todas as coordenadas corresponderem a um hash. Porém, nem todo hash precisa ter uma coordenada correspondente. Se não houver ocorrências do caractere único ( #
em alguns casos de teste) na sequência 2D, a saída ainda será apenas falsa.
Você pode assumir que as coordenadas estarão sempre dentro dos limites da sequência 2D.
Mais casos de teste: (coloquei o único caractere em segundo para facilitar a legibilidade)
[(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
Observe que o último caso de teste usa espaços como a única cadeia de caracteres e faz um hash ao redor dos espaços.
Relacionado. (inverso deste desafio)
(row, column)
mas no último exemplo, as coordenadas estão no formato(column, row)
.Respostas:
Dyalog APL , 8 bytes
Solicita a lista de pares de coordenadas (linha, coluna), matriz 2D e caractere.
[⎕]
solicitar coordenadas e usá-las para dispersar as⎕
entrada solicitada (matriz 2D)=
compare os elementos selecionados com⎕
entrada (o caractere)∧/
verifique se tudo é verdadeiro (redução AND)Casos de teste (
⎕IO←0
para combinar exemplos, mas isso não é necessário):Primeiro exemplo
Segundo exemplo
Terceiro exemplo
Quarto exemplo
Quinto exemplo
fonte
Python, 39 bytes
Toma as entradas:
a
lista de(x, y)
coordenadas inteirasb
lista de stringsc
cadeia de caracteres únicosfonte
f=
. Bem-vindo ao PPCG!JavaScript (ES6), 37 bytes
Toma as entradas:
a
matriz de[x, y]
coordenadas inteirass
matriz de cordasc
cadeia de caracteres únicosfonte
Oitava,
453829 bytesUma função que recebe uma matriz 2D de caracteres como
A
e coordenadas (com base em 0)B
como uma matriz de duas colunas[col row]
e o caractere correspondente comoC
. As duas coordenadas do elemento (usando a multiplicação de matrizes) convertidas em índice linear.Nota: A resposta anterior que fez uso da matriz esparsa estava errada.
Outros colaboradores:
Stewie Griffin, por salvar 5 bytes, observando que [0 1 0] pode ser considerado como valor falso !!
Luis Mendo por salvar 2 bytes
~0 == true
e notificação sobre matriz esparsa.Experimente Online
fonte
all
e salvar três bytes.1 1 1
é verdadeiro e1 0 1
falso no Octave, portanto deve estar OK. :)true
por~0
para salvar 2 bytesMathematica, 28 bytes
1 indexado. Devido à forma como as matrizes são estruturadas no Mathematica, as coordenadas de entrada devem ser revertidas (ie
(row, column)
)Uso
fonte
Haskell, 27 bytes
Exemplo de uso:
( ["#_##","#_##"] ! '#' ) [(0,0), (2,1), (3,0)]
->True
.fonte
Gelatina , 10 bytes
Isso funciona apenas como um programa completo. A ordem de entrada é índices, matriz de strings, string singleton.
Experimente online!
Como funciona
fonte
Perl 6 ,
4140 bytesEspera a sequência 2D como uma lista 2D.
Graças a b2gills por -1 byte.
fonte
$_
vez de\c
você poderia.map:{…}
salvar um byte.map: {…}
. Isso é útil saber. Além disso, é uma pena que prefixo||
ainda não está implementada, poderia fazer o lambda interna simplesmenten eq h[||$_]
...C #,
8077 bytesGuardado 3 bytes, graças a pinkfloydx33
a são os pares de coordenadas, b é a lista de linhas ec é a cadeia de caracteres únicos.
fonte
false
por1<0
etrue
com1>0
e salvar 3 bytes.Haskell,
7263 bytesEntrada de
c [(0,0), (1,0), (3,0)] "#_##\n#_##" '#'
saídasFalse
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 # " ' '
Resultado
True
UnGolfed
fonte
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
pode ser substituído 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.
você pode soltarlines
e pegar diretamente uma lista de linhas como entrada.Scala, 68 bytes
fonte
Clojure, 39 bytes
Exemplo (a entrada de sequência é um vec de vec de caracteres):
fonte