Você quer abrir um novo zoológico. Vai ser incrível. Mas, sendo o preço mais baixo que você é, você só quer pagar animais de três letras (todo mundo sabe que o custo de um animal é proporcional ao tamanho do nome). Lá vai o seu sonho de fazer as pessoas pagarem para ver um elephant
. Mas de repente você tem uma ideia brilhante. Se você colocar os animais corretamente na caneta, poderá criar a ilusão de ótica de um elephant
! Aqui está uma visão de cima para baixo do seu novo "composto de elefantes":
elk
eel
pig
hog
ant
-------- (fence)
^
| viewing direction
Haha, esses visitantes crédulos!
Sim, é assim que a percepção funciona.
O desafio
Dada uma palavra não vazia que consiste apenas em letras minúsculas em inglês, determine se ela pode ser formada sobrepondo as seguintes 30 palavras animais de três letras:
ant ape asp ass bat bee boa cat cod cow
dab dog eel elk emu fly fox gnu hog ide
jay kea kob koi olm owl pig rat ray yak
Sim, existem mais de 30, mas esse é um bom número redondo.
Opcionalmente, você pode receber esta lista como entrada (em qualquer formato razoável de lista ou sequência, desde que não seja pré-processado). Você provavelmente desejará fazer isso, a menos que ler e processar essa lista de entrada seja muito mais caro que codificá-la e compactá-la no seu idioma preferido. Observe que, mesmo que você tome a lista como entrada, você pode assumir que sempre será exatamente essa lista; portanto, se o seu código se basear na lista passada com 30 elementos e sem conter uma palavra z
, tudo bem.
Cada palavra pode ser usada várias vezes. Os animais não podem ser cortados nas extremidades, apenas parcialmente escondidos por outros animais. Portanto, ox
não é uma string possível, mesmo que tenhamos fox
.
A saída deve ser verdadeira, se isso for possível, e falsificar o contrário.
Você pode escrever um programa ou função, recebendo entrada via STDIN (ou alternativa mais próxima), argumento da linha de comando ou argumento da função e emitindo o resultado via STDOUT (ou alternativa mais próxima), valor de retorno da função ou parâmetro da função (saída).
Seu código deve lidar com qualquer um dos casos de teste em alguns segundos.
Aplicam-se as regras padrão de código de golfe .
Mais exemplos
- Qualquer palavra de uma ou duas letras é obviamente falsa.
- O mesmo ocorre com qualquer palavra de três letras que não esteja na lista acima.
- Mesmo que temos
gnu
erat
,gnat
é Falsas já que não há maneira de organizá-los de tal forma que você só vê duas cartas de cada um (que não quer cortar animais em terços).
Alguns exemplos verdadeiros:
pigment
ant
bee
olm
pig
antioxidant
fox
koi ide
ant ant
Casos de teste
A maioria dos casos de teste foi retirada da execução de uma implementação de referência em um dicionário. As últimas "palavras" foram geradas aleatoriamente e existem apenas para garantir que os envios sejam suficientemente eficientes.
Verdade:
ant
owl
bass
pride
bobcat
peafowl
elephant
hedgehogs
crocodile
antidemocrat
aspidoganoidei
biodegradability
angioelephantiasis
propreantepenultimate
acategnukeaidabeleenaspcodcoidyakwakoasshogattkjaypigkobolcodidaskearaywelkwboaxbeeuflapaspoapemaassaaspeewoglmabiemuwjadogacagnuepigjaycownbatjaemuifoxkeaeekekeagratsseeluejdoghogaolmgpigbeaeelemulasphogjaydabemukgnunueifoasdoglrayyadogpewlayroassasslgnuaspyyakkbokeaodxilopgnuasppigkobelratelkolmakob
koigdgaspslycoyakehrdabowbatdkkeapogkobelrowlyarpidepetlfoxeboaiderbeefoxbgnuapeocowgiecowlkoieeltbategspemuideatdogbeeecatgeaoccattbbeassgnasolkeaflyelkaognubeeabrratoccolmobodoglyelraywelkoxantowleedrayflypeappigogatraoyakccpiganaaspkobabjaspkointantybjbeeanolmuijaylratojaynueidflyjarayabatmmpigtfly
eolmantjkobeeaorayogaowldfoxayeassapibatmflylyraelaspsseolmbelkkaoantlmufodasgnueantaidenthyakcodoxuepigodggnuantatlcatnuuelkpemucbapeeoiahdogplkowletbatdrayarayoaelkgrayodcatgkantewkobeljaybeeyfkobtbdabadoghbatfoxtflygaspdeidogtowlkeaolmyraelfleelejayehogowlccatoxeabiemkobpigolmdkobrcidekyakabboyidep
Falsy:
a
ox
ram
bear
koala
antelope
albatross
zookeeper
salamander
caterpillar
hippopotamus
koigdgaspslycoyakehrdabowbatdkkeapogkobelrowlyarpidepetlfoxeboaiderbeefoxbgnuapeocowgiecowlkoieeltbategspemuideatdogbeezcatgeaoccattbbeassgnasolkeaflyelkaognubeeabrratoccolmobodoglyelraywelkoxantowleedrayflypeappigogatraoyakccpiganaaspkobabjaspkointantybjbeeanolmuijaylratojaynueidflyjarayabatmmpigtfly
koigdgaspslycoyakehrdabowbatdkkeapogkobelrowlyarpidepetlfoxeboaiderbeefoxbgnuapeocowgiecowlkoieeltbategspemuideatdogbeeecatgeaoccattbbeassgnasolkeaflxelkaognubeeabrratoccolmobodoglyelraywelkoxantowleedrayflypeappigogatraoyakccpiganaaspkobabjaspkointantybjbeeanolmuijaylratojaynueidflyjarayabatmmpigtfly
beyeodpgspeclxlkbkaylldnceepkocbdmymsaogsowpbawbauaioluaaagaetdoaoialeoxaagspoelegflpylptylnolnatrjabaorkdteeydloiebbptatdtfdfgoodtbkoafmounbduaffcrfelcnawmxaskgaoenaattbaobgbgabnhkesbgaaaaotafkiiieatworginaeowaehuddegooaalowaoososaksahoimkulbtoadyyelkcmkacbuostadppcuglbnmotedfgfkoleldonknemomnmoutykg
You may optionally receive this list as input
- isso significa que não conta para o placar, enquanto que o código seria?