Skip to content

Latest commit

 

History

History
29 lines (15 loc) · 3.8 KB

REVIEW_GUIDE.md

File metadata and controls

29 lines (15 loc) · 3.8 KB

Как посмотреть проект

Открыть интерактивное демо.

Дерево поиска

BinarySearchTree.fs описывает дерево как discriminated union и возвращает новое значение при изменении. Вставка и удаление восстанавливают баланс по пути к корню. Исправлен случай удаления, в котором баланс дочернего узла равен нулю: нужен одиночный, а не двойной поворот.

В тестах после каждой операции проверяются порядок, состав множества и баланс всех узлов. Есть последовательности со случайными данными и фиксированным seed, сравнение с F# Set, проверки четырёх видов поворота и удаления.

Ограничение: высота вычисляется рекурсивно и не кэшируется. Логарифмическая высота не означает оптимальную сложность реализации операций; промышленная производительность не заявлена.

Интерполяция

Полином Лагранжа строится по отдельным узлам. Проверяются конечные и различные абсциссы, размер входа и шаг генерации. Нельзя считать совпадение в узлах гарантией точности между ними: пример Рунге показывает это визуально.

В демо используются 3–13 равноотстоящих точек и 201 точка проверки на [−1; 1]. Показанное отклонение — максимум на этой сетке, не аналитическая оценка непрерывного интервала. Парабола восстанавливается с точностью арифметики double.

Автомат

Состояние, условие и действие перехода разделены в StateMachine.fs. TrafficLight.fs задаёт модель светофора; пешеходная кнопка сокращает зелёный сигнал. Это учебный пример, не программа для реального оборудования.

Ограниченный обход до терминального состояния завершает некорректный сценарий ошибкой вместо бесконечного цикла. Распознаватель из Regex.fs безопасно обрабатывает короткие строки; он распознаёт префикс ab, а не реализует полноценные регулярные выражения.

Почему демо связано с исходниками

lab/Core/Core.fsproj подключает существующие исходники через Compile Include; отдельной JavaScript-версии алгоритмов нет. F# создаёт типизированные снимки результата, маленький C# мост публикует их в WebAssembly, интерфейс визуализирует JSON.

Исторические тесты Expecto/FsCheck и новые xUnit-тесты различаются. Успешная современная сборка подтверждает подключённые модули, но не запуск каждого старого приложения.