Quieres abrir un nuevo zoológico. Será asombroso. Pero siendo el tacaño que eres, solo quieres permitirte animales de tres letras (todos saben que el costo de un animal es proporcional a la longitud de su nombre). Ahí va tu sueño de hacer que la gente pague para ver un elephant
. Pero de repente tienes una idea brillante. Si solo coloca los animales correctamente en el corral, ¡puede crear la ilusión óptica de un elephant
! Aquí hay una vista de arriba hacia abajo de su nuevo "compuesto de elefante":
elk
eel
pig
hog
ant
-------- (fence)
^
| viewing direction
Jaja, esos crédulos visitantes!
Sí, así es como funciona la percepción.
El reto
Dada una palabra no vacía que consiste solo en letras minúsculas en inglés, determine si se puede formar solapando las siguientes 30 palabras animales de tres 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
Sí, hay más de 30, pero ese es un buen número redondo.
Opcionalmente, puede recibir esta lista como entrada (en cualquier lista razonable o formato de cadena, siempre que no esté preprocesada). Probablemente desee hacer esto, a menos que leer y procesar esta lista de entrada sea mucho más costoso que codificarlo y comprimirlo en el idioma que elija. Tenga en cuenta que incluso si toma la lista como entrada, puede suponer que siempre será exactamente esta lista, por lo que si su código se basa en que la lista aprobada tiene 30 elementos y no contiene una palabra z
, está bien.
Cada palabra se puede usar varias veces. Los animales no pueden ser cortados en los extremos, solo parcialmente ocultos por otros animales. Entonces ox
no es una cadena posible, aunque la tengamos fox
.
La salida debe ser veraz si esto es posible, y falsa de lo contrario.
Puede escribir un programa o función, tomando la entrada a través de STDIN (o la alternativa más cercana), argumento de línea de comando o argumento de función y generando el resultado a través de STDOUT (o la alternativa más cercana), el valor de retorno de la función o el parámetro de función (out).
Su código debe manejar cualquiera de los casos de prueba en unos segundos.
Aplican reglas estándar de código de golf .
Más ejemplos
- Cualquier palabra de una o dos letras es obviamente falsa.
- Lo mismo ocurre con cualquier palabra de tres letras que no esté en la lista anterior.
- A pesar de que tenemos
gnu
yrat
,gnat
es falso, ya que no hay forma de organizarlos de modo que solo veas dos letras de cada uno (no queremos cortar animales en tercios).
Algunos ejemplos verdaderos:
pigment
ant
bee
olm
pig
antioxidant
fox
koi ide
ant ant
Casos de prueba
La mayoría de los casos de prueba se tomaron de ejecutar una implementación de referencia contra un diccionario. Las últimas "palabras" se generaron al azar y están ahí para garantizar que las presentaciones sean lo suficientemente eficientes.
Verdad:
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
- ¿eso significa que no cuenta para el puntaje, mientras que codificarlo sí?