Você se lembra do meu tapete adequadamente agrupado por cores ?
Ontem eu estava olhando e percebi que algumas letras cabiam dentro de outras. Exemplo: uma letra P
cabe no local para onde a letra R
vai. Então, aqui está um desafio simples: dadas duas letras, retorne um valor verdadeiro se qualquer uma delas se encaixar dentro da outra (direta ou girada, mas não invertida), ou um valor falsey se não o fizer. Ou seja, se a entrada é [P,R]
ou [R,P]
, você deve retornar a verdade porque, em ambos os casos, uma letra cabe dentro da outra. Se você conseguir, [L,U]
você deve retornar o falsey, pois ele não se encaixa dentro do outro.
Regras
- A entrada deve ter dois caracteres alfanuméricos no intervalo [0-9A-Z], pois também existem números no tapete, de qualquer forma que você precisar (dois caracteres separados como duas entradas, uma lista com dois caracteres, uma sequência com o 2 caracteres, qualquer que seja).
- A saída deve ser consistente (os valores de verdade e falsey devem ser sempre os mesmos).
A seguir, é apresentada a tabela de acessórios (observe que uma letra sempre se encaixa em seu devido lugar, caso você receba algo como
[Y,Y]
entrada):char fits inside chars -------------------------------------------------------- C G,O F B,E,P,R G O I 0,1,7,B,D,E,F,H,K,L,M,N,O,P,R,T,V,W,X,Z L E M W P R S O V A W M 0 O 1 B,E,L 3 O 6 9,O 8 O 9 6,O
Juro solenemente que testei todos os encaixes no tapete do meu filho. (Seca o suor da testa.)
Este é o código-golfe , portanto, pode ganhar o código mais curto para cada idioma!
Alguns casos de teste
input output
-------------
[C,G] truthy (C fits inside G)
[G,C] truthy (C fits inside G)
[F,R] truthy (F fits inside R)
[M,W] truthy (both fit inside the other)
[O,S] truthy (S fits inside O)
[T,T] truthy (T fits in its place)
[E,V] falsey (no fit found)
[P,L] falsey
Postagem na caixa de areia . Por favor, perdoe-me se você encontrar mais acessórios que eu perdi. Muito obrigado a Οurous por me ajudar com a lista de acessórios.
fonte
1
não se encaixaF
?1
para encaixá-lo,F
mas isso não é permitido no meu tapete. :-)Respostas:
Python 2 ,
135130129 bytes-1 byte graças a Lynn
Experimente online!
Python 3 , 143 bytes
Experimente online!
fonte
Retina ,
9392 bytesExperimente online! Editar: salvou 1 byte graças a @ovs.
fonte
Limpo ,
276226 bytesVagamente jogou golfe. Vai polir amanhã.
Experimente online!
fonte
Haskell ,
149145 bytesExperimente online!
fonte
Javascript
155 153 151149 bytesEu acho que isso funciona em todos os casos, 1/0 para verdadeiro / falso.
Explicação:
Changelog:
fonte
c
encaixaf
ouf
se encaixac
? Parece que você verifica apenas um caso.f
encaixac
includes(f)
vez deindexOf(f)>=0
salvar 2 bytes.Julia 0.6 , 139 bytes
Experimente online!
Salve alguns bytes agrupando os caracteres que se encaixam em 'O'. Mas testar a entrada reversa usa muito código ...
Explicação:
zip(☐)
fecha as letras únicas correspondentes de"OCFILMPV16"
e uma sequência de letras correspondentes..in(☐)
é aplicado elemento a elemento, por exemplo(in(a,'O'),in(b,"OCFILMPV16"))
all(.in(☐))
Ambos devem ser encontrados ...|
para uma,b
oub,a
...any(map(☐))
para pelo menos um elemento da lista compactada.fonte
Kotlin ,
147139 bytesExperimente online!
O exemplo do Try It Online inclui casos de teste para todas as combinações positivas e algumas negativas.
Não otimizei o reg.ex. muito, então pode demorar mais do que o necessário
EDIT: salvou alguns bytes no reg.ex.
fonte
C (gcc) , 211 bytes
Uma primeira tentativa. Muito direto.
Experimente online!
fonte
PHP , 204 bytes
-147 bytes porque volto a remover 2 bytes apenas para descobrir que meu código tinha alguns bugs e variáveis não utilizadas! Meu código agora é muito menor.
Experimente online!
fonte
Ruby, 140 bytes
Praticamente o mesmo que a resposta do python 3, mas com uma execução diferente.
fonte