update README.md
Some checks failed
Array Queue Test / test (push) Successful in 26s
Clojure Example Test / test (push) Successful in 8s
Clojure Linear Test / test (push) Successful in 14s
Generic Test / test (push) Has been cancelled
Exception Test / test (push) Has been cancelled
JavaScript Expressions Test / test (push) Has been cancelled
JavaScript Objective Expressions Test / test (push) Has been cancelled
JavaScript Prefix Test / test (push) Has been cancelled
Queues Test / test (push) Has been cancelled
Binary Search Test / test (push) Has been cancelled
JavaScript Example Test / test (push) Successful in 10s

This commit is contained in:
root
2026-04-13 21:15:11 +03:00
parent e6e194fb68
commit 67e5ec8859

146
README.md
View File

@@ -2,7 +2,7 @@
[Условия домашних заданий](https://www.kgeorgiy.info/courses/paradigms/homeworks.html)
## Домашнее задание 9. Линейная алгебра на Clojure [![Clojure Linear Tests](https://git.fym.su/code.java/paradigms/actions/workflows/clj-linear.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 9. Линейная алгебра на Clojure [![Clojure Linear Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/clj-linear.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Базовая* ✅
@@ -11,66 +11,7 @@
* Запускать с указанием сложности (`easy` или `hard`) и модификации.
## Исходный код к лекциям по Clojure
Документация
* [Clojure Reference](https://clojure.org/reference/documentation)
* [Clojure Cheat Sheet](https://clojure.org/api/cheatsheet)
Запуск Clojure
* Консоль: [Windows](clojure/RunClojure.cmd), [*nix](clojure/RunClojure.sh)
* Интерактивный: `RunClojure`
* С выражением: `RunClojure --eval "<выражение>"`
* Скрипт: `RunClojure <файл скрипта>`
* Справка: `RunClojure --help`
* IDE
* IntelliJ Idea: [плагин Cursive](https://cursive-ide.com/userguide/)
* VSCode: [плагин Calva](https://calva.io/)
[Скрипт со всеми примерами](clojure/examples.clj)
Лекция 1. Функции
* [Введение](clojure/examples/1_1_intro.clj)
* [Функции](clojure/examples/1_2_functions.clj)
* [Списки](clojure/examples/1_3_lists.clj)
* [Вектора](clojure/examples/1_4_vectors.clj)
* [Функции высшего порядка](clojure/examples/1_5_functions-2.clj)
Лекция 2. Внешний мир
* [Ввод-вывод](clojure/examples/2_1_io.clj)
* [Разбор и гомоиконность](clojure/examples/2_2_read.clj)
* [Порядки вычислений](clojure/examples/2_3_evaluation-orders.clj)
* [Потоки](clojure/examples/2_4_streams.clj)
* [Отображения и множества](clojure/examples/2_5_maps.clj)
## Тестовое задание на Clojure [![Clojure Exmaple Tests](https://git.fym.su/code.java/paradigms/actions/workflows/clj-example.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
Это задание предназначено для проверки правильности настройки Clojure.
Вам надо убедиться, что оно успешно проверяется на вашем компьютере.
Для запуска тестов используются скрипты
[TestClojure.cmd](clojure/TestClojure.cmd) и [TestClojure.sh](clojure/TestClojure.sh)
* Репозиторий должен быть скачан целиком.
* Скрипты должны находиться в каталоге `clojure`
(их нельзя перемещать, но можно вызывать из других каталогов).
* Тестируемое решение должно находиться в текущем каталоге.
* В качестве аргументов командной строки указывается
полное имя класса теста, сложность и модификация,
например, `cljtest.example.ExampleTest hard base`.
Модификации
* *base* ✅
* Код решения `clojure-solutions/example.clj` в
[репозитории решений](https://www.kgeorgiy.info/git/geo/paradigms-2026-students/).
Если всё настроено верно, то вам достаточно сделать
`git pull source main` в своём репозитории,
чтобы получить решение.
* [Исходный код тестов](clojure/cljtest/example/ExampleTest.java)
* Запускать с аргументом `hard` или `easy`.
## Домашнее задание 8. Обработка ошибок на JavaScript [![JavaScript Prefix Tests](https://git.fym.su/code.java/paradigms/actions/workflows/js-prefix.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 8. Обработка ошибок на JavaScript [![JavaScript Prefix Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/js-prefix.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
Модификации
* *Base* ✅
@@ -112,7 +53,7 @@
`(atan12 1256)` примерно равно 1.57,
`(atan12 841 540)` примерно равно 1.
## Домашнее задание 7. Объектные выражения на JavaScript [![JavaScript Objective Expressions Tests](https://git.fym.su/code.java/paradigms/actions/workflows/js-objective-expressions.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 7. Объектные выражения на JavaScript [![JavaScript Objective Expressions Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/js-objective-expressions.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Base* ✅
@@ -148,7 +89,7 @@
* `Wrap` (`wrap`) функции [wrap(_x_, _min_, _max_)](https://en.wikipedia.org/wiki/Wrapping_(graphics)),
`3 5 8 wrap` равно 6.
## Домашнее задание 6. Функциональные выражения на JavaScript [![JavaScript Expressions Tests](https://git.fym.su/code.java/paradigms/actions/workflows/js-expressions.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 6. Функциональные выражения на JavaScript [![JavaScript Expressions Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/js-expressions.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Базовая* ✅
@@ -195,76 +136,7 @@
* `sin` синус, `3.14159265 sin` примерно равно 0;
* `cos` косинус, `3.14159265 cos` примерно равно -1.
## Исходный код к лекциям по JavaScript
[Скрипт с примерами](javascript/examples.js)
Запуск примеров
* [В браузере](javascript/RunJS.html)
* Из консоли
* [на Java](javascript/RunJS.java): [RunJS.cmd](javascript/RunJS.cmd), [RunJS.sh](javascript/RunJS.sh)
* [на node.js](javascript/RunJS.node.js): `node RunJS.node.js`
Лекция 1. Типы и функции
* [Типы](javascript/examples/1_1_types.js)
* [Массивы](javascript/examples/1_2_arrays.js).
Обратите внимание, у массивов есть много
[других методов](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array).
* [Функции](javascript/examples/1_3_functions.js)
* [Функции высшего порядка](javascript/examples/1_4_functions-hi.js).
Обратите внимание на реализацию функции `mCurry`.
Обратите внимание, что функции `array.map` и
`array.reduce` (аналог `leftFold`) входят в стандартную библиотеку.
* [Пример: вектора и матрицы](javascript/examples/1_5_vectors.js).
## Тестовое задание на JavaScript [![JavaScript Example Tests](https://git.fym.su/code.java/paradigms/actions/workflows/js-example.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
Это задание предназначено для проверки правильности настройки
[JavaScript](https://ecma-international.org/publications-and-standards/standards/ecma-262/).
Вам надо проверить, что оно успешно проверяется на вашем компьютере.
Модификации
* *base* ✅
* Код решения `javascript-solutions/example.js` в
[репозитории решений](https://www.kgeorgiy.info/git/geo/paradigms-2026-students/).
Если всё настроено верно, то вам достаточно сделать `git pull --rebase` в своём репозитории,
чтобы получить решение.
* [Исходный код тестов](javascript/jstest/example/ExampleTest.java)
* Запускать с аргументом `hard` или `easy`.
Запуск тестов
* Для запуска тестов используется [GraalJS](https://github.com/graalvm/graaljs)
(часть проекта [GraalVM](https://www.graalvm.org/)), но вам не требуется их скачивать.
* Для запуска тестов рекомендуется использовать скрипты
[TestJS.cmd](javascript/TestJS.cmd) и [TestJS.sh](javascript/TestJS.sh)
* Репозиторий должен быть скачан целиком.
* Скрипты должны находиться в каталоге `javascript` (их нельзя перемещать, но можно вызывать из других каталогов).
* В качестве аргументов командной строки указывается полное имя класса теста и модификация,
например `jstest.example.ExampleTest hard base`.
* Для самостоятельного запуска из консоли необходимо использовать командную строку вида:
`java -ea --module-path=<js>/graal --class-path <js> jstest.example.ExampleTest {hard|easy} <variant>`, где
* `-ea` включение проверок времени исполнения;
* `--module-path=<js>/graal` путь к модулям Graal (здесь и далее `<js>` путь к каталогу `javascript` этого репозитория);
* `--class-path <js>` путь к откомпилированным тестам;
* `{hard|easy}` указание тестируемой сложности;
* `<variant>` указание тестируемой модификации.
* При запуске из IDE, обычно не требуется указывать `--class-path`, так как он формируется автоматически.
Остальные опции всё равно необходимо указать.
* Troubleshooting
* `Error occurred during initialization of boot layer java.lang.module.FindException: Module org.graalvm.truffle not found, required by jdk.internal.vm.compiler`
неверно указан `--module-path`;
* `Graal.js not found` неверно указаны `--module-path`
* `Error: Could not find or load main class jstest.example.ExampleTest`
неверно указан `--class-path`;
* `Exception in thread "main" java.lang.AssertionError: You should enable assertions by running 'java -ea jstest.functional.FunctionalExpressionTest'`
не указана опция `-ea`;
* `Exception in thread "main" jstest.EngineException: Script 'example.js' not found`
в текущем каталоге отсутствует решение (`example.js`)
## Домашнее задание 5. Вычисления в различных типах [![Generic Tests](https://git.fym.su/code.java/paradigms/actions/workflows/generic.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 5. Вычисления в различных типах [![Generic Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/generic.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Base* ✅
@@ -320,7 +192,7 @@
* `f` вычисления в `float` без проверки на переполнение.
## Домашнее задание 4. Очереди [![Queues Tests](https://git.fym.su/code.java/paradigms/actions/workflows/queues.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 4. Очереди [![Queues Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/queues.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Базовая* ✅
@@ -355,7 +227,7 @@
* Взаимный порядок элементов должен сохраняться
* Дублирования кода быть не должно
## Домашнее задание 3. Очередь на массиве [![ArrayQueue Tests](https://git.fym.su/code.java/paradigms/actions/workflows/array-queue.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 3. Очередь на массиве [![ArrayQueue Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/array-queue.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Базовая* ✅
@@ -389,7 +261,7 @@
* Индексы отсчитываются с головы очереди.
* Если искомого элемента нет, методы должны возвращать `-1`.
## Домашнее задание 2. Бинарный поиск [![BinarySearch Tests](https://git.fym.su/code.java/paradigms/actions/workflows/search.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 2. Бинарный поиск [![BinarySearch Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/search.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Базовая* ✅
@@ -423,7 +295,7 @@
* Класс должен иметь имя `BinarySearch3233`
## Домашнее задание 1. Обработка ошибок [![Exception Tests](https://git.fym.su/code.java/paradigms/actions/workflows/exception.yml/badge.svg)](https://git.fym.su/code.java/paradigms/actions)
## Домашнее задание 1. Обработка ошибок [![Exception Tests](https://git.codejava.tech/codejava/paradigms/actions/workflows/exception.yml/badge.svg)](https://git.codejava.tech/codejava/paradigms/actions)
Модификации
* *Base* ✅