Objetivo
A veces los menús de la cena pueden tener nombres largos y sin aliento. Es mucho más fácil para el camarero escribir una abreviatura que identifique inequívocamente el plato.
Por ejemplo, dada esta lista:
beef burger
chicken burger
chicken nuggets
La abreviatura c n
coincide chicken nuggets
.
La abreviatura bur
coincide beef burger
y chicken burger
.
Escriba un programa de función que identifique uno o más elementos que coincidan con una abreviatura.
Entrada
- La cadena abreviada para encontrar.
- Una lista de elementos para buscar.
Puede cambiar este orden y usar cualquier tipo de datos adecuado.
Salida
- Si la abreviatura no coincide con ningún elemento:
Not found
- Si la abreviatura coincide inequívocamente con un elemento: envíe el elemento sin abreviar.
- Si la abreviatura coincide ambiguamente con varios elementos: genera una lista de palabras separadas por comas que harían que la selección no fuera ambigua, seguida de un signo de interrogación. El orden no es importante. Se permiten espacios adicionales.
Reglas a juego
Cada palabra en la abreviatura y los elementos se consideran por separado. Si una palabra abreviada coincide con el comienzo de una palabra de elemento, el elemento es una coincidencia potencial. Si ninguna de las palabras de un elemento comienza con ninguna de las palabras abreviadas, ese elemento no coincide.
Las palabras abreviadas pueden estar en cualquier orden.
Una palabra abreviada no se puede usar para hacer coincidir varias palabras de artículos y viceversa.
Las abreviaturas solo coinciden con el inicio de las palabras.
Suponga que ningún elemento contendrá todas las palabras de otro elemento. Por ejemplo, nunca tendrás beef burger
y beef cheese burger
.
Casos de prueba
Dada esta lista:
beef burger
crispy chicken burger
grilled chicken burger
chicken nuggets
chocolate cone
strawberry cone
vanilla cone
Estas abreviaturas dan la salida especificada:
fish Not found
cones Not found
chicken cone Not found
nilla Not found
v vanilla cone
be beef burger
c n chicken nuggets
b b beef burger
c b c crispy chicken burger
c b crispy,grilled?
bu beef,crispy,grilled?
or beef,crispy chicken,grilled chicken?
ch crispy,grilled,nuggets,cone?
or crispy chicken,grilled chicken,nuggets,cone?
Puntuación
Este es el código de golf. La respuesta más corta en bytes en 12 días gana aceptación. (Lo habría hecho una semana, pero no voy a estar ahí para eso).
c b
coincidiría en crispy chicken burger
lugar de ser ambigua. Cuando digo "palabra" me refiero a una cadena de caracteres delimitados por un espacio, también lo g c b
son tres palabras.
crispy,grilled,nuggets,chocolate
debería ser válido para el ch
caso de prueba? Con la segunda interpretación, chicken,grilled
debe ser válido para el c b
caso de prueba. ¿Qué me estoy perdiendo?
b b
beef burger
battered bacon
¿cuál sería la salida aceptable?
v
coincidevanilla cone
.