Coding Grandmaster ยท project 18 of 46 ยท premium, free for now
Permission flags
With READ = 4, WRITE = 2 and EXEC = 1, write grant(perms, flag), revoke(perms, flag), has(perms, flag) and describe(perms) which returns text like r-x (r, w and x, or - for a missing one).
Learn
Real systems pack many yes/no settings into one number, a bit field. File permissions work this way: READ is 4, WRITE is 2, EXECUTE is 1 (in the classic scheme), and 6 means read plus write. Granting a permission is OR, revoking is AND with the inverse, and checking is AND.
Your task
With READ = 4, WRITE = 2 and EXEC = 1, write grant(perms, flag), revoke(perms, flag), has(perms, flag) and describe(perms) which returns text like r-x (r, w and x, or - for a missing one).
Stretch challenge
Add a function that turns a text like rw- back into the number 6.
Press Run to see what your program prints.
More in this module
Keep going in Coding Grandmaster
Seeing the bits
Print each of 5, 12 and 255 as 8 binary digits, and write count_ones(n) that counts the 1 bits using & and >>.
Start โ14One-line bit tricks
Write is_power_of_two(n) using n & (n - 1), is_odd(n) using n & 1, and print the powers of two up to 200 using a list comprehension.
Start โ15XOR magic
Swap a and b with three XOR lines (no temporary variable), and write lonely(numbers) that returns the number that appears only once by XOR-ing everything together.
Start โ16Set, clear and toggle
Write set_bit(n, i), clear_bit(n, i), toggle_bit(n, i) and test_bit(n, i) (True or False) using shifts and bitwise operators.
Start โ17Every subset
Write subsets(items) returning a list of every subset as a list, in the order of the counter 0 to 2^n โ 1, using bit tests. Print how many subsets four items have, and the subsets of two items.
Start โPractise the idea
๐ Play Codebreaker
Crack a hidden colour code using exact-match and misplaced-colour clues. The puzzle adjusts to your solve record.
FAQ
Permission flags: common questions
I am stuck. What can I do?
Press Hint for a nudge, read the message next to each goal, and compare your code with the lesson text. If you still need it, Show answer reveals a model solution. Try to type it yourself rather than copy it.
Does my work get saved?
Your ticks and XP are saved in this browser, and in your account if you log in. The code you type is not stored on a server.
Start a conversation
Enjoying coding? Meet a teacher.
Tell us the learner's age, country and what they would like to build, and we will suggest a class. A parent or guardian can make the enquiry.
- Tell us the learnerโs age or grade and goals
- Weโll suggest a suitable class or learning path
- Weโll confirm format, timing and fees with a parent or guardian
Play it, don't just read it
Write some code right now
Free games that need no sign-up. Pick one and play for five minutes.
Pick a game
- Bug HunterA Python program prints the wrong answer. Find the one line with theโฆPlay
- Predict the OutputRead a short Python program and choose what it prints. Then watch it runโฆPlay
- Code BuilderThe lines of a Python program are mixed up. Tap them into the rightโฆPlay
- Code JungleWrite real Python to guide Miko the monkey to every banana. 24 levels:โฆPlay