Beschreibung der Herausforderung
Eine Langford- Ordnungszeichenfolge N
ist wie folgt definiert:
- Die Länge der Zeichenfolge ist gleich
2*N
, - Die Zeichenfolge enthält die ersten
N
Buchstaben des englischen Alphabets, wobei jeder Buchstabe zweimal vorkommt. - Für jedes Paar von den gleichen Buchstaben gibt es
M
Briefe zwischen ihnen, woM
ist Position ist das Buchstabe im Alphabet (A = 1
,B = 2
,...
,Z = 26
).
Zum Beispiel sind die nur zwei möglichen Langford Saiten Ordnung 3
sind BCABAC
und CABACB
. Wie Sie sehen können, gibt es in diesen beiden Zeichenfolgen einen Buchstaben zwischen zwei A
, zwei Buchstaben zwischen zwei B
und drei Buchstaben zwischen zwei C
. Geben Sie bei einer positiven Ganzzahl N
alle Langford-Zeichenfolgen der Reihenfolge aus N
(in einem beliebigen vernünftigen Format: Drucken Sie sie einzeln durch einen Zeilenumbruch getrennt aus und geben Sie eine Liste / ein Array zurück ...).
Beispiel Ein- / Ausgänge
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> #
Anmerkungen
- Langford-Ordnungsketten
N
können nur hergestellt werden, wennN ≡ 0 (mod 4)
oderN ≡ 3 (mod 4)
, - Sie können sowohl Klein- als auch Großbuchstaben verwenden.
- Sie können auch nachfolgende Nummern verwenden (
012...
oder123...
anstelle vonABC...
) - Die Reihenfolge der Zeichenfolgen, in denen sie als Ausgabe angezeigt werden sollen, ist nicht angegeben.
- Die Ausgabe kann sehr langwierig sein (zum Beispiel gibt es über 5 Billionen verschiedene Langford-Ordnungszeichenfolgen
20
), sodass Ihr Programm nicht alle ausgeben muss, sondern theoretisch funktionieren muss (bei genügend Zeit und Speicher). - Diese Herausforderung wurde von / r / dailyprogrammer übernommen , alle Gutschriften gehen an / u / XenophonOfAthens
Antworten:
CJam (23 Bytes)
Online-Demo . Dies ist ein anonymer Block (Funktion), der Eingaben auf dem Stapel entgegennimmt und Ausgaben auf dem Stapel in Form eines Arrays von Arrays von 0-basierten sequentiellen Ganzzahlen hinterlässt.
quelle
Brachylog , 43 Bytes
Probieren Sie es online aus!
quelle