- 20, Oct 2024
- #1
Вы историк, изучающий давно забытый язык. Вы только что обнаружили глиняную табличку, на которой, кажется, перечислены все известные слова языка в алфавитном порядке. Ваша задача — найти порядок этого алфавита, если он существует.
Задача
Имея упорядоченный список слов, попытайтесь вывести упорядоченный список символов такой, что:
- Каждый символ слов в списке слов появляется в списке символов ровно один раз.
- Указанный список слов сортируется «в алфавитном порядке» в соответствии со списком символов.
Если (и только если) ни один список символов не может удовлетворить этим требованиям, выведите значение false/fail по вашему выбору. В своем ответе вы должны указать выбранное вами значение.
Примечательно, что для данного списка слов возможно более одного алфавитного порядка; Если у нас есть слова Cod, Com и Dy, все, что можно предположить, это то, что C стоит перед D, а d стоит перед m. Буквы o и y занимают различные допустимые позиции в сгенерированном алфавите. Для большей ясности вот некоторые (но не все) допустимые результаты для этого списка слов:
Input: GREG HOUSE ROCK AND ROLL Output: [falsy] Input: b5OtM bb5O MO Mtt 5 Output: [falsy] Input: a aa aaa aaaaa aaaa Output: [falsy]
Если существует несколько допустимых списков символов, ваш код должен вывести либо один действительный ответ или все действительные ответы, последовательно.
Правила
- Ваш ввод представляет собой список слов, который можно ввести в любом разумном формате. Языкам только вывода разрешено включать этот список слов в свои исходные данные/программу без дополнительных затрат байтов.
- Список слов будет содержать как минимум два слова, и никакие два слова не будут одинаковыми.
- Любой буквенно-цифровой символ
Input: bob cat chat dog hat hot guy Output: tuybcdaohg Input: A Aa AA Bb Ba Output: baAB Input: 147 172 120 04 07 Output: 14720
may be included as a character in the wordlist. - Слова читаются слева направо и располагаются в алфавитном порядке сначала по самому левому символу, затем по следующему символу и т. д.
- Два слова, начинающиеся с одной и той же подстроки, располагаются в алфавитном порядке только в том случае, если более короткое из двух слов стоит первым (например, «CAR» должно идти перед «CARP»).
- Прописные и строчные буквы одного и того же символа считаются разными символами, т. е. алфавит чувствителен к регистру.
- Вы можете вывести каждый алфавит в любом приемлемом формате, но каждый символ должен содержать каждый символ, присутствующий в списке слов, ровно один раз, и никаких других символов. (Это требование, конечно, не распространяется на ложные/неудачные выходы)
Примеры
Ваши правильные результаты могут не совпадать со всем этим, поскольку любой список слов может содержать более одного правильного алфавита. У некоторых может быть только один правильный ответ.
[A-Za-z0-9]
Примеры ложного вывода
Эти должен все они являются ложными выходными данными и могут использоваться в качестве тестовых примеров.
Input: Cod Com Dy
Output: CDdmoy
Output: CDdmyo
Output: CDdomy
Output: CoDdym
Output: dmCDoy
Output: dCmDoy
Output: CdoymD
Output: dyCoDm
Output: yodmCD
Подсчет очков
Это значит, что выигрывает самый короткий код. :)
#код-гольф #код-гольф