Задача «Права доступа»

Условие

В файловую систему одного суперкомпьютера проник вирус, который сломал контроль за правами доступа к файлам. Для каждого файла известно, с какими действиями можно к нему обращаться:

  • запись W,
  • чтение R,
  • запуск X.

В первой строке содержится число N — количество файлов содержащихся в данной файловой системе. В следующих N строчках содержатся имена файлов и допустимых с ними операций, разделенные пробелами. Далее указано число M — количество запросов к файлам. В последних Mстроках указан запрос вида Операция Файл. К одному и тому же файлу может быть применено любое количество запросов.

Вам требуется восстановить контроль над правами доступа к файлам (ваша программа для каждого запроса должна будет возвращать OK если над файлом выполняется допустимая операция, или же Access denied, если операция недопустима.

Решение

  1. ACTION_PERMISSION = {
  2.     'read': 'R',
  3.     'write': 'W',
  4.     'execute': 'X',
  5. }
  6. file_permissions = {}
  7. for i in range(int(input())):
  8.     file, *permissions = input().split()
  9.     file_permissions[file] = set(permissions)
  10. for i in range(int(input())):
  11.     action, file = input().split()
  12.     if ACTION_PERMISSION[action] in file_permissions[file]:
  13.         print('OK')
  14.     else:
  15.         print('Access denied')