从一周中的几天 (MTWTFSS) 中构建掩码,以仅通过基本运算符查找特定日期是否匹配
Building a mask out of a selection of days of week (MTWTFSS) to find whether a specific day matches via basic operators only
给定星期几的选择,我需要知道特定的一天是否与选择匹配。
例如,给定:
enum DayOfWeek {
MON, TUE, WED, THU, FRI, SAT, SUN
}
以及以下选择:
List<DayOfWeek> selection = List.of(MON, WED);
如果给定的星期几是 MON
或 WED
,则它应该匹配,否则不应该匹配。
一个简单的方法:
boolean match = selection.contains(day.getDayOfWeek());
我想知道是否有一种方法可以根据选择构建掩码,并确定给定日期是否仅与基本运算符匹配(+ - * / % AND OR NOT EQ LT LTE GT GTE
,不允许按位运算符)。
例如,给定相同的选择:
int mask = 1010000; // just an example of a mask, can be any other
然后:
boolean match = fn(mask, day.getDayOfWeek());
是否存在这样的 mask
以便 fn
可以只用基本运算符编写?
取一些素数而不是布尔方法
MON, TUE, WED, THU, FRI, SAT, SUN
2, 3, 5, 7, 11, 13, 17
面膜由所选日期的产品组成,例如(MON, WED) -> 2*5 = 10
dayOfWeek 匹配当且仅当它除以掩码(同上mask % dayOfWeek === 0
)
例如
TUE -> 3, mask % 3 != 0
,未入选
MON -> 2, mask % 2 === 0
, 入选中
给定星期几的选择,我需要知道特定的一天是否与选择匹配。
例如,给定:
enum DayOfWeek {
MON, TUE, WED, THU, FRI, SAT, SUN
}
以及以下选择:
List<DayOfWeek> selection = List.of(MON, WED);
如果给定的星期几是 MON
或 WED
,则它应该匹配,否则不应该匹配。
一个简单的方法:
boolean match = selection.contains(day.getDayOfWeek());
我想知道是否有一种方法可以根据选择构建掩码,并确定给定日期是否仅与基本运算符匹配(+ - * / % AND OR NOT EQ LT LTE GT GTE
,不允许按位运算符)。
例如,给定相同的选择:
int mask = 1010000; // just an example of a mask, can be any other
然后:
boolean match = fn(mask, day.getDayOfWeek());
是否存在这样的 mask
以便 fn
可以只用基本运算符编写?
取一些素数而不是布尔方法
MON, TUE, WED, THU, FRI, SAT, SUN
2, 3, 5, 7, 11, 13, 17
面膜由所选日期的产品组成,例如(MON, WED) -> 2*5 = 10
dayOfWeek 匹配当且仅当它除以掩码(同上mask % dayOfWeek === 0
)
例如
TUE -> 3, mask % 3 != 0
,未入选MON -> 2, mask % 2 === 0
, 入选中