挑战说明
甲Langford的字符串的顺序N被定义为如下:
- 字符串的长度等于
2*N, - 该字符串包含
N英语字母的第一个字母,每个字母出现两次, - 对于每一对相同的字母,还有
M他们之间的信件,其中M是字母的字母表中的位置(A = 1,B = 2,...,Z = 26)。
举例来说,秩序的只有两种可能兰福德字符串3是BCABAC和CABACB。如您所见,在这两个字符串中A,两个之间都有一个字母,两个之间有两个字母,两个之间有B三个字母C。给定一个正整数N,输出所有兰福德顺序的字符串N(以任何合理的格式:用换行符将它们一一打印,返回列表/数组...)。
样本输入/输出
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> #
笔记
- 的顺序Langford的串
N只能产生时N ≡ 0 (mod 4)或者N ≡ 3 (mod 4), - 您可以同时使用小写和大写字母,
- 您也可以使用后续数字(
012...或123...代替ABC...) - 未指定输出时应出现的字符串顺序,
- 输出可能会很长(例如,有超过5万亿个不同的Langford指令串
20),因此您的程序实际上不需要全部输出它们,但是它必须在理论上起作用(给定的时间和内存)。 - 该挑战来自/ r / dailyprogrammer,所有功劳归于/ u / XenophonOfAthens
4
沙箱中存在一个密切相关的挑战。虽然根本不需要,但这通常是一个好主意,并且有礼貌地检查那里是否有重复项。
—
马丁·恩德
我们可以只输出数字数组吗?
—
Leaky Nun
@LeakyNun:当然,为什么不呢。我更新了说明。
—
shooqie