不考虑算法直接调combinations函数倒是省心,每个语言都能写出个几乎一样的:
(doseq [c (clojure.contrib.combinatorics/combinations "abcdef" 3) :when (zero? (.indexOf c \a))] (println [c (clojure.set/difference (set "abcdef") c)]))
[(a b c) #{d e f}]
[(a b d) #{c e f}]
[(a b e) #{c d f}]
[(a b f) #{c d e}]
[(a c d) #{b e f}]
[(a c e) #{b d f}]
[(a c f) #{b d e}]
[(a d e) #{b c f}]
[(a d f) #{b c e}]
[(a e f) #{b c d}]
【 在 GoldenBull (祝病魔早日战胜方老师) 的大作中提到: 】
: 标 题: Re: 请用编程解决问题
: 发信站: 水木社区 (Thu Apr 23 22:07:56 2020), 站内
:
: from itertools import combinations
: x = set(range(6))
: print([(c, x-set(c)) for c in combinations(x,3) if 0 in c])
:
: [((0, 1, 2), {3, 4, 5}),
: ((0, 1, 3), {2, 4, 5}),
: ((0, 1, 4), {2, 3, 5}),
: ((0, 1, 5), {2, 3, 4}),
: ((0, 2, 3), {1, 4, 5}),
: ((0, 2, 4), {1, 3, 5}),
: ((0, 2, 5), {1, 3, 4}),
: ((0, 3, 4), {1, 2, 5}),
: ((0, 3, 5), {1, 2, 4}),
: ((0, 4, 5), {1, 2, 3})]
:
: 【 在 javame (javame) 的大作中提到: 】
: : 请用编程解决问题
: : 有a,b,c,d,e,f一共6位足球运动员
: : 拆成3个队员 === 3个队员的比赛。编程,
: : ...................
:
: --
: 奥雷连诺第二既不相信广场上的大屠杀事件,也不相信夜间列车载着尸体开往海边
: 的恶梦。前一天晚上,马孔多宣布了政府的特别通告,说工人们服从命令离开了车
: 站,成群地安然回家去了。通告中还说,工人领袖们怀着崇高的爱国热情,把他们
: 的要求归结为两点:改革医疗设施,棚区修建公共厕所。
: “马孔多过去没有发生、现在没有发生、将来也不会发生任何事情。这是一个幸福
: 的市镇。”
:
:
: ※ 来源:·水木社区 newsmth.net·[FROM: 221.217.106.*]
--
FROM 14.205.174.*