Does this account hold every right
Access control packs rights into a bitfield. A guard checks whether an account holds all of the rights an action needs.
- Both values are bitfields: a set bit means that right is present or required.
- Return true only when every required right is also held.
- Requiring nothing is always satisfied.
- Extra rights the account holds do not matter.
holdsEveryRight(held: int, needed: int) → bool
C++ needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.
Where you start
bool holdsEveryRight(int held, int needed) {
}
Worked examples
| Call | Result |
|---|---|
holdsEveryRight(7, 5) | true |
holdsEveryRight(5, 7) | false |
holdsEveryRight(0, 0) | true |
holdsEveryRight(8, 0) | true |
Hint
Mask what is held against what is needed. If the masked result still equals what was needed, nothing was missing.
Reference solution in C++
bool holdsEveryRight(int held, int needed) {
return (held & needed) == needed;
}