Контест Junior Типы и нулевые значения обновлено
Права доступа битовой маской на Go
Условие
Права пользователей хранятся битовой маской: read = 1, write = 2, exec = 4, admin = 8. Изначально у всех маска 0. Обработайте команды:
grant <user> <perm>: выдать право;revoke <user> <perm>: отозвать право (если его нет, ничего не меняется);check <user> <perm>: вывестиYES, если право есть, иначеNO. Пользователь с правомadminпроходит любую проверку.
После всех команд выведите строку ---, а затем для каждого упомянутого в командах пользователя строку <user> <маска> в порядке возрастания имён.
Ввод: n (1 ≤ n ≤ 2000), затем n команд. Имена из латиницы и цифр.
Пример
6
grant anna read
grant anna write
check anna write
check anna exec
revoke anna read
check boris read
YES
NO
NO
---
anna 2
boris 0
Как подойти
Тип Perm с константами через iota, map[string]Perm, операции |=, &^= и &, в конце сортировка ключей.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Перевод числа между системами счисления на Go
Следующий вопрос
Наименьший целый тип для суммы на Go