Ленгфордські струни


11

Опис виклику

Лангфорд рядок замовлення 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
У пісочниці є складне завдання. Хоча це ні в якому разі не вимагає, це, як правило, хороша ідея і, мабуть, ввічливо перевірити там і на копії.
Мартін Ендер

Чи можемо ми просто вивести масив чисел?
Leaky Nun

@LeakyNun: Звичайно, чому б ні. Я оновив опис.
shooqie

1
Я посилаюся на це (запустіть програму)
Leaky Nun

Відповіді:


3

CJam (23 байти)

{,2*e!{__f{\a/1=,(}=},}

Інтернет демо . Це анонімний блок (функція), який приймає вклад на стек і залишає вихід на стеку у вигляді масиву масивів послідовних цілих чисел на основі 0.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.