Описание задачи
Лангфорд строка заказа Nопределяется следующим образом :
- Длина строки равна
2*N, - Строка содержит первые
Nбуквы английского алфавита, каждая буква появляется дважды, - Для каждой пары одинаковых букв, есть
Mбуквы между ними, гдеMпозиция этой буквы в алфавите (A = 1,B = 2,...,Z = 26).
Например, единственные две возможные последовательности порядка Лэнгфорда - 3это BCABACи CABACB. Как видите, в обеих этих строках есть одна буква между двумя A, две буквы между Bи три буквы между C. Если задано положительное целое число N, выведите все строки порядка Лэнгфорда N(в любом разумном формате: выведите их одну за другой через пробел, верните список / массив ...).
Образцы входов / выходов
3: [CABACB, BCABAC]
4: [DACABDCB, BCDBACAD]
5: # no output #
7: [GCFBECBDGFEADA, GBFCBDECGFDAEA, GBDFBCEDGCFAEA, GCAFACDEGBFDBE, GADAFCEDGCBFEB, GACAFDCEGBDFBE, GDAEAFDCGEBCFB, GBDEBFCDGECAFA, EGBFCBEDCGFADA, CGDFCBEDBGFAEA, EGDAFAEDCGBFCB, EGBCFBECDGAFAD, AGABFDBECGDFCE, EGADAFECDGBCFB, AGABEFBCDGECFD, BGDBCEFDCGAEAF, FBGDBCEFDCGAEA, BFGBAEADFCGEDC, CFGACADEFBGDBE, EAGAFBEDBCGFDC, BCGBFCEADAGFED, DAGAFDBECBGFCE, EBGCBFECDAGAFD, CEGDCFBEDBGAFA, CEGBCFBEDAGAFD, BDGBCFDECAGAFE, EFAGACEDFCBGDB, DFAGADEBFCBGEC, AFAGBDEBFCDGEC, DFAGADCEFBCGBE, ECFGBCEBDFAGAD, DEFGADAECFBGCB, CDFGCBDEBFAGAE, EBDGBFEDACAGFC, CDEGCFDAEABGFB, AEAGCDFECBDGBF, FAEAGCDFECBDGB, DFCEGDCBFEBAGA, BFCBGDCEFADAGE, ECFDGCEBDFBAGA, DAFAGDCEBFCBGE, BCFBGCDEAFADGE, AEAFGBDEBCFDGC, ADAFGCDEBCFBGE, AFACEGDCFBEDBG, BFCBEGCDFAEADG, EBFDBGECDFACAG, BEFBCGDECFADAG, EBDFBGEDCAFACG, AEAFCGDECBFDBG, AEADFGCEDBCFBG, ADAEFGDBCEBFCG]
12: # <216288 strings> #
Заметки
- Лэнгфорд строка заказа
Nможет быть произведена только тогда , когдаN ≡ 0 (mod 4)илиN ≡ 3 (mod 4), - Вы можете использовать как строчные, так и прописные буквы,
- Вы также можете использовать последующие номера (
012...или123...вместоABC...) - Порядок строк, в которых они должны отображаться в качестве выходных данных, не указан,
- Вывод может быть довольно длинным (например, существует более 5 триллионов различных строк порядка Лэнгфорда
20), поэтому вашей программе на самом деле не нужно выводить их все, но она должна работать теоретически (при условии достаточного времени и памяти). - Эта задача была взята из / r / dailyprogrammer , все кредиты идут в / u / XenophonOfAthens
4
В песочнице тесно связана проблема. Хотя это ни в коем случае не требуется, обычно это хорошая идея и, возможно, вежливая проверка на наличие дубликатов.
—
Мартин Эндер
Можем ли мы просто вывести массив чисел?
—
Утренняя монахиня
@LeakyNun: Конечно, почему бы и нет. Я обновил описание.
—
shooqie