O New York Times tem um jogo online diário chamado Letter Boxed (o link está atrás de um paywall; o jogo também é descrito aqui ), apresentado em um quadrado da seguinte forma:
Você recebe 4 grupos de 3 letras (cada grupo corresponde a um lado da foto); nenhuma letra aparece duas vezes. O objetivo do jogo é encontrar palavras compostas por essas 12 letras (e apenas essas letras) de modo que:
- Cada palavra tem pelo menos três letras;
- Cartas consecutivas não podem ser do mesmo lado;
- A última letra de uma palavra se torna a primeira letra da palavra seguinte;
- Todas as letras são usadas pelo menos uma vez (as letras podem ser reutilizadas).
Neste desafio, você recebe as letras e uma lista de palavras. O objetivo é verificar se a lista de palavras é uma solução válida para caixas de correio.
Entrada
A entrada consiste em (1) 4 grupos de 3 letras e (2) uma lista de palavras. Pode estar em qualquer formato adequado.
Saída
Um valor verdadeiro, se a lista de palavras for uma solução válida para o desafio Letter Boxed para essas letras 4 × 3, e um valor falsey caso contrário.
Casos de teste
Grupos de letras ={{I,C,O}, {M,R,E}, {G,N,S}, {A,P,L}}
.
Valores reais
- PEREGRINAÇÃO, INCLUIR
- CULTURAS, VELA, LEAN, NOPE, ENIGMA
Valores de Falsey
- PEREGRINAÇÃO, ECONOMIAS (não pode ter CO, pois estão do mesmo lado)
- CROPS, SAIL, LEAN, NOPE (G e M não foram utilizados)
- PEREGRINAÇÃO ENCLOSURE (U não é uma das 12 letras)
- ANEXAR, PEREGRINAÇÃO (a última letra da 1ª palavra não é a primeira letra da 2ª palavra)
- SCAMS, SO, ORGANIZAR, FUGIR (todas as palavras devem ter pelo menos três letras).
Observe que, neste desafio, não nos importamos se as palavras são válidas (parte de um dicionário).
Pontuação:
Esse código de golfe , a menor pontuação em bytes, ganha!
fonte
no letter appears twice
[]
e0
são falsey. Podemos produzir ou nossa produção deve ser consistente?Respostas:
JavaScript (ES6),
130126 bytesToma entrada como0 0 ou 1 .
(letters)(words)
. RetornaExperimente online!
Passo 1
Passo 2
fonte
Geléia ,
3029 bytesExperimente online!
Um link diádico que leva a lista de palavras como argumento à esquerda e a lista achatada de letras na caixa como o argumento à direita. Retorna
1
para verdadeiro e0
para falso.Explicação
fonte
05AB1E ,
37353332312928 bytes-2 bytes, inspirando-se na
ê
abordagem @Emigna usada em sua resposta 05AB1E .-3 bytes graças a @Grimy .
Leva uma lista da lista de caracteres para as palavras como primeira entrada e a lista nivelada de doze letras como segunda entrada.
Experimente online ou verifique todos os casos de teste .
Explicação:
fonte
¹€g3@
->DO2@
após a primeira verificação ( TIO )05AB1E , 42 bytes
Experimente online!
fonte
P
depois dos mapas e usando)˜P
no final. 41 bytes Abordagem agradável comê
no entanto! Salvei 2 bytes na minha resposta 05AB1E.Python 2 , 171 bytes
Experimente online!
fonte
Geléia , 34 bytes
Um link diádico que aceita as palavras à esquerda e os grupos de letras à direita, que produz
1
se válido e0
se não.Experimente online! Ou veja a suíte de testes .
fonte
Haskell , 231 bytes
Experimente online!
Não é a melhor pontuação. Algum guru Haskell provavelmente conseguirá isso abaixo de 100 bytes.
Uso
Explicação
fonte
Haskell , 231 bytes
Uma variação diferente de Haskell, exatamente do mesmo tamanho que de @Paul Mutser :)
Experimente online!
Ungolfed
fonte
Ruby , 126 bytes
Experimente online!
fonte
grep
.puts f[l,['PILGRIMAGE','ENCLOSE','EG']]
retorna emtrue
vez defalse
.Java (JDK) , 188 bytes
Experimente online!
Explicações
Créditos
fonte
Carvão , 63 bytes
Experimente online! Link é a versão detalhada do código. Explicação:
Concatene as expressões e a saída abaixo,
0
se alguma delas incluir um0
contrário1
.Para cada palavra na solução, indique se seu comprimento é pelo menos 3.
Para cada letra na solução, indique se ela aparece no quebra-cabeça.
Para cada letra no quebra-cabeça, indique se ela aparece na solução.
Para cada letra da solução, verifique se a letra anterior não está no mesmo grupo, a menos que seja a primeira letra de uma palavra; nesse caso, verifique se é igual à última letra da palavra anterior, a menos que seja a primeira letra da solução; nesse caso, apenas a ignore.
fonte
Python 2 ,
168156 bytesExperimente online!
Retorna
1
para verdade,0
para falsey.fonte