Ontem, deixei meu sanduíche na mesa. Quando me levantei hoje, havia uma mordida ... Era minha? Não me lembro ...
Problema:
Faça uma representação do sanduíche e do meu padrão de mordida e me diga se foi minha mordida ou não.
Exemplos:
Exemplo 1:
Meu padrão de mordida:
..
.
Sanduíche:
#####
.####
..###
Resultado:
truthy
Exemplo 2:
Meu padrão de mordida:
..
..
Sanduíche:
...##
..###
.####
Resultado:
falsy
Exemplo 3:
Se houver pelo menos 1 rotação que conta como verdade, a saída é verdadeira.
Meu padrão de mordida:
.
.
.
Sanduíche:
##.
#.#
.##
Resultado:
Duas rotações possíveis (mordendo no canto nordeste ou sudoeste).
truthy
Algumas mordidas válidas:
..
.
...
.
.
.
.
.
..
. .
..
..
.
. .
Algumas mordidas inválidas:
..
...
.
..
.
.
Regras:
Minha orientação do padrão de mordida será sempre para morder o canto noroeste. E deve ser girado para morder outros cantos;
Sempre haverá 1 e apenas 1 mordida no sanduíche;
A mordida no sanduíche pode estar em qualquer uma das 4 córneas (rotacionada de acordo);
Os padrões de mordida sempre serão simétricos ao longo da diagonal principal;
Os padrões de mordida sempre terão pelo menos 1 de largura e não estarão vazios;
O sanduíche sempre será um retângulo com largura e altura iguais ou maiores que a largura do meu padrão de mordida;
Na sua entrada, você pode escolher quaisquer 2 caracteres distintos que não sejam espaços em branco para representar o sanduíche e a mordida;
Espaços no padrão de mordida significa que minha mordida não toca nessa parte do sanduíche.
fonte
..
,..
?Respostas:
Ruby ,
103 bytes101 bytesExperimente online!
Economizou 2 bytes movendo a atribuição para o primeiro uso de a. Aparentemente, Ruby é inteligente o suficiente para não confundir as vírgulas na definição da matriz e vírgulas que surgiriam da atribuição simultânea de variáveis (pelo menos neste caso: D)
fonte
Python 2 , 134 bytes
Recebe a entrada como duas listas de strings (uma para cada linha). Não assume nenhum espaço em branco à direita nas linhas.
Experimente online!
Exemplos:
fonte
Python 2, 173 bytes
Experimente online
Aceita entrada como duas listas de listas de caracteres.
Primeiro - sanduíche
Segundo - mordida
Primeiro, ele estende a matriz de mordida ao tamanho da matriz de sanduíche:
[y<'.'and'#'or y for y in x]
substitui todos os espaços para#
(L(S[0])-L(x)),b+[[]]*(L(S)-L(b))
calcular o número de elementos ausentesEm seguida, ele compara todas as 4 rotações dessa mordida "estendida" ao sanduíche:
lambda R é usado para espelhar a lista de listas horizontalmente
No exemplo vinculado, o sanduíche é:
E mordida é:
fonte
R=Lambda:map...
e nãoR=map...
B=[[y<'.'and'#'or y for y in x]+['#']*(L(S[0])-L(x))for x in b+[[]]*(L(S)-L(b))]
para -4R=[x[::-1]for x in B]
para -4 também. Em geral, não use map com uma função lambda