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
Go 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
func holdsEveryRight(held int, needed int) bool {
}
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 Go
func holdsEveryRight(held int, needed int) bool {
return held&needed == needed
}