Описание задачи
Лангфорд строка заказа 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
Ответы:
CJam (23 байта)
Демо онлайн . Это анонимный блок (функция), который принимает входные данные в стеке и оставляет выходные данные в стеке в виде массива массивов последовательных целых чисел от 0.
источник
Брахилог , 43 байта
Попробуйте онлайн!
источник