Descrição do Desafio
Uma sequência de pedidos LangfordN
é definida da seguinte maneira:
- O comprimento da string é igual a
2*N
, - A sequência contém as primeiras
N
letras do alfabeto inglês, cada letra aparecendo duas vezes, - Para cada par das mesmas letras, há
M
cartas entre eles, ondeM
é a posição dessa letra do alfabeto (A = 1
,B = 2
,...
,Z = 26
).
Por exemplo, as únicas duas possíveis sequências de ordem Langford 3
são BCABAC
e CABACB
. Como você pode ver, em ambas as cadeias há uma letra entre dois A
, duas letras entre B
'e três letras entre C
' s. Dado um número inteiro positivo N
, produza todas as sequências de ordem Langford N
(em qualquer formato razoável: imprima-as uma a uma, separadas por uma nova linha, retorne uma lista / matriz ...).
Amostras de entradas / saídas
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
- As seqüências de ordem Langford
N
só podem ser produzidas quandoN ≡ 0 (mod 4)
ouN ≡ 3 (mod 4)
, - Você pode usar letras minúsculas e maiúsculas,
- Você também pode usar números subsequentes (
012...
ou em123...
vez deABC...
) - A ordem das seqüências em que elas devem aparecer como saída não é especificada,
- A saída pode ser bastante longa (por exemplo, existem mais de 5 trilhões de sequências de ordem Langford distintas
20
), portanto, seu programa não precisa realmente produzir todas, mas precisa trabalhar na teoria (com tempo e memória suficientes). - Este desafio foi retirado de / r / dailyprogrammer , todo o crédito vai para / u / XenophonOfAthens
Respostas:
CJam (23 bytes)
Demonstração online . Este é um bloco anônimo (função) que recebe entrada na pilha e deixa a saída na pilha na forma de uma matriz de matrizes de números inteiros sequenciais baseados em 0.
fonte
Braquilog , 43 bytes
Experimente online!
fonte