Статья Автор: Лебедев Дмитрий

Словари. Разбор задания ФАЙЛОВАЯ СИСТЕМА (35023)

1. Условие задачи
В файловую систему одного суперкомпьютера проник вирус, который сломал контроль за правами доступа к файлам. Для каждого файла Ni известно, с какими действиями можно к нему обращаться:
 
запись W
чтение R
запуск X
 
Вам требуется восстановить контроль над правами доступа к файлам (ваша программа для каждого запроса должна будет возвращать OK, если над файлом выполняется допустимая операция, или же Access denied, если операция недопустима).
 
Входные данные
В первой строке содержится число N (1 <= N <= 10000) - количество файлов содержащихся в данной файловой системе.
В следующих N строках содержатся имена файлов и допустимых с ними операций, разделенные пробелами. Длина имени файла не превышает 15 символов.
Далее указано число M (1 <= M <= 50000) - количество запросов к файлам.
В последних M строках указан запрос вида Операция Файл. К одному и тому же файлу может быть применено любое количество запросов.
 
Выходные данные
Для каждого из M запросов нужно вывести в отдельной строке Access denied или OK.
 
 
Пример
Входные данные Выходные данные
1
4
helloworld.exe R X
pinglog W R
nya R
goodluck X W R
5
read nya
write helloworld.exe
execute nya
read pinglog
write pinglog
OK
Access denied
Access denied
OK
OK

2. Этапы решения задания
  1. Чтение 1 блока данных и создание словара DD[имя файла] = "множества разшений"
  2. Чтение запросов  и ответы на запросы
Так как обозначения действий в описании и запросах разное, то логично создать предварительный словарь R по шаблону:
R['read']='R'
 

3. Реализуем первый блок программы  
Разберите следующий код и посмотрите на вывод
Набор для ввода
4
helloworld.exe R X
pinglog W R
nya R
goodluck X W R
 


4. Для полной реализации программы необходимо создать словарь разрешений R,
считать первый блок данных и заполнить словарь DD
Далее нужно написать примерно следующее:
M=int(input())
for j in range(M):
     sr,sname=input().split()
     if R[sr] in DD[sname] : 
         print('OK')
    else :
         print('Access ...')

5. Теперь можно решать задание
ФАЙЛОВАЯ СИСТЕМА

 
Прикрепленные файлы
_1-2.png
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать