Учитывая ввод списка слов и их сокращений, выведите шаблон, по которому могут быть сформированы сокращения.
Давайте возьмем пример ввода
potato ptao
puzzle pzze
в качестве примера (то есть сокращение для potato
is ptao
, а сокращение для puzzle
is pzze
).
Рассмотрим все возможные способы получения ptao
от potato
. Один из возможных способов - взять первую, третью, четвертую и шестую буквы, которые мы будем называть
1346
. Но так как t
и o
появляться несколько раз в слове, есть несколько других возможных способов получения ptao
из potato
: 1546
, 1342
и 1542
.
Кроме того , заметим , что pzze
могут быть получены из puzzle
с любым из 1336
,
1346
, 1436
, 1446
. Единственный образец, который объединяет эти две аббревиатуры 1346
: следовательно, это должен быть выход для этого ввода. Если возможно несколько возможных шаблонов, вы можете вывести любой, некоторые или все из них (хотя бы один).
Вы можете предположить, что:
Входные слова и сокращения содержат только строчные буквы.
На входе есть хотя бы одна пара слово / аббревиатура.
Каждое сокращение может быть сформировано из соответствующего слова.
Всегда будет хотя бы один шаблон, который образует каждую аббревиатуру.
Максимальная длина каждого слова составляет 9 символов.
В качестве входных данных можно использовать любое из следующего:
2-мерный массив / список / массив кортежей / и т. Д.
[[word, abbr], [word, abbr], ...]
плоский одномерный массив / список
[word, abbr, word, abbr, ...]
одна строка, разделенная любым отдельным символом, который не является строчной буквой
"word abbr word abbr"
хэш / ассоциативный массив / и т.д.
{word => abbr, word => abbr, ...}
В любом из этих вариантов ввода вам также разрешено менять порядок слова / abbr (пожалуйста, полностью опишите формат ввода в вашем посте).
Вывод может быть задан как одно число, строка, разделенная нецифрами, или массив / list / tuple / etc. чисел.
Поскольку это код-гольф , победит самый короткий код в байтах.
Контрольные примеры (помните, что вам нужно выводить результаты ≥1 только в случае работы нескольких шаблонов):
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