我必须列出这样的列表:
a = ["1a","2a","3a","4a","5a","6a","7a","8a","9a","10a","11a","12a","13a","14a"]
b = ["1b","2b","3b","4b","5b","6b","7b","8b","9b","10b","11b","12b","13b","14b"]
我想要的是将它们组合起来,以便 a 中的元素与其对应的 b 中的元素之间至少存在n个元素的差异。
例如,如果我的n是 10,并且“3a”在位置 3 并且“3b”在位置 5,这不是一个解决方案,因为这些对应元素之间只有 2 的距离。
我已经通过蛮力方法解决了我想要的目的:打乱两个数组的并集,看看是否满足约束;如果不是,请再次随机播放,依此类推...不用说,对于 14 个元素的数组,有时需要 5 到 10 秒的计算才能产生最小距离为 10 的解决方案。尽管这对我来说还可以寻找,我很好奇如何以更优化的方式解决这个问题。
我目前正在使用 Python,但任何语言(或伪代码)的代码都非常受欢迎。
编辑:这个问题的背景有点像问卷,预计大约有 100 名参与者参加。因此,我不一定对所有解决方案感兴趣,而是对前 100 个感兴趣。
谢谢。