Descripción del desafío
Una cadena de orden de LangfordN
se define de la siguiente manera:
- La longitud de la cadena es igual a
2*N
, - La cadena contiene las primeras
N
letras del alfabeto inglés, cada letra aparece dos veces, - Para cada par de las mismas letras, hay
M
cartas entre ellos, dondeM
es la posición de esa letra del alfabeto (A = 1
,B = 2
,...
,Z = 26
).
Por ejemplo, las únicas dos posibles cadenas de orden de Langford 3
son BCABAC
y CABACB
. Como puede ver, en ambas cadenas hay una letra entre dos A
, dos letras entre B
tres y tres letras entre ellas C
. Dado un entero positivo N
, genera todas las cadenas de orden de Langford N
(en cualquier formato razonable: imprímalas una por una separadas por una nueva línea, devuelve una lista / matriz ...).
Muestra de entradas / salidas
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> #
Notas
- Las cadenas de orden de Langford
N
solo se pueden producir cuandoN ≡ 0 (mod 4)
oN ≡ 3 (mod 4)
, - Puede usar letras minúsculas y mayúsculas,
- También puede usar números posteriores (
012...
o en123...
lugar deABC...
) - El orden de las cadenas en las que deberían aparecer como salida no está especificado,
- La salida puede ser bastante larga (por ejemplo, hay más de 5 billones de cadenas de orden de Langford distintas
20
), por lo que su programa en realidad no necesita generarlas todas, pero tiene que funcionar en teoría (dado el tiempo y la memoria suficientes). - Este desafío ha sido tomado de / r / dailyprogrammer , todo el crédito va a / u / XenophonOfAthens
Respuestas:
CJam (23 bytes)
Demo en línea . Este es un bloque anónimo (función) que toma la entrada en la pila y deja la salida en la pila en forma de una matriz de matrices de enteros secuenciales basados en 0.
fuente
Brachylog , 43 bytes
Pruébalo en línea!
fuente