Dada a entrada de uma lista de palavras e suas abreviações, produza o padrão pelo qual as abreviações podem ser formadas.
Vamos dar o exemplo de entrada de
potato ptao
puzzle pzze
como um exemplo (ou seja, a abreviação de potato
é ptao
e a abreviação de puzzle
é pzze
).
Considere todas as maneiras possíveis para obter ptao
a partir potato
. Uma maneira possível é usar a primeira, terceira, quarta e sexta letras, às quais iremos nos referir
1346
. Mas desde t
e o
aparecer várias vezes na palavra, existem várias outras maneiras possíveis para gerar ptao
a partir de potato
: 1546
, 1342
e 1542
.
Da mesma forma, nota que pzze
pode ser gerado a partir puzzle
de qualquer um 1336
,
1346
, 1436
, 1446
. O único padrão que essas duas abreviações têm em comum é 1346
; portanto, essa deve ser a saída para esta entrada. Se vários padrões possíveis forem possíveis, você poderá gerar um, alguns ou todos eles (pelo menos um).
Você pode assumir que:
As palavras e abreviações de entrada contêm apenas letras minúsculas.
Há pelo menos um par de palavras / abreviações na entrada.
É possível que toda abreviação seja formada a partir da palavra correspondente.
Sempre haverá pelo menos um padrão que forma todas as abreviações.
O comprimento máximo de cada palavra é de 9 caracteres.
A entrada pode ser aceita como uma das seguintes opções:
Matriz bidimensional / lista / matriz de tuplas / etc.
[[word, abbr], [word, abbr], ...]
matriz / lista unidimensional plana
[word, abbr, word, abbr, ...]
sequência única, delimitada por qualquer caractere que não seja uma letra minúscula
"word abbr word abbr"
hash / array associativo / etc.
{word => abbr, word => abbr, ...}
Em qualquer uma dessas opções de entrada, você também pode trocar a ordem das palavras / abbr (descreva completamente o formato de entrada em sua postagem).
A saída pode ser fornecida como um número único, uma string delimitada por não-dígitos ou uma matriz / lista / tupla / etc. de números.
Como isso é código-golfe , o código mais curto em bytes será vencedor.
Casos de teste (lembre-se de que você só precisa gerar 1 ou mais resultados se vários padrões funcionarem):
In Out
--------------------------------------------------------
potato ptao puzzle pzze | 1346
aabbcc abc fddeef def | 246
prgrmming prgmg puzzles pzzlz | 14353
aaaaa a bbbb b ccc c dd d e e | 1
aaaaa a bbbb b ccc c | 1, 2, 3
abcxyz zbcyax | 623514
abcxyz acbbacbcbacbbac | 132213232132213
potato ptao | 1346, 1546, 1342, 1542
a aaaaa | 11111