ДЗ01 — различия между версиями

Материал из Wiki - Факультет компьютерных наук
Перейти к: навигация, поиск
(Создание страницы)
 
(Полностью удалено содержимое страницы)
 
Строка 1: Строка 1:
== Домашнее задание №1 ==
 
  
В этом задании вам надо будет внести изменения в файл propositions/syntax.py
 
 
==== Задание 1.1 (Task 1.1)====
 
В файле мето отмечено следующим комментарием: # Task 1.1
 
 
Реализуйте недостающий код для метода __repr__() класса Formula, который возвращает строку, представляющую формулу (в синтаксисе, определённом в Определении 1.1).
 
 
Обратите внимание, что в Python строка, возвращаемая методом formula.__repr__(), также возвращается вызовом str(formula). Таким образом, решив эту задачу, вы также реализуете функциональность метода str() для данного класса.
 
 
==== Задание 1.2 (Task 1.2) ====
 
Реализуйте недостающий код для метода variables() класса Formula, который возвращает множество (set) имен переменных, присутствующие в формуле. Напомним, что имя переменной — это лист дерева, метка которого является буквой от «p» до «z», за которой следуют цифры.
 
 
==== Задание 1.3 (Task 1.3) ====
 
 
Реализуйте недостающий код для метода operators() класса Formula, который возвращает все операторы, присутствующие в формуле. Операторами в этом задании являются не только все унарные и бинарные операторы, но и константы T и F.
 
 
==== Задание 1.4 (Task 1.4)====
 
 
Реализуйте недостающий код для статического метода _parse_prefix(string) класса Formula, который принимает строку, и возвращает формулу (объект типа Formula), созданное из префикса строки, а также строку, содержащую непроанализированный остаток строки (которая может быть пустой, если вся строка образует формулу). Обратите внимание, что формула это очень строгое формальное понятие, обратите внимание на скобки.
 
 
==== Задание 1.5 (Task 1.5)====
 
 
Реализуйте недостающий код для статичного метода is_formula(string) класса Formula, который проверяет, представляет ли заданная строка корректную формулу.
 
 
Подсказка: используйте метод _parse_prefix().
 
 
==== Задание 1.6 (Task 1.6)====
 
 
Реализуйте недостающий код для статичного метода parse(string) класса Formula, который разбирает строковое представление формулы. (Можно предположить, что входная строка корректна, то есть удовлетворяет предусловию Formula.is_formula(string), в коде уже есть соответствующий assert)
 
 
Чтобы проверить верно ли вы сделали все задание надо в корне папки запустить файл test_chapter01.py
 

Текущая версия на 17:18, 23 января 2025