介绍
Dobble / Spot这是一种纸牌游戏,人们必须在最短的时间内在一对纸牌上发现相同的符号,并指出并移到下一对。每张卡具有多个符号(普通版为8个),但每对卡之间恰好有一个共同的符号。
挑战
编写一个程序,给定一组符号(单个ascii字符)和单个卡上的符号数量,将生成输出列表卡,其中每个卡都有符号。显然有许多等效的组合,您的程序只需要编写任何组合就可以为给定的输入产生最大数量的卡片。
这是一个代码问题,因此代码越短越好。
如果在最复杂的情况下,在宇宙热死之前完成计算,那将也很好。
输入值
函数/ stdin的两个参数(您的选择)
首先是符号的集合,例如'ABCDE'或['A','B','C','D','E']-您选择的格式,可以是字符串,集合,列表,流,或所选择语言的惯用语言。字符将从[A-Za-z0-9]的集合中给出,不能重复(因此输入符号集的最大大小为62)。它们不会在(因此您也可以在6个符号的情况下获得“ yX4i9A”)。
第二个参数是整数,表示单张卡上的符号数量。小于符号集的大小。
输出量
打印用换行符分隔的多行,每行包含一张卡的符号。
例子
ABC
2
>>>>
AB
BC
AC
要么
ABCDEFG
3
>>>>
ABC
BDE
CEF
BFG
AEG
CDG
ADF
要么
ABCDE
4
>>>>
ABCD
提示
- 所产生的卡片数量不能大于不同符号的数量,并且在许多组合中,它将大大减少
- 如果您需要数学方面的帮助,则可能需要阅读一些数学背景
这是我第一次挑战高尔夫代码,因此请原谅格式/样式方面的可能问题-如果您在注释中指出错误,则我将尝试更正。
('abcdefghijklmnopqrstu', 5)
-> ['abcde', 'afghi', 'ajklm', 'anopq', 'arstu', 'bfjnr', 'bgkpt', 'bhlou', 'bimqs', 'cfkqu', 'cgjos', 'chmpr', 'cilnt', 'dfmot', 'dglqr', 'dhkns', 'dijpu', 'eflps', 'egmnu', 'ehjqt', 'eikor']
或其他一些21卡工作解决方案。(请注意,这是4阶的投影有限平面)。