Перейти к содержанию

02 · Целые числа: представители и эквивалентность

Целые числа: представители и эквивалентность

Представьте `a-b` парой натуральных `(a,b)` и разберите разные пары одного целого.

Перед этой главой

Вы можете проследить рекурсивные равенство и сложение натуральных.

После главы вы сможете
  • объяснить своими словами математическое определение «Целые числа: представители и эквивалентность»
  • показать его представление в данных Python
  • предсказать небольшой запуск по настоящему коду
Математическое определение

`(a,b)` и `(c,d)` задают одно целое тогда и только тогда, когда `a+d=b+c`; целое — класс эквивалентности пар.

Представление данных

`Integer` хранит два натуральных. `(3,1)` и `(4,2)` различны, но оба означают 2.

Реализация на Python

`(a,b) ~ (c,d)` → `a + d == b + c` → `Integer.__eq__`

Реализация и тесты для параллельного чтения

peano/integer.py · tests/test_integer.py

Математическое определение

Математическое определение

(a,b) и (c,d) задают одно целое тогда и только тогда, когда a+d=b+c; целое — класс эквивалентности пар.

Представление данных

Представление данных

Integer хранит два натуральных. (3,1) и (4,2) различны, но оба означают 2.

Реализация на Python

Реализация на Python

Integer.__eq__ сравнивает перекрёстные суммы, а normalize() убирает общую часть и выбирает, например, (2,0).

Точное соответствие, используемое в курсе:

`(a,b) ~ (c,d)` → `a + d == b + c` → `Integer.__eq__`

Ход выполнения

Ход выполнения

Сравнение целых повторно использует сложение и равенство натуральных, что видно в журнале.

Прогноз перед запуском

Определите равенство пар и нормализованного представителя.

Эксперимент · Целые числа: представители и эквивалентность Не запущено
⌘ / Ctrl + Enter
Вывод
Сначала запишите прогноз, затем запускайте.

Проверка тестами

Проверка тестами

Тесты охватывают разных представителей, замкнутость операций и нормализацию.

Область и ограничения

Область и ограничения

Пары медленнее int, но делают фактор-конструкцию видимой.

Какое утверждение верно описывает реализацию «Целые числа: представители и эквивалентность»?