Ant*_*ony 2 database math unique combinatorics
这是一个数学问题,但我确信这必须出现在一些编程场景中,至少我希望如此,我想知道是否有这种情况的名称:
假设我有一个系列中的7个项目.为了这个例子,让我们使用一周中的几天.我希望用户提交他们计划在下一周进入的一周中的哪几天.它们带有一系列标准复选框,每周一个.
我想将它们在一个数据库字段中选择的日期存储为单个整数.
显然,我可以为每天分配一个数字,1 - 7(如果用户未选中所有选项,则保留0).但是如果一个用户选择星期一和星期二(1 + 2)而另一个用户选择星期三(3),那么我会遇到问题.
我还可以给一周中的每一天都有一些奇怪的独特之处,这样任何数字组合都不可能与任何其他组合相同.
我的希望是,不是为第二个场景组成这样一个系列,而是已经存在一些数字属性(可能是系列中每个数字的平方等),这些属性已经得到充分利用和尊重.理想情况下,这对编程来说非常熟悉,导出各个数字只需要很少的通用编程语言开销(在我的例子中是PHP).
我只是梦想这个,还是做这样的事情?
使用位掩码 - 2的幂.
Monday = 2 ^ 0 = 1
Tuesday = 2 ^ 1 = 2
Run Code Online (Sandbox Code Playgroud)
等等.然后星期一和星期二变成:
Monday | Tuesday = 3 (or 00000011 in binary)
Run Code Online (Sandbox Code Playgroud)
你可以用
Monday = 1
Tuesday = 2
Wednesday = 4
Thursday = 8
Friday = 16
Saturday = 32
Sunday = 64
Run Code Online (Sandbox Code Playgroud)
这些组合将是独一无二的.
然后周一和周二= 3,周三= 4.
这给出了C#中idee的一个很好的解释