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
Nletras do alfabeto inglês, cada letra aparecendo duas vezes, - Para cada par das mesmas letras, há
Mcartas 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 3são BCABACe 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
Nsó 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
4
Há um desafio estreitamente relacionado na sandbox. Embora de maneira alguma seja necessário, geralmente é uma boa ideia e provavelmente educado também verificar se há duplicatas.
—
Martin Ender
Podemos apenas produzir uma matriz de números?
—
Leaky Nun
@LeakyNun: Claro, por que não. Eu atualizei a descrição.
—
shooqie