Descrizione della sfida
Una stringa di ordine LangfordN è definita come segue:
- La lunghezza della stringa è uguale a
2*N, - La stringa contiene le prime
Nlettere dell'alfabeto inglese, ogni lettera appare due volte, - Per ogni coppia di lettere uguali, ci sono
Mlettere tra loro, doveMè la posizione di tale lettera dell'alfabeto (A = 1,B = 2,...,Z = 26).
Ad esempio, le uniche due possibili stringhe dell'ordine di Langford 3sono BCABACe CABACB. Come puoi vedere, in entrambe queste stringhe c'è una lettera tra due A, due lettere tra Be tre tra C. Dato un numero intero positivo N, genera tutte le stringhe dell'ordine di Langford N(in qualsiasi formato ragionevole: stampale una per una separate da una nuova riga, restituisce un elenco / matrice ...).
Ingressi / uscite di esempio
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> #
Appunti
- Le stringhe dell'ordine di Langford
Npossono essere prodotte solo quandoN ≡ 0 (mod 4)oN ≡ 3 (mod 4), - Puoi utilizzare sia lettere minuscole che maiuscole,
- Puoi usare anche i numeri successivi (
012...o123...invece diABC...) - L'ordine delle stringhe in cui dovrebbero apparire come output non è specificato,
- L'output può essere piuttosto lungo (ad esempio, ci sono oltre 5 trilioni di stringhe di ordine Langford distinte
20), quindi il tuo programma in realtà non ha bisogno di emetterle tutte, ma deve funzionare in teoria (dato tempo e memoria sufficienti). - Questa sfida è stata presa da / r / dailyprogrammer , tutto il merito va a / u / XenophonOfAthens