{"id":21992339,"url":"https://github.com/plumsoftware/more-math","last_synced_at":"2025-04-30T14:20:02.687Z","repository":{"id":258790098,"uuid":"874595025","full_name":"plumsoftware/more-math","owner":"plumsoftware","description":"Это KMP библиотека добавляющая математические операции с матрицами, векторами, комбинаторикой и многим другим.","archived":false,"fork":false,"pushed_at":"2024-11-19T08:05:41.000Z","size":199,"stargazers_count":14,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-19T08:34:46.487Z","etag":null,"topics":["kotlin","kotlin-multiplatform","kotlin-multiplatform-library","math"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/plumsoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-18T05:47:02.000Z","updated_at":"2024-11-12T06:08:39.000Z","dependencies_parsed_at":"2024-11-04T18:28:56.260Z","dependency_job_id":"86c30ad5-c44d-47da-a7a2-cbd013b1954b","html_url":"https://github.com/plumsoftware/more-math","commit_stats":null,"previous_names":["plumsoftware/more-math"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plumsoftware%2Fmore-math","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plumsoftware%2Fmore-math/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plumsoftware%2Fmore-math/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/plumsoftware%2Fmore-math/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/plumsoftware","download_url":"https://codeload.github.com/plumsoftware/more-math/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227206324,"owners_count":17747734,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["kotlin","kotlin-multiplatform","kotlin-multiplatform-library","math"],"created_at":"2024-11-29T20:13:32.708Z","updated_at":"2024-11-29T20:13:33.334Z","avatar_url":"https://github.com/plumsoftware.png","language":"Kotlin","readme":"![Kotlin](https://img.shields.io/badge/kotlin-%237F52FF.svg?style=for-the-badge\u0026logo=kotlin\u0026logoColor=white)\n![Gradle](https://img.shields.io/badge/Gradle-02303A.svg?style=for-the-badge\u0026logo=Gradle\u0026logoColor=white)\n![Apache Maven](https://img.shields.io/badge/Apache%20Maven-C71A36?style=for-the-badge\u0026logo=Apache%20Maven\u0026logoColor=white)\n![Maven Central Version](https://img.shields.io/maven-central/v/io.github.plumsoftware/more-math?style=for-the-badge\u0026logo=kotlin\u0026logoColor=white\u0026logoSize=auto\u0026label=more%20math\u0026labelColor=orange\u0026color=orange)\n\n![More Math logo](https://github.com/plumsoftware/more-math/blob/master/docs/images/logo.png)\n\n## More math\n\nМультиплатформенная библиотека Kotlin, добавляющая математические операции с матрицами, векторами, комбинаторикой и многим другим.\n\n![Telegram](https://img.shields.io/badge/Telegram-2CA5E0?style=for-the-badge\u0026logo=telegram\u0026logoColor=white)\n\u003cbr\u003eЭмоджи для телеграм доступны по ссылке https://t.me/addemoji/RkIQSnNfAAA\n\n## Подключение\n\nЧтобы подключить библиотеку нужно добавить строчки ниже в файл ```build.gradle.kts``` вашего мультиплатформенного модуля\n```kotlin\ndependencies {\n    implementation(\"io.github.plumsoftware:more-math:\u003cversion\u003e\")\n}\n```\n\n## Документация на других языках (Documentation)\n\n+ [English](https://github.com/plumsoftware/more-math/blob/develop-v0.0.1/docs/languages/README-en.md)\n\n## Содержание\n\nЭта библиотека предоставляет функциональность для работы с вектором на плоскости, матрицей, комбинаторикой.\n\n* [Факториал](#Факториал)\n* [Тетрация](#Тетрация)\n* [Остальное](#Другое)\n* [Матрица](#Матрица)\n* [Граф](#Граф)\n* [Комплексные числа](#Комплексные-числа)\n* [Вектор на плоскости](#Вектор)\n* [Комбинаторика](#Комбинаторика)\n\n## Возможности\n\n### Факториал\nВычисление факториала для числа до 21\n```kotlin\nval res = MoreMath.factorial(3)\n```\n\nВычислить факторил для числа более 20\n```kotlin\nval res = MoreMath.bigFactorial(22L)\n```\n\n\n\n### Тетрация\nВычислить тетрацию\n```kotlin\nval res = MoreMath.tetraction(2.0, 3)\n```\n\nЕсли, число в тетрации большое, то используйте\n```kotlin\nval res = MoreMath.bigTetraction(2.0, 40)\n```\n\n\n### Другое\nЧтобы вычислить **наименьшее общее кратное** двух чисел\n```kotlin\nval res = MoreMath.gcd(13, 17)\n```\n\nВычисление **стандартного отклонения** ряда чисел\n```kotlin\nval res = MoreMath.standardDeviation(1.0, 2.0, 3.0)\n```\n\n**Среднее значение**\n```kotlin\nval res = MoreMath.average(1, 2, 3)\n```\n\nУзнать, положительное или отрицательное число\n\n```kotlin\n4.isPositive\n(-4).isNegative\n```\n\n\n### Матрица\nСоздать матрицу можно тремя способами\n```kotlin\nval matrix = matrixOf\u003cInt\u003e (\n    mutableListOf(1, 2), \n    mutableListOf(3, 4)\n)\n```\nили \n```kotlin\nval matrix = Matrix\u003cInt\u003e (\n    mutableListOf(1, 2),\n    mutableListOf(3, 4)\n)\n```\nили\n```kotlin\nval matrix = Matrix\u003cInt\u003e(size = MatrixSize(row = 3, column = 4))\n```\nПоследее создаст пустую матрицу. Также можно получить размер матрицы\n```kotlin\nval size = matrix.size\n```\n\nОператоры, доступные для матриц ```+```, ```-```, ```*```, ```pow()```, ```\u003e```, ```\u003e=``` и подобные. Для сравнения контента матриц, используйте метод ```equals()```.\n```kotlin\nval matrix1 = matrixOf\u003cInt\u003e (\n    mutableListOf(1, 2),\n    mutableListOf(3, 4)\n)\nval matrix2 = matrixOf\u003cInt\u003e (\n    mutableListOf(5, 6),\n    mutableListOf(7, 8)\n)\nval matrix3 = matrix1.pow(2)\n\nval plus = matrix1 + matrix2\nval times = matrix1 * matrix2\nval minus = matrix1 - matrix2\n```\n\nВычислить определитель матрицы\n```kotlin\nval det = matrix.determinant()\n```\n\nТранспонировать матрицу\n```kotlin\nval transposedMatrix = matrix.transpose()\n```\n\nУмножить матрицу на число\n```kotlin\nval res = matrix.times(2)\n```\n\nНайти минимальный или максимальный элемент в матрице.\nЕсли Ваша матрица состоит из ```Double```, ```Long```, ```Float``` или ```Int```, то воспользуйтесь кодом ниже\n```kotlin\nval min = matrix.minInMatrix()\nval max = matrix.maxInMatrix()\n```\nили\n```kotlin\nval min = matrix.minInMatrixBy { it }\nval max = matrix.maxInMatrixBy { it }\n```\n\n### Граф\nСоздать взвешенный граф\n```kotlin\nval graph = Graph\u003cVertexType, WeightType\u003e(mode = GraphMode.UNDIRECTED)\n```\nГде ```VertexType``` - это тип вершины. \n```WeightType``` - это тип веса вершины: ```Int```, ```Double```, ```Long```, ```Float```.\n```mode``` - это тип графа: ```UNDIRECTED```, ```DIRECTED```.\n\nДля создания связи нужно добавить вершины:\n```kotlin\nval graph = Graph\u003cString, Int\u003e()\n\nval vertexA = Vertex(id = \"A\")\nval vertexB = Vertex(id = \"B\")\nval vertexC = Vertex(id = \"C\")\nval vertexD = Vertex(id = \"D\")\n\ngraph.addVertex(vertexA)\ngraph.addVertex(vertexB)\ngraph.addVertex(vertexC)\ngraph.addVertex(vertexD)\n```\n\nЗатем создайте связь между вершинами\n```kotlin\ngraph.createConnection(from = vertexA, to = vertexB, weight = 2)\n```\n\nПолучить минимальный путь в графе от и до вершины\n```kotlin\nval minPath: GraphPath\u003cString, Double\u003e = graph.minPath(from = Vertex(\"A\"), to = Vertex(\"B\"))\n```\nВ результате будет возвращен ```GraphPath```, который содержит пары - вершины и суммарный путь до следующей вершины.\n\nПолучить все вершины\n```kotlin\nval vertices = graph.vertices\n```\n\nПолучить все связи\n```kotlin\nval vertices = graph.connections\n```\n\nУзнать, есть ли вершина\n```kotlin\nval vertex: Vertex\u003cString\u003e? = graph[someVertex]\n```\nЭто вернёт ```null```, если вершины в графе нет.\n\nЗаменить вершину в графе\n```kotlin\nval newVertex = Vertex(\"A\")\nval oldVertex = Vertex(\"B\") //Эта вершина уже есть в графе\ngraph.set(oldVertex, newVertex, SetVertexMode.NEW_FROM_TO)\n```\nЭто заменит все вершины во всех связях в графе и удалит старую вершину. \nЕсли вы хотите заменить только начальные вершины в связях или конечные, то используйте ```NEW_FROM``` или ```NEW_TO``` соответственно.\n\nДля удаления всех связей используйте:\n```kotlin\ngraph.removeConnectionsByVertex(someVertex, RemoveVertexMode.TO)\n```\nЭто удалит все связи, где есть переданная конечная вершина.\nЕсли нужно удалить только начальные вершины или обе (начальную и конечную) из связей, то используйте ```FROM``` или ```BOTH``` соответственно.\n\nДля получения всех вершин без связей или наоборот всех вершин в связях\n```kotlin\nval freeList = graph.getFreeVertices()\nval busyList = graph.getBusyVertices()\n```\n\n\n### Комплексные числа\nСоздать комплексное число\n```kotlin\nval complex: Complex = complex(-4.0)\n```\nВ результате будет ```0.0 - 2.0i```\n\nЕсли Вам нужно указать реальную часть числа, то воспользуйтесь\n```kotlin\nval complex: Complex = complex(3, -4.0)\n```\nВ результате будет ```3.0 - 2.0i```\n\nПолучить алгебраическую или геометрическую форму можно таким образом\n```kotlin\nval algebraic = complex.toAlgebraic()\nval geometric = complex.toGeometric()\n```\n\nС комплексными числами можно выполнять ```+```, ```-```, ```*```, ```/```. Также доступны ```equals()``` и ```hashCode()```.\n\n\n\n### Вектор\n\n#### Вектор на плоскости\nСоздание вектора аналогично созданию матрицы\n```kotlin\nval vector2 = vector2Of(1 , 2)\n```\nили\n```kotlin\nval vector2 = Vector2(1 , 2)\n```\n\nС векторами на плоскости доступны следующие операторы ```+```, ```-```, ```*```, ```/```. Также Вы можете использовать ```equals()``` и ```length()```.\n```kotlin\nval vector1 = vector2Of(1, 2)\nval vector2 = vector2Of(3, 4)\n\nval plus = vector1 + vector2\nval minus = vector1 - vector2\nval times = vector1 * vector2\nval div = vector1 / vector2\nval length = vector1.length()\n```\n\n\n\n### Комбинаторика\n\nКомбинации из 5 элементов по 2 элемента\n```kotlin\nval res = MoreMath.combinations(5, 2)\n```\n\nРазмещения\n```kotlin\nval res = MoreMath.placements(5, 2)\n```\n\nБиноменальный коэффициент\n```kotlin\nval res = MoreMath.binomialCoefficient(5, 2)\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplumsoftware%2Fmore-math","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplumsoftware%2Fmore-math","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplumsoftware%2Fmore-math/lists"}