Description du défi
Une chaîne de commande LangfordN
est définie comme suit:
- La longueur de la chaîne est égale à
2*N
, - La chaîne contient les premières
N
lettres de l'alphabet anglais, chaque lettre apparaissant deux fois, - Pour chaque paire des mêmes lettres, il y a des
M
lettres entre eux, oùM
est la position de cette lettre dans l'alphabet (A = 1
,B = 2
,...
,Z = 26
).
Par exemple, les deux seules chaînes d'ordre Langford possibles 3
sont BCABAC
et CABACB
. Comme vous pouvez le voir, dans ces deux chaînes, il y a une lettre entre deux A
, deux lettres entre B
et trois lettres entre C
. Étant donné un entier positif N
, sortez toutes les chaînes d'ordre de Langford N
(dans n'importe quel format raisonnable: imprimez-les une par une, séparées par une nouvelle ligne, retournez une liste / un tableau ...).
Exemples d'entrées / sorties
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> #
Remarques
- Les chaînes de commande de Langford
N
ne peuvent être produites que siN ≡ 0 (mod 4)
ouN ≡ 3 (mod 4)
, - Vous pouvez utiliser à la fois des minuscules et des majuscules,
- Vous pouvez également utiliser les numéros suivants (
012...
ou123...
au lieu deABC...
) - L'ordre des chaînes dans lesquelles elles doivent apparaître en sortie n'est pas spécifié,
- La sortie peut être assez longue (par exemple, il y a plus de 5 billions de chaînes de commande Langford distinctes
20
), donc votre programme n'a pas besoin de les sortir toutes, mais il doit fonctionner en théorie (avec suffisamment de temps et de mémoire). - Ce défi provient de / r / Dailyprogrammer , tout le mérite revient à / u / XenophonOfAthens
Réponses:
CJam (23 octets)
Démo en ligne . Il s'agit d'un bloc anonyme (fonction) qui prend des entrées sur la pile et laisse des sorties sur la pile sous la forme d'un tableau de tableaux d'entiers séquentiels basés sur 0.
la source
Brachylog , 43 octets
Essayez-le en ligne!
la source