02 · Целые числа: представители и эквивалентность
Целые числа: представители и эквивалентность¶
Представьте `a-b` парой натуральных `(a,b)` и разберите разные пары одного целого.
Вы можете проследить рекурсивные равенство и сложение натуральных.
- объяснить своими словами математическое определение «Целые числа: представители и эквивалентность»
- показать его представление в данных Python
- предсказать небольшой запуск по настоящему коду
`(a,b)` и `(c,d)` задают одно целое тогда и только тогда, когда `a+d=b+c`; целое — класс эквивалентности пар.
`Integer` хранит два натуральных. `(3,1)` и `(4,2)` различны, но оба означают 2.
`(a,b) ~ (c,d)` → `a + d == b + c` → `Integer.__eq__`
Математическое определение
Математическое определение¶
(a,b) и (c,d) задают одно целое тогда и только тогда, когда a+d=b+c; целое — класс эквивалентности пар.
Представление данных
Представление данных¶
Integer хранит два натуральных. (3,1) и (4,2) различны, но оба означают 2.
Реализация на Python
Реализация на Python¶
Integer.__eq__ сравнивает перекрёстные суммы, а normalize() убирает общую часть и выбирает, например, (2,0).
Точное соответствие, используемое в курсе:
Ход выполнения
Ход выполнения¶
Сравнение целых повторно использует сложение и равенство натуральных, что видно в журнале.
Определите равенство пар и нормализованного представителя.
Сначала запишите прогноз, затем запускайте.
Проверка тестами
Проверка тестами¶
Тесты охватывают разных представителей, замкнутость операций и нормализацию.
Область и ограничения
Область и ограничения¶
Пары медленнее int, но делают фактор-конструкцию видимой.