{"id":27349450,"url":"https://github.com/s0urcedev/additionalfunctions","last_synced_at":"2025-04-12T19:17:30.485Z","repository":{"id":37583286,"uuid":"457309946","full_name":"s0urcedev/AdditionalFunctions","owner":"s0urcedev","description":"Additional functions","archived":false,"fork":false,"pushed_at":"2025-02-08T23:01:26.000Z","size":577,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T19:17:18.004Z","etag":null,"topics":["algorithms","cpp","csharp","education","fundamentals","go","golang","javascript","js","olympiad","python","python3"],"latest_commit_sha":null,"homepage":"https://additional-functions.s0urce.dev","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/s0urcedev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-02-09T10:24:40.000Z","updated_at":"2025-02-08T23:08:48.000Z","dependencies_parsed_at":"2025-02-09T00:17:58.294Z","dependency_job_id":"5c772996-c81b-49ce-9243-5d1ef64e884f","html_url":"https://github.com/s0urcedev/AdditionalFunctions","commit_stats":{"total_commits":207,"total_committers":3,"mean_commits":69.0,"dds":"0.048309178743961345","last_synced_commit":"a54b047685ffbb10283c4762c5f75d49faf8e546"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0urcedev%2FAdditionalFunctions","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0urcedev%2FAdditionalFunctions/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0urcedev%2FAdditionalFunctions/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s0urcedev%2FAdditionalFunctions/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s0urcedev","download_url":"https://codeload.github.com/s0urcedev/AdditionalFunctions/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248618265,"owners_count":21134202,"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":["algorithms","cpp","csharp","education","fundamentals","go","golang","javascript","js","olympiad","python","python3"],"created_at":"2025-04-12T19:17:29.576Z","updated_at":"2025-04-12T19:17:30.462Z","avatar_url":"https://github.com/s0urcedev.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AdditionalFunctions\n## Page / Сторінка / Страница\n\n[github.com/s0urcedev/AdditionalFunctions](https://github.com/s0urcedev/AdditionalFunctions)\n\n[s0urcedev.github.io/AdditionalFunctions](https://s0urcedev.github.io/AdditionalFunctions/)\n\n## Packages / Пакети / Пакеты\n\n### Links / Посилання / Ссылки\n\n`Python`: [pypi.org/project/additional-functions](https://pypi.org/project/additional-functions/)\n\n`JavaScript`: [npmjs.com/package/additional-functions](https://www.npmjs.com/package/additional-functions)\n\n### Installing / Встановлення / Установка\n\n`Python`:\n\n```\n$ pip install additional_functions\n```\n\n`JavaScript`:\n\n```\n$ npm install additional-functions\n```\n\n### Importing / Підключення / Подключение\n\n`Python`:\n\n```python\nimport additional_functions as main\nfrom additional_functions import sortings\nfrom additional_functions import factorials\nfrom additional_functions import combinatorics\nfrom additional_functions import roman_arabic_numerals\nfrom additional_functions import arithmetic\nfrom additional_functions.progressions import ArithmeticProgression\nfrom additional_functions.progressions import GeometricProgression\nfrom additional_functions.progressions import HarmonicProgression\nfrom additional_functions.linked_list import LinkedList\nfrom additional_functions.binary_search_tree import Tree\nfrom additional_functions.hash_table import HashTable\nfrom additional_functions import subarrays\n```\n\n`JavaScript`:\n\n```js\nlet main = require('additional_functions');\nlet sortings = require('additional_functions/sortings');\nlet factorials = require('additional_functions/factorials');\nlet combinatorics = require('additional_functions/combinatorics');\nlet romanArabicNumerals = require('additional_functions/roman-arabic-numerals');\nlet arithmetic = require('additional_functions/arithmetic');\nlet ArithmeticProgression = require('additional-functions/progressions').ArithmeticProgression;\nlet GeometricProgression = require('additional-functions/progressions').GeometricProgression;\nlet HarmonicProgression = require('additional-functions/progressions').HarmonicProgression;\nlet LinkedList = require('additional-functions/linked-list').LinkedList;\nlet Tree = require('additional-functions/binary-search-tree').Tree;\nlet HashTable = require('additional-functions/hash-table').HashTable;\nlet subarrays = require('additional_functions/subarrays');\n```\n\n## Introduction / Вступ / Вступление\n\n\u003cins\u003e***English:***\u003c/ins\u003e I have some experience in programming olympics. I think that it could help other people with preparing to competitions and get some working algorithms. There you will find algorithms on Python, JavaScript, Go, C++ and C#, but you also can easily rewrite then on your language. I'ill give link to all ideas and text descriptions of algorithms. I believe that this repo could help you :)\n\n\u003cins\u003e***Українська:***\u003c/ins\u003e У мене є деякий досвід в олімпіадах з програмування. Я вважаю, що він може допомогти іншим людям підготуватися до змагань та отримати деякі робочі алгоритми. Тут ти знайдеш алгоритми на Python, JavaScript, Go, C++ та C#, але ти завжди можешь з легкістю переписати їх на свою мову. Я додам посилання на усі ідеї та текстові описи алгоритмів. Я вірю, що цей репозиторій допоможе тобі :)\n\n\u003cins\u003e***Русский:***\u003c/ins\u003e У меня есть некоторый опыт в олимпиадах по программированию. Я считаю, что он моджет помочь другим людям подготовится к соревнованиям и получить некоторые рабочие алгоритмы. Тут ты найдёшь алгоритмы на Python, JavaScript, Go, C++ и C#, но ты всегда можешь с лёгкостью переписать их на свой язык. Я добавлю ссылки на все идеи и текстовые описания алгоритмов. Я верю что этот репозиторий поможет тебе :)\n\n## Sorting / Сортування / Сотрировка\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\nsortings.bubble(a)\nsortings.selection(a)\nsortings.insertion(a)\nsortings.merge(a)\nsortings.quick(a)\n```\n\n`JavaScript`:\n\n```js\nsortings.bubble(a);\nsortings.selection(a);\nsortings.insertion(a);\nsortings.merge(a);\nsortings.quick(a);\n```\n\n\u003cins\u003e***English:***\u003c/ins\u003e Continuing topix about array I'll tell you about sortring arrays. For better understanding I recomend you to read about [algorythm's time complexity](https://en.wikipedia.org/wiki/Time_complexity). In this part you could know most ways how you can sort your array. Understand pluses and minuses of all algorythms and get cases when and where you might use them.\n\n\u003cins\u003e***Українська:***\u003c/ins\u003e Продовженням теми про масиви я розповім тобі про сортування масивів. Для більш гарного розуміння я рекомендую тобі почитати про [часову складність алгоритму](https://uk.wikipedia.org/wiki/Часова_складність). У цій частині ти зможеш дізнатися про більшість способів, як ти можешь відсортувати твій масив. Зрозуміти плюси на мінуси усіх алгоритмів та отримати ситуаціх коли ти маешь їх використовувати.\n\n\u003cins\u003e***Русский:***\u003c/ins\u003e Продолжением темы про массивы я расскажу тебя про сортировку массивов. Для лучшего понимания я рекомендую тебе почитать про [временную сложность алгоритма](https://ru.wikipedia.org/wiki/Временная_сложность_алгоритма). В этой части ты сможеш узнать про большинство способов, как ты можешь отсортировать твой массив. Понять плюсы и минусы всех алгоритмов и получить ситуации когда ты должен их использовать.\n\n### Bubble sort / Бульбашкове сортування / Пузырьковая сортировка\n\n**Time complexity / Часова складність / Временная сложность :** *O(n\u003csup\u003e2\u003c/sup\u003e)*.\n\n**Pluses / Плюси / Плюсы :** *Easy and short / Простий та короткий / Простой и которкий*\n\n**Minuses / Мінуси / Минусы :** *Slow / Повільний / Медленний*\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Bubble sort](https://en.wikipedia.org/wiki/Bubble_sort)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Бульбашкове сортування](https://uk.wikipedia.org/wiki/Сортування_бульбашкою)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Пузырьковая сортировка](https://ru.wikipedia.org/wiki/Сортировка_пузырьком)*\n\n`Python`:\n\n```python\nk = 0\nwhile k \u003c len(a) - 1:\n    k = 0\n    for j in range(0, len(a)-1):\n        if a[j] \u003e a[j + 1]:\n            a[j], a[j + 1] = a[j + 1], a[j]\n        else:\n            k += 1\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[bubble-sort.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/bubble-sort.py)*\n\n`JavaScript`:\n\n```js\nlet k = 0;\nwhile(k \u003c a.length - 1){\n    k = 0;\n    for(let j = 0; j \u003c a.length - 1; j ++){\n        if(a[j] \u003e a[j + 1]){\n            a[j] = a[j] + a[j + 1];\n            a[j+1] = a[j] - a[j + 1];\n            a[j] = a[j] - a[j + 1];\n        }\n        else{\n            k ++;\n        }\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[bubble-sort.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/bubble-sort.js)*\n\n`Go`:\n\n```go\nk := 0\nfor k \u003c len(a)-1 {\n    k = 0\n    for j := 0; j \u003c len(a)-1; j++ {\n        if a[j] \u003e a[j+1] {\n            a[j], a[j+1] = a[j+1], a[j]\n        } else {\n            k++\n        }\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[bubble-sort.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/bubble-sort.go)*\n\n`C++`:\n\n```cpp\nint k = 0;\nwhile(k \u003c len - 1){\n    k = 0;\n    for(int j = 0; j \u003c len - 1; j ++){\n        if(a[j] \u003e a[j + 1]){\n            a[j] = a[j] + a[j + 1];\n            a[j + 1] = a[j] - a[j + 1];\n            a[j] = a[j] - a[j + 1];\n        }\n        else{\n            k ++;\n        }\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[bubble-sort.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/bubble-sort.cpp)*\n\n\n`C#`:\n\n```cs\nint k = 0;\nwhile(k \u003c a.Length - 1)\n{\n    k = 0;\n    for(int j = 0; j \u003c a.Length - 1; j ++)\n    {\n        if(a[j] \u003e a[j + 1])\n        {\n            a[j] = a[j] + a[j + 1];\n            a[j + 1] = a[j] - a[j + 1];\n            a[j] = a[j] - a[j + 1];\n        }\n        else\n        {\n            k ++;\n        }\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[bubble-sort.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/bubble-sort.cs)*\n\n\n### Selection sort / Сортування вибором / Сортировка выбором\n\n**Time complexity / Часова складність / Временная сложность :** *O(n\u003csup\u003e2\u003c/sup\u003e)*.\n\n**Pluses / Плюси / Плюсы :** *Easy and short / Простий та короткий / Простой и которкий*\n\n**Minuses / Мінуси / Минусы :** *Slow / Повільний / Медленний*\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Selection sort](https://en.wikipedia.org/wiki/Selection_sort)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Сортування вибором](https://uk.wikipedia.org/wiki/Сортування_вибором)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Сортировка выбором](https://ru.wikipedia.org/wiki/Сортировка_выбором)*\n\n`Python`:\n\n```python\nfor i in range(0, len(a) - 1):\n    imin = i\n    for j in range(i + 1, len(a)):\n        if a[j] \u003c a[imin]:\n            imin = j\n    if imin != i:\n        a[i], a[imin] = a[imin], a[i]\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[selection-sort.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/selection-sort.py)*\n\n`JavaScript`:\n\n```js\nfor(let i = 0; i \u003c a.length - 1; i ++){\n    let imin = i;\n    for(let j = i + 1; j \u003c a.length; j ++){\n        if(a[j] \u003c a[imin]){\n            imin = j;\n        }\n    }\n    if(imin != i){\n        a[i] = a[i] + a[imin];\n        a[imin] = a[i] - a[imin];\n        a[i] = a[i] - a[imin];\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[selection-sort.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/selection-sort.js)*\n\n`Go`:\n\n```go\nfor i := 0; i \u003c len(a)-1; i++ {\n    imin := i\n    for j := i + 1; j \u003c len(a); j++ {\n        if a[j] \u003c a[imin] {\n            imin = j\n        }\n    }\n    if imin != i {\n        a[i], a[imin] = a[imin], a[i]\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[selection-sort.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/selection-sort.go)*\n\n`C++`:\n\n```cpp\nfor(int i = 0; i \u003c len - 1; i ++){\n    int imin = i;\n    for(int j = i + 1; j \u003c len; j ++){\n        if(a[j] \u003c a[imin]){\n            imin = j;\n        }\n    }\n    if(imin != i){\n        a[i] = a[i] + a[imin];\n        a[imin] = a[i] - a[imin];\n        a[i] = a[i] - a[imin];\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[selection-sort.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/selection-sort.cpp)*\n\n`C#`:\n\n```cs\nfor(int i = 0; i \u003c a.Length; i ++)\n{\n    int imin = i;\n    for(int j = i + 1; j \u003c a.Length; j ++)\n    {\n        if(a[j] \u003c a[imin])\n        {\n            imin = j;\n        }\n    }\n    if(imin != i)\n    {\n        a[i] = a[i] + a[imin];\n        a[imin] = a[i] - a[imin];\n        a[i] = a[i] - a[imin];\n    }\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[selection-sort.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/selection-sort.cs)*\n\n### Insertion sort / Сортування включенням / Сортировка вставками\n\n**Time complexity / Часова складність / Временная сложность :** *O(n\u003csup\u003e2\u003c/sup\u003e)*.\n\n**Pluses / Плюси / Плюсы :** *Easy and short / Простий та короткий / Простой и которкий*\n\n**Minuses / Мінуси / Минусы :** *Slow / Повільний / Медленний*\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Insertion_Sort](https://en.wikipedia.org/wiki/Insertion_sort)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Сортування включенням](https://uk.wikipedia.org/wiki/Сортування_включенням)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Сортировка вставками](https://ru.wikipedia.org/wiki/Сортировка_вставками)*\n\n`Python`:\n\n```python\nfor j in range(1, len(a)):\n    key = a[j]\n    i = j - 1\n    while i \u003e= 0 and a[i] \u003e key:\n        a[i + 1] = a[i]\n        i -= 1\n    a[i + 1] = key\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[insertion-sort.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/insertion-sort.py)*\n\n`JavaScript`:\n\n```js\nfor(let j = 1; j \u003c a.length; j ++){\n    key = a[j];\n    i = j - 1;\n    while(i \u003e= 0 \u0026\u0026 a[i] \u003e key){\n        a[i + 1] = a[i];\n        i --;\n    } \n    a[i + 1] = key;\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[insertion-sort.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/insertion-sort.js)*\n\n`Go`:\n\n```go\nfor j := 1; j \u003c len(a); j++ {\n    key := a[j]\n    i := j - 1\n    for i \u003e= 0 \u0026\u0026 a[i] \u003e key {\n        a[i+1] = a[i]\n        i--\n    }\n    a[i+1] = key\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[insertion-sort.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/insertion-sort.go)*\n\n`C++`:\n\n```cpp\nfor(int j = 1; j \u003c len; j ++){\n    int key = a[j];\n    int i = j - 1;\n    while (i \u003e= 0 \u0026\u0026 a[i] \u003e key){\n        a[i + 1] = a[i];\n        i --;\n    }\n    a[i + 1] = key;\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[insertion-sort.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/insertion-sort.cpp)*\n\n`C#`:\n\n```cs\nfor(int j = 0; j \u003c a.Length; j ++)\n{\n    int key = a[j];\n    int i = j - 1;\n    while (i \u003e= 0 \u0026\u0026 a[i] \u003e key)\n    {\n        a[i + 1] = a[i];\n        i --;\n    }\n    a[i + 1] = key;\n}\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[insertion-sort.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/insertion-sort.cs)*\n\n### Quick sort / Швидке сортування / Быстрая сортировка\n\n**Time complexity / Часова складність / Временная сложность :** *O(n log n)*.\n\n**Pluses / Плюси / Плюсы :** *Fast and not long / Швидка та не довга / Быстрая и не длинная*\n\n**Minuses / Мінуси / Минусы :** *Unfixed time comlexity (the worst case is O(n\u003csup\u003e2\u003c/sup\u003e)) / Нефіксована часова скалдність (найгірший випадок O(n\u003csup\u003e2\u003c/sup\u003e)) / Нефиксированая временная сложность (наихудший случай O(n\u003csup\u003e2\u003c/sup\u003e))*\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Quick_Sort](https://en.wikipedia.org/wiki/Quicksort)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Швидке сортування](https://uk.wikipedia.org/wiki/Швидке_сортування)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Быстрая сортировка](https://ru.wikipedia.org/wiki/Быстрая_сортировка)*\n\n`Python`:\n\n```python\ndef sort(array, b, e):\n    l = b\n    r = e\n    p = array[int((l + r) / 2)]\n    while l \u003c= r:\n        while array[l] \u003c p:\n            l += 1\n        while array[r] \u003e p:\n            r -= 1\n        if l \u003c= r:\n            if l \u003c r:\n                array[l], array[r] = array[r], array[l]\n            l += 1\n            r -= 1\n    if b \u003c r:\n        sort(array, b, r)\n    if e \u003e l:\n        sort(array, l, e)\n\nsort(a, 0, len(a) - 1)\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[quick-sort.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/quick-sort.py)*\n\n`JavaScript`:\n\n```js\nfunction sort(array, m){\n    let mass = [];\n    for(let i = 0; i \u003c m; i ++){\n        mass.push(array[i]);\n    }\n    if(m \u003c= 1){\n        array[0] = mass[0];\n    }\n    else{\n        let l = [];\n        let r = [];\n        for(let i = 0; i \u003c m; i ++){\n            if(i \u003c Math.floor(m / 2)){\n                l.push(mass[i]);\n            }\n            else{\n                r.push(mass[i]);\n            }\n        }\n        sort(l, l.length);\n        sort(r, r.length);\n        let h = 0;\n        let f = 0;\n        let c = [];\n        while(h \u003c l.length \u0026\u0026 f \u003c r.length){\n            if(l[h] \u003c r[f]){\n                c.push(l[h]);\n                h += 1;\n            }\n            else{\n                c.push(r[f]);\n                f += 1;\n            }\n        }\n        while(h \u003c l.length){\n            c.push(l[h]);\n            h += 1;\n        }\n        while(f \u003c r.length){\n            c.push(r[f]);\n            f += 1;\n        }\n        for(let i = 0; i \u003c m; i++){\n            array[i] = c[i];\n        }\n    }\n}\n\nsort(a, 0, a.length - 1);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[quick-sort.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/quick-sort.js)*\n\n`Go`:\n\n```go\nfunc Sort(array []int, b int, e int) {\n    l := b\n    r := e\n    p := array[int((l+r)/2)]\n    for l \u003c= r {\n        for array[l] \u003c p {\n            l++\n        }\n        for array[r] \u003e p {\n            r--\n        }\n        if l \u003c= r {\n            if l \u003c r {\n                array[l], array[r] = array[r], array[l]\n            }\n        }\n        l++\n        r--\n    }\n    if b \u003c r {\n        Sort(array, b, r)\n    }\n    if e \u003e l {\n        Sort(array, l, e)\n    }\n}\n\nSort(a, 0, len(a)-1)\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[quick-sort.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/quick-sort.go)*\n\n`C++`:\n\n```cpp\nvoid sort(int *array, int b, int e){\n    int l = b;\n    int r = e;\n    int p = array[(l + r) / 2];\n    while(l \u003c= r){\n        while(array[l] \u003c p){\n            l ++;\n        }\n        while(array[r] \u003e p){\n            r --;\n        }\n        if(l \u003c= r){\n            if(l \u003c r){\n                array[l] = array[l] + array[r];\n                array[r] = array[l] - array[r];\n                array[l] = array[l] - array[r];\n            }\n            l ++;\n            r --;\n        }\n    }\n    if(b \u003c r){\n        sort(array, b, r);\n    }\n    if(e \u003e l){\n        sort(array, l, e);\n    }\n}\n\nsort(a, 0, len - 1);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[quick-sort.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/quick-sort.cpp)*\n\n`C#`:\n\n```cs\nvoid Sort(ref int[] array, int b, int e)\n{\n    int l = b;\n    int r = e;\n    int p = array[(l + r) / 2];\n    while(l \u003c= r)\n    {\n        while(array[l] \u003c p)\n        {\n            l ++;\n        }\n        while(array[r] \u003e p)\n        {\n            r --;\n        }\n        if(l \u003c= r)\n        {\n            if(l \u003c r)\n            {\n                array[l] = array[l] + array[r];\n                array[r] = array[l] - array[r];\n                array[l] = array[l] - array[r];\n            }\n            l ++;\n            r --;\n        }\n    }\n    if(b \u003c r)\n    {\n        Sort(ref array, b, r);\n    }\n    if(e \u003e l)\n    {\n        Sort(ref array, l, e);\n    }\n}\n\nSort(ref a, 0, a.Length - 1);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[quick-sort.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/quick-sort.cs)*\n\n### Merge sort / Сортування злиттям / Сортировка слиянием\n\n**Time complexity / Часова складність / Временная сложность :** *O(n log n)*.\n\n**Pluses / Плюси / Плюсы :** *Fast and stable / Швидка та стабільна / Быстрая и стабильная*\n\n**Minuses / Мінуси / Минусы :** *Difficult in coding and needs additional memory / Важка в програмуванні та потрибує додаткової пам'яті / Сложная в прогаммировании и требует дополнительной памяти*\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Merge sort](https://en.wikipedia.org/wiki/Merge_sort)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Сортування злиттям](https://uk.wikipedia.org/wiki/Сортування_злиттям)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Сортировка слиянием](https://ru.wikipedia.org/wiki/Сортировка_слиянием)*\n\n`Python`:\n\n```python\ndef sort(array, m):\n    mass = []\n    for i in range(0, m):\n        mass.append(array[i])\n    if m \u003c= 1:\n        array[0] = mass[0]\n    else:\n        l = []\n        r = []\n        for i in range(0, m):\n            if i \u003c int(m / 2):\n                l.append(mass[i])\n            else:\n                r.append(mass[i])\n        sort(l, len(l))\n        sort(r, len(r))\n        h = 0\n        f = 0\n        c = []\n        while h \u003c len(l) and f \u003c len(r):\n            if l[h] \u003c r[f]:\n                c.append(l[h])\n                h += 1\n            else:\n                c.append(r[f])\n                f += 1\n        while h \u003c len(l):\n            c.append(l[h])\n            h += 1\n        while f \u003c len(r):\n            c.append(r[f])\n            f += 1\n        for i in range(0, m):\n            array[i] = c[i]\n\nsort(a, len(a))\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[merge-sort.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/merge-sort.py)*\n\n`JavaScript`:\n\n```js\nfunction sort(array, m){\n    let mass = [];\n    for(let i = 0; i \u003c m; i ++){\n        mass.push(array[i]);\n    }\n    if(m \u003c= 1){\n        array[0] = mass[0];\n    }\n    else{\n        let l = [];\n        let r = [];\n        for(let i = 0; i \u003c m; i ++){\n            if(i \u003c Math.floor(m/2)){\n                l.push(mass[i]);\n            }\n            else{\n                r.push(mass[i]);\n            }\n        }\n        sort(l, l.length);\n        sort(r, r.length);\n        let h = 0;\n        let f = 0;\n        let c = [];\n        while(h \u003c l.length \u0026\u0026 f \u003c r.length){\n            if(l[h] \u003c r[f]){\n                c.push(l[h]);\n                h += 1;\n            }\n            else{\n                c.push(r[f]);\n                f += 1;\n            }\n        }\n        while(h \u003c l.length){\n            c.push(l[h]);\n            h += 1;\n        }\n        while(f \u003c r.length){\n            c.push(r[f]);\n            f += 1;\n        }\n        for(let i = 0; i \u003c m; i++){\n            array[i] = c[i];\n        }\n    }\n}\n\nsort(a, a.length);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[merge-sort.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/merge-sort.js)*\n\n`Go`:\n\n```go\nfunc Sort(array []int, m int) {\n    mass := []int{}\n    for i := 0; i \u003c m; i++ {\n        mass = append(mass, array[i])\n    }\n    if m \u003c= 1 {\n        array[0] = mass[0]\n    } else {\n        var l []int\n        var r []int\n        for i := 0; i \u003c m; i++ {\n            if i \u003c m/2 {\n                l = append(l, mass[i])\n            } else {\n                r = append(r, mass[i])\n            }\n        }\n        Sort(l, m/2)\n        Sort(r, m-(m/2))\n        h := 0\n        f := 0\n        var c []int\n        for h \u003c m/2 \u0026\u0026 f \u003c m-(m/2) {\n            if l[h] \u003c r[f] {\n                c = append(c, l[h])\n                h++\n            } else {\n                c = append(c, r[f])\n                f++\n            }\n        }\n        for h \u003c m/2 {\n            c = append(c, l[h])\n            h++\n        }\n        for f \u003c m-(m/2) {\n            c = append(c, r[f])\n            f++\n        }\n        for i := 0; i \u003c m; i++ {\n            array[i] = c[i]\n        }\n    }\n}\n\nSort(a, len(a))\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[merge-sort.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/merge-sort.go)*\n\n`C++`:\n\n```cpp\nvoid sort(int *array, int m){\n    int mass[m];\n    for(int i = 0; i \u003c m; i ++){\n        mass[i] = array[i];\n    }\n    if(m \u003c= 1){\n        array[0] = mass[0];\n    }\n    else{\n        int L[m / 2], R[m - (m / 2)];\n        for(int i = 0; i \u003c m; i ++){\n            if(i \u003c m / 2) L[i] = mass[i];\n            else R[i - (m / 2)] = mass[i];\n        }\n        sort(L, m / 2);\n        sort(R, m - (m / 2));\n        int h = 0, f = 0, k = 0;\n        int C[m];\n        while(h \u003c m / 2 \u0026\u0026 f \u003c m - (m / 2)){\n            if(L[h] \u003c R[f]){\n                C[k] = L[h];\n                h ++;\n            }\n            else{\n                C[k] = R[f];\n                f ++;\n            }\n            k ++;\n        }\n        while(h \u003c m / 2){\n            C[k] = L[h];\n            h ++;\n            k ++;\n        }\n        while(f \u003c m - (m / 2)){\n            C[k] = R[f];\n            f ++;\n            k ++;\n        }\n        for(int i = 0; i \u003c m; i ++){\n            array[i] = C[i];\n        }\n    }\n}\n\nsort(a, len);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[merge-sort.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/merge-sort.cpp)*\n\n`C#`:\n\n```cs\nvoid Sort(ref int[] array, int m)\n{\n    int[] mass = new int[m];\n    for(int i = 0; i \u003c m; i ++)\n    {\n        mass[i] = array[i];\n    }\n    if(m \u003c= 1)\n    {\n        array[0] = mass[0];\n    }\n    else\n    {\n        int[] L = new int[m / 2];\n        int[] R = new int[m - (m / 2)];\n        for(int i = 0; i \u003c m; i ++)\n        {\n            if(i \u003c m / 2) L[i] = mass[i];\n            else R[i - (m / 2)] = mass[i];\n        }\n        Sort(ref L, m / 2);\n        Sort(ref R, m - (m / 2));\n        int h = 0, f = 0, k = 0;\n        int[] C = new int[m];\n        while(h \u003c m / 2 \u0026\u0026 f \u003c m - (m / 2))\n        {\n            if(L[h] \u003c R[f]){\n                C[k] = L[h];\n                h ++;\n            }\n            else{\n                C[k] = R[f];\n                f ++;\n            }\n            k ++;\n        }\n        while(h \u003c m / 2)\n        {\n            C[k] = L[h];\n            h ++;\n            k ++;\n        }\n        while(f \u003c m - (m / 2))\n        {\n            C[k] = R[f];\n            f ++;\n            k ++;\n        }\n        for(int i = 0; i \u003c m; i ++)\n        {\n            array[i] = C[i];\n        }\n    }\n}\n\nSort(ref a, a.Length);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[merge-sort.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/merge-sort.cs)*\n\n### Heap sort / Пірамідальне сортування / Пирамидальная сортировка\n\n**Time complexity / Часова складність / Временная сложность :** *O(n log n)*.\n\n**Pluses / Плюси / Плюсы :** *Fast, stable and don't need additional memory / Швидка, стабільна та не потребує додаткової пам'яті / Быстрая, стабильная и не требует дополнительной памяти*\n\n**Minuses / Мінуси / Минусы :** *Difficult in coding / Важка в програмуванні / Сложная в прогаммировании*\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Heap sort](https://en.wikipedia.org/wiki/Heapsort)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Пірамідальне сортування](https://uk.wikipedia.org/wiki/Пірамідальне_сортування)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Пирамидальная сортировка](https://ru.wikipedia.org/wiki/Пирамидальная_сортировка)*\n\n`Python`:\n\n```python\ndef heapify(array, n, i):\n    largest = i\n    l = 2 * i + 1\n    r = 2 * i + 2\n    if l \u003c n and array[i] \u003c array[l]:\n        largest = l\n    if r \u003c n and array[largest] \u003c array[r]:\n        largest = r\n    if largest != i:\n        array[i], array[largest] = array[largest], array[i]\n        heapify(array, n, largest)\n\ndef sort(array):\n    for i in range(len(array) // 2, -1, -1):\n        heapify(array, len(array), i)\n    for j in range(len(array) - 1, 0, -1):\n        array[j], array[0] = array[0], array[j]\n        heapify(array, j, 0)\n\nsort(a)\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[heap-sort.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/heap-sort.py)*\n\n`JavaScript`:\n\n```js\nfunction heapify(array, n, i){\n    let largest = i;\n    let l = 2 * i + 1;\n    let r = 2 * i + 2;\n    if(l \u003c n \u0026\u0026 array[i] \u003c array[l]){\n        largest = l;\n    }\n    if(r \u003c n \u0026\u0026 array[largest] \u003c array[r]){\n        largest = r;\n    }\n    if(largest != i){\n        array[i] = array[i] + array[largest];\n        array[largest] = array[i] - array[largest];\n        array[i] = array[i] - array[largest];\n        heapify(array, n, largest);\n    }\n}\n\nfunction sort(array){\n    for(let i = Math.floor(array.length / 2); i \u003e -1; i --){\n        heapify(array, array.length, i);\n    }\n    for(let j = array.length - 1; j \u003e 0; j --){\n        array[j] = array[j] + array[0];\n        array[0] = array[j] - array[0];\n        array[j] = array[j] - array[0];\n        heapify(array, j, 0);\n    }\n}\n\nsort(a);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[heap-sort.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/heap-sort.js)*\n\n`Go`:\n\n```go\nfunc Heapify(array []int, n int, i int) {\n    largest := i\n    l := 2*i + 1\n    r := 2*i + 2\n    if l \u003c n \u0026\u0026 array[i] \u003c array[l] {\n        largest = l\n    }\n    if r \u003c n \u0026\u0026 array[largest] \u003c array[r] {\n        largest = r\n    }\n    if largest != i {\n        array[i], array[largest] = array[largest], array[i]\n        Heapify(array, n, largest)\n    }\n}\n\nfunc Sort(array []int) {\n    for i := int(math.Floor(float64(len(array) / 2))); i \u003e -1; i-- {\n        Heapify(array, len(array), i)\n    }\n    for j := len(array) - 1; j \u003e 0; j-- {\n        array[j], array[0] = array[0], array[j]\n        Heapify(array, j, 0)\n    }\n}\n\nSort(a)\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[heap-sort.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/heap-sort.go)*\n\n`C++`:\n\n```cpp\nvoid heapify(int *array, int n, int i){\n    int largest = i;\n    int l = 2 * i + 1;\n    int r = 2 * i + 2;\n    if(l \u003c n \u0026\u0026 array[i] \u003c array[l]){\n        largest = l;\n    }\n    if(r \u003c n \u0026\u0026 array[largest] \u003c array[r]){\n        largest = r;\n    }\n    if(largest != i){\n        array[i] = array[i] + array[largest];\n        array[largest] = array[i] - array[largest];\n        array[i] = array[i] - array[largest];\n        heapify(array, n, largest);\n    }\n}\n\nvoid sort(int *array, int len){\n    for(int i = len / 2; i \u003e -1; i --){\n        heapify(array, len, i);\n    }\n    for(int j = len - 1; j \u003e 0; j --){\n        array[j] = array[j] + array[0];\n        array[0] = array[j] - array[0];\n        array[j] = array[j] - array[0];\n        heapify(array, j, 0);\n    }\n}\n\nsort(a, len);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[heap-sort.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/heap-sort.cpp)*\n\n`C#`:\n\n```cs\nvoid Heapify(ref int[] array, int n, int i)\n{\n    int largest = i;\n    int l = 2 * i + 1;\n    int r = 2 * i + 2;\n    if(l \u003c n \u0026\u0026 array[i] \u003c array[l])\n    {\n        largest = l;\n    }\n    if(r \u003c n \u0026\u0026 array[largest] \u003c array[r])\n    {\n        largest = r;\n    }\n    if(largest != i)\n    {\n        array[i] = array[i] + array[largest];\n        array[largest] = array[i] - array[largest];\n        array[i] = array[i] - array[largest];\n        Heapify(ref array, n, largest);\n    }\n}\n\nvoid Sort(ref int[] array)\n{\n    for(int i = array.Length / 2; i \u003e -1; i --)\n    {\n        Heapify(ref array, array.Length, i);\n    }\n    for(int j = array.Length - 1; j \u003e 0; j --)\n    {\n        array[j] = array[j] + array[0];\n        array[0] = array[j] - array[0];\n        array[j] = array[j] - array[0];\n        Heapify(ref array, j, 0);\n    }\n}\n\nSort(ref a);\n```\n\n\u003cins\u003e***File:***\u003c/ins\u003e *[heap-sort.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Sort/heap-sort.cs)*\n\n## GCD | LCM / НСД | НСК / НОД | НОК\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\nmain.gcd(a, b)\nmain.lcm(a, b)\n```\n\n`JavaScript`:\n\n```js\nmain.gcd(a, b);\nmain.lcm(a, b);\n```\n\n### GCD / НСД / НОД\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[GCD](https://en.wikipedia.org/wiki/Greatest_common_divisor)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[НСД](https://uk.wikipedia.org/wiki/Найбільший_спільний_дільник)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[НОД](https://ru.wikipedia.org/wiki/Наибольший_общий_делитель)*\n\n`Python`:\n\n```python\ndef gcd(a, b):\n    while a != 0 and b != 0:\n        if a \u003e b:\n            a = a % b\n        else:\n            b = b % a\n    return a + b\n```\n\n`JavaScript`:\n\n```js\nfunction gcd(a, b){\n    while(a != 0 \u0026\u0026 b != 0){\n        if(a \u003e b){\n            a = a % b;\n        }\n        else{\n            b = b % a;\n        }\n    }\n    return a + b;\n}\n```\n\n`Go`:\n\n```go\nfunc GCD(a int, b int) int {\n    for a != 0 \u0026\u0026 b != 0 {\n        if a \u003e b {\n            a = a % b\n        } else {\n            b = b % a\n        }\n    }\n    return a + b\n}\n```\n\n`C++`:\n\n```cpp\nint gcd(int a, int b){\n    while(a != 0 \u0026\u0026 b != 0){\n        if(a \u003e b){\n            a = a % b;\n        }\n        else{\n            b = b % a;\n        }\n    }\n    return a + b;\n}\n```\n\n`C#`:\n\n```cs\nint GCD(int a, int b)\n{\n    while(a != 0 \u0026\u0026 b != 0)\n    {\n        if(a \u003e b)\n        {\n            a = a % b;\n        }\n        else\n        {\n            b = b % a;\n        }\n    }\n    return a + b;\n}\n```\n\n\n### LCM / НСК / НОК\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[LCM](https://en.wikipedia.org/wiki/Least_common_multiple)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[НСК](https://uk.wikipedia.org/wiki/Найменше_спільне_кратне)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[НОК](https://ru.wikipedia.org/wiki/Наименьшее_общее_кратное)*\n\n`Python`:\n\n```python\ndef gcd(a, b):\n    while a != 0 and b != 0:\n        if a \u003e b:\n            a = a % b\n        else:\n            b = b % a\n    return a + b\n    \ndef lcm(a, b):\n    return int((a * b) / gcd(a, b))\n```\n\n`JavaScript`:\n\n```js\nfunction gcd(a, b){\n    while(a != 0 \u0026\u0026 b != 0){\n        if(a \u003e b){\n            a = a % b;\n        }\n        else{\n            b = b % a;\n        }\n    }\n    return a + b;\n}\n\nfunction lcm(a, b){\n    return Math.floor((a * b) / gcd(a, b));\n}\n```\n\n`Go`:\n\n```go\nfunc GCD(a int, b int) int {\n    for a != 0 \u0026\u0026 b != 0 {\n        if a \u003e b {\n            a = a % b\n        } else {\n            b = b % a\n        }\n    }\n    return a + b\n}\n\nfunc LCM(a int, b int) int {\n    return int((a * b) / GCD(a, b))\n}\n```\n\n`C++`:\n\n```cpp\nint gcd(int a, int b){\n    while(a != 0 \u0026\u0026 b != 0){\n        if(a \u003e b){\n            a = a % b;\n        }\n        else{\n            b = b % a;\n        }\n    }\n    return a + b;\n}\n\nint lcm(int a, int b){\n    return (a * b) / gcd(a, b);\n}\n```\n\n`C#`:\n\n```cs\nint GCD(int a, int b)\n{\n    while(a != 0 \u0026\u0026 b != 0)\n    {\n        if(a \u003e b)\n        {\n            a = a % b;\n        }\n        else\n        {\n            b = b % a;\n        }\n    }\n    return a + b;\n}\n\nint LCM(int a, int b)\n{\n    return (a * b) / GCD(a, b);\n}\n```\n\n## Primes / Прості числа / Простые числа\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\nmain.iprime(n)\nmain.n_primes(n)\nmain.prime_factors(n)\n```\n\n`JavaScript`:\n\n```js\nmain.iprime(n);\nmain.nPrimes(n);\nmain.primeFactors(n);\n```\n\n### Is prime? / Чи просте число? / Простое ли число?\n\n`Python`:\n\n```python\ndef isprime(n):\n    result = []\n    d = 2\n    while d * d \u003c= n:\n        if n % d == 0:\n            result.append(d)\n            n //= d\n        else:\n            d += 1\n    if n \u003e 1:\n        result.append(n)\n    if len(result) \u003e 1: return False\n    else: return True\n```\n\n`JavaScript`:\n\n```js\nfunction isPrime(n){\n    let result = [];\n    let d = 2;\n    while(d * d \u003c= n){\n        if(n % d == 0){\n            result.push(d);\n            n = Math.floor(n / d);\n        }\n        else{\n            d ++;\n        }\n    }\n    if(n \u003e 1){\n        result.push(n);\n    }\n    if(result.length \u003e 1) return false;\n    else return true;\n}\n```\n\n`Go`:\n\n```go\nfunc IsPrime(n int) bool {\n    result := []int{}\n    d := 2\n    for d*d \u003c= n {\n        if n%d == 0 {\n            result = append(result, d)\n            n = int(n / d)\n        } else {\n            d++\n        }\n    }\n    if n \u003e 1 {\n        result = append(result, n)\n    }\n    if len(result) \u003e 1 {\n        return false\n    } else {\n        return true\n    }\n}\n```\n\n`C++`:\n\n```cpp\nbool isprime(int n){\n    vector\u003cint\u003e result;\n    int d = 2;\n    while(d * d \u003c= n){\n        if(n % d == 0){\n            result.push_back(d);\n            n = n / d;\n        }\n        else{\n            d ++;\n        }\n    }\n    if(n \u003e 1){\n        result.push_back(n);\n    }\n    if(result.size() \u003e 1) return false;\n    else return true;\n}\n```\n\n`C#`:\n\n```cs\nbool IsPrime(int n)\n{\n    List\u003cint\u003e result = new List\u003cint\u003e(){};\n    int d = 2;\n    while(d * d \u003c= n)\n    {\n        if(n % d == 0)\n        {\n            result.Add(d);\n            n = n / d;\n        }\n        else\n        {\n            d ++;\n        }\n    }\n    if(n \u003e 1)\n    {\n        result.Add(n);\n    }\n    if(result.Count() \u003e 1) return false;\n    else return true;\n}\n```\n\n### Finding n prime numbers / Пошук n простих чисел / Поиск n простых чисел\n\n`Python`:\n\n```python\ndef n_primes(n):\n    result = []\n    i = 0\n    m = 1\n    while i \u003c n:\n        m += 1\n        k = True\n        for j in result:\n            if m % j == 0:\n                k = False\n                break\n        if k:\n            result.append(m)\n            i += 1\n    return result\n```\n\n`JavaScript`:\n\n```js\nfunction nPrimes(n){\n    let result = [];\n    let i = 0;\n    let m = 1;\n    let k;\n    while(i \u003c n){\n        m ++;\n        k = true;\n        for(j of result){\n            if(m % j == 0){\n                k = false;\n                break;\n            }\n        }\n        if(k){\n            result.push(m);\n            i ++;\n        }\n    }\n    return result;\n}\n```\n\n`Go`:\n\n```go\nfunc NPrimes(n int) []int {\n    result := []int{}\n    i := 0\n    m := 1\n    var k bool\n    for i \u003c= n {\n        m++\n        k = true\n        for _, j := range result {\n            if m%j == 0 {\n                k = false\n                break\n            }\n        }\n        if k {\n            result = append(result, m)\n            i++\n        }\n    }\n    return result\n}\n```\n\n`C++`:\n\n```cpp\nvector \u003cint\u003e n_primes(int a){\n    vector \u003cint\u003e result;\n    int i = 0;\n    int m = 1;\n    bool k;\n    while(i \u003c n){\n        m ++;\n        k = true;\n        for(auto j: result){\n            if(m % j == 0){\n                k = false;\n                break;\n            }\n        }\n        if(k){\n            result.push_back(m);\n            i ++;\n        }\n    }\n    return result;\n}\n```\n\n`C#`:\n\n```cs\nList\u003cint\u003e NPrimes(int n)\n{\n    List\u003cint\u003e result = new List\u003cint\u003e(){};\n    int i = 0;\n    int m = 1;\n    bool k;\n    while(i \u003c n)\n    {\n        m ++;\n        k = true;\n        foreach(int j in result)\n        {\n            if(m % j == 0){\n                k = false;\n                break;\n            }\n        }\n        if(k)\n        {\n            result.Add(m);\n            i ++;\n        }\n    }\n    return result;\n}\n```\n\n### Finding prime factors of a number / Пошук простих множників числа / Поиск простых множителей числа\n\n`Python`:\n\n```python\ndef prime_factors(a):\n    result = []\n    d = 2\n    while d * d \u003c= a:\n        if a % d == 0:\n            result.append(d)\n            a //= d\n        else:\n            d += 1\n    if a \u003e 1:\n        result.append(a)\n    return result\n```\n\n`JavaScript`:\n\n```js\nfunction primeFactors(a){\n    let result = [];\n    let d = 2;\n    while(d * d \u003c= a){\n        if(a % d == 0){\n            result.push(d);\n            a = Math.floor(a / d);\n        }\n        else{\n            d ++;\n        }\n    }\n    if(a \u003e 1){\n        result.push(a);\n    }\n    return result;\n}\n```\n\n`Go`:\n\n```go\nfunc PrimeFactors(a int) []int {\n    result := []int{}\n    d := 2\n    for d*d \u003c= a {\n        if a%d == 0 {\n            result = append(result, d)\n            a = int(a / d)\n        } else {\n            d++\n        }\n    }\n    if a \u003e 1 {\n        result = append(result, a)\n    }\n    return result\n}\n```\n\n`C++`:\n\n```cpp\nvector \u003cint\u003e prime_factors(int a){\n    vector \u003cint\u003e result;\n    int d = 2;\n    while(d * d \u003c= a){\n        if(a % d == 0){\n            result.push_back(d);\n            a = a / d;\n        }\n        else{\n            d ++;\n        }\n    }\n    if(a \u003e 1){\n        result.push_back(a);\n    }\n    return result;\n}\n```\n\n`C#`:\n\n```cs\nList\u003cint\u003e PrimeFactors(int a)\n{\n    List\u003cint\u003e result = new List\u003cint\u003e(){};\n    int d = 2;\n    while(d * d \u003c= a)\n    {\n        if(a % d == 0)\n        {\n            result.Add(d);\n            a = a / d;\n        }\n        else\n        {\n            d ++;\n        }\n    }\n    if(a \u003e 1)\n    {\n        result.Add(a);\n    }\n    return result;\n}\n```\n\n## Fibonacci number / Послідовність Фібоначчі / Числа Фибоначчи\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\nmain.fibo(n)\n```\n\n`JavaScript`:\n\n```js\nmain.fibo(n);\n```\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Fibonacci number](https://en.wikipedia.org/wiki/Fibonacci_number)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Послідовність Фібоначчі](https://uk.wikipedia.org/wiki/Послідовність_Фібоначчі)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Числа Фибоначчи](https://ru.wikipedia.org/wiki/Числа_Фибоначчи)*\n\n`Python`:\n\n```python\ndef fibo(n):\n    if n \u003c= 1:\n        return n\n    else:\n        return fibo(n - 1) + fibo(n - 2)\n```\n\n`JavaScript`:\n\n```js\nfunction fibo(n){\n    if(n \u003c= 1){\n        return n;\n    }\n    else{\n        return fibo(n - 1) + fibo(n - 2);\n    }\n}\n```\n\n`Go`:\n\n```go\nfunc Fibo(n int) int {\n    if n \u003c= 1 {\n        return n\n    } else {\n        return Fibo(n-1) + Fibo(n-2)\n    }\n}\n```\n\n`C++`:\n\n```cpp\nint fibo(int n){\n    if(n \u003c= 1){\n        return n;\n    }\n    else{\n        return fibo(n - 1) + fibo(n - 2);\n    }\n}\n```\n\n`C#`:\n\n```cs\nint Fibo(int n)\n{\n    if(n \u003c= 1)\n    {\n        return n;\n    }\n    else\n    {\n        return Fibo(n - 1) + Fibo(n - 2);\n    }\n}\n```\n\n## Factorials / Факторіали / Факториалы\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\nfactorials.factorial(n)\nfactorials.double_factorial(n)\nfactorials.subfactorial(n)\nfactorials.primorial(n)\nfactorials.p_primorial(n)\nfactorials.superfactorial(n)\nfactorials.superduperfactorial(n)\n```\n\n`JavaScript`:\n\n```js\nfactorials.factorial(n);\nfactorials.doubleFactorial(n);\nfactorials.subfactorial(n);\nfactorials.primorial(n);\nfactorials.pPrimorial(n);\nfactorials.superfactorial(n);\nfactorials.superduperfactorial(n);\n```\n\n### Counting factorial / Підрахунок факторіалу / Вычисление факториала\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Factorial](https://en.wikipedia.org/wiki/Factorial)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Факторіал](https://uk.wikipedia.org/wiki/Факторіал)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Факториал](https://ru.wikipedia.org/wiki/Факториал)*\n\n`Python`:\n\n```python\ndef factorial(n):\n    result = 1\n    for m in range(1, n + 1):\n        result *= m;\n    return result\n```\n\n`Or`:\n\n```python\ndef factorial(n):\n    if n == 0: return 1\n    else: return n * factorial(n - 1)\n```\n\n`JavaScript`:\n\n```js\nfunction factorial(n){\n    let result = 1;\n    for(let m = 1; m \u003c= n; m ++){\n        result *= m;\n    }\n    return result;\n}\n```\n\n`Or`:\n\n```js\nfunction factorial(n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n```\n\n`Go`:\n\n```go\nfunc Factorial(n int) int {\n    result := 1\n    for m := 1; m \u003c= n; m++ {\n        result *= m\n    }\n    return result\n}\n```\n\n`Or`:\n\n```go\nfunc Factorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return n * Factorial(n-1)\n    }\n}\n```\n\n`C++`:\n\n```cpp\nint factorial(int n){\n    int result = 1;\n    for(int m = 1; m \u003c= n; m ++){\n        result *= m;\n    }\n    return result;\n}\n```\n\n`Or`:\n\n```cpp\nint factorial(int n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n```\n\n`C#`:\n\n```cs\nint Factorial(int n)\n{\n    int result = 1;\n    for(int m = 1; m \u003c= n; m ++)\n    {\n        result *= m;\n    }\n    return result;\n}\n```\n\n`Or`:\n\n```cs\nint Factorial(int n)\n{\n    if(n == 0) return 1;\n    else return n * Factorial(n - 1);\n}\n```\n\n### Counting double factorial / Підрахунок подвійного факторіалу / Вычисление двойного факториала\n\n`Python`:\n\n```python\ndef double_factorial(n):\n    if n \u003c= 0: return 1\n    else: return n * double_factorial(n - 2)\n```\n\n`JavaScript`:\n\n```js\nfunction doubleFactorial(n){\n    if(n \u003c= 0) return 1;\n    else return n * doubleFactorial(n - 2);\n}\n```\n\n`Go`:\n\n```go\nfunc DoubleFactorial(n int) int {\n    if n \u003c= 0 {\n        return 1\n    } else {\n        return n * DoubleFactorial(n-2)\n    }\n}\n```\n\n`C++`:\n\n```cpp\nint double_factorial(int n){\n    if(n \u003c= 0) return 1;\n    else return n * double_factorial(n - 2);\n}\n```\n\n`C#`:\n\n```cs\nint DoubleFactorial(int n)\n{\n    if(n \u003c= 0) return 1;\n    else return n * DoubleFactorial(n - 2);\n}\n```\n\n### Counting subfactorial / Підрахунок субфакторіалу / Вычисление субфакториала\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Subfactorial](https://en.wiktionary.org/wiki/subfactorial)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Субфакторіал](https://uk.wikipedia.org/wiki/Субфакторіал)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Субфакториал](https://ru.wikipedia.org/wiki/Субфакториал)*\n\n`Python`:\n\n```python\ndef factorial(n):\n    if n == 0: return 1\n    else: return n * factorial(n - 1)\n\ndef subfactorial(n):\n    result = 1\n    k = True\n    for m in range(1, n + 1):\n        if k:\n            result -= 1 / factorial(m)\n            k = False\n        else:\n            result += 1 / factorial(m)\n            k = True\n    return round(result * factorial(n))\n```\n\n`Or`:\n\n```python\ndef factorial(n):\n    if n == 0: return 1\n    else: return n * factorial(n-1)\n\ndef subfactorial(n):\n    return round(factorial(n) / 2.718)\n```\n\n`JavaScript`:\n\n```js\nfunction factorial(n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nfunction subfactorial(n){\n    let result = 1;\n    let k = true;\n    for(let m = 1; m \u003c= n; m ++){\n        if(k){\n            result -= 1 / factorial(m);\n            k = false;\n        }\n        else{\n            result += 1 / factorial(m);\n            k = true;\n        }\n    }\n    return Math.round(result * factorial(n));\n}\n```\n\n`Or`:\n\n```js\nfunction factorial(n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nfunction subfactorial(n){\n    return Math.round(factorial(n) / 2.718);\n}\n```\n\n`Go`:\n\n```go\nimport \"math\"\n\nfunc Factorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return n * Factorial(n-1)\n    }\n}\n\nfunc Subfactorial(n int) int {\n    result := 1.0\n    k := true\n    for m := 1; m \u003c= n; m++ {\n        if k {\n            result -= 1.0 / float64(Factorial(m))\n            k = false\n        } else {\n            result += 1.0 / float64(Factorial(m))\n            k = true\n        }\n    }\n    return int(math.Round(result * float64(Factorial(n))))\n}\n```\n\n`Or`:\n\n```go\nimport \"math\"\n\nfunc Factorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return n * Factorial(n-1)\n    }\n}\n\nfunc Subfactorial(n int) int {\n    return int(math.Round(float64(Factorial(n)) / 2.718))\n}\n```\n\n`C++`:\n\n```cpp\nint factorial(int n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nint subfactorial(int n){\n    double result = 1;\n    bool k = true;\n    for(int m = 1; m \u003c= n; m ++){\n        if(k){\n            result -= 1.0 / factorial(m);\n            k = false;\n        }\n        else{\n            result += 1.0 / factorial(m);\n            k = true;\n        }\n    }\n    return result * factorial(n);\n}\n```\n\n`Or`:\n\n```cpp\n#include \u003cmath.h\u003e\n\nint factorial(int n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nint subfactorial(int n){\n    return round(factorial(n) / 2.718);\n}\n```\n\n`C#`:\n\n```cs\nint Factorial(int n)\n{\n    if(n == 0) return 1;\n    else return n * Factorial(n - 1);\n}\n\nint SubFactorial(int n)\n{\n    double result = 1;\n    bool k = true;\n    for(int m = 1; m \u003c= n; m ++)\n    {\n        if(k)\n        {\n            result -= 1.0 / Factorial(m);\n            k = false;\n        }\n        else\n        {\n            result += 1.0 / Factorial(m);\n            k = true;\n        }\n    }\n    return result * Factorial(n);\n}\n```\n\n`Or`:\n\n```cs\nint Factorial(int n)\n{\n    if(n == 0) return 1;\n    else return n * Factorial(n - 1);\n}\n\nint SubFactorial(int n)\n{\n    return Math.Round(Factorial(n) / 2.718);\n}\n```\n\n### Counting primorial / Підрахунок пріморіалу / Вычисление примориала\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Primorial](https://en.wikipedia.org/wiki/Primorial)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Прайморіал](https://uk.wikipedia.org/wiki/Прайморіал)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Праймориал](https://ru.wikipedia.org/wiki/Праймориал)*\n\n`Python`:\n\n```python\ndef isprime(n):\n    result = []\n    d = 2\n    while d * d \u003c= n:\n        if n % d == 0:\n            result.append(d)\n            n //= d\n        else:\n            d += 1\n    if n \u003e 1:\n        result.append(n)\n    if len(result) \u003e 1: return False\n    else: return True\n\ndef p(n):\n    result = []\n    i = 0\n    m = 1\n    while i \u003c n:\n        m += 1\n        k = True\n        for j in result:\n            if m % j == 0:\n                k = False\n                break\n        if k:\n            result.append(m)\n            i += 1\n    return result[-1]\n\n#primorial less than n\n#пріморіал меньше n\n#примориал меньше n\ndef primorial(n):\n    if n == 1: return 1\n    elif isprime(n): return n * primorial(n - 1)\n    else: return primorial(n - 1)\n\n#primorial for first n primes\n#пріморіал для перших n простих\n#примориал первых n простых\ndef p_primorial(n):\n    return primorial(p(n))\n```\n\n`JavaScript`:\n\n```js\nfunction isprime(n){\n    let result = [];\n    let d = 2;\n    while(d * d \u003c= n){\n        if(n % d == 0){\n            result.push(d);\n            n = Math.floor(n / d);\n        }\n        else{\n            d ++;\n        }\n    }\n    if(n \u003e 1){\n        result.push(n);\n    }\n    if(result.length \u003e 1) return false;\n    else return true;\n}\n\nfunction p(n){\n    let result = [];\n    let i = 0;\n    let m = 1;\n    let k;\n    while(i \u003c n){\n        m ++;\n        k = true;\n        for(j of result){\n            if(m % j == 0){\n                k = false;\n                break;\n            }\n        }\n        if(k){\n            result.push(m);\n            i ++;\n        }\n    }\n    return result[result.length - 1];\n}\n\n//primorial less than n\n//пріморіал меньше n\n//примориал меньше n\nfunction primorial(n){\n    if(n == 1) return 1;\n    else if(isprime(n)) return n * primorial(n - 1);\n    else return primorial(n - 1);\n}\n\n//primorial for first n primes\n//пріморіал для перших n простих\n//примориал первых n простых\nfunction pPrimorial(n){\n    return primorial(p(n));\n}\n```\n\n`Go`:\n\n```go\nfunc IsPrime(n int) bool {\n    result := []int{}\n    d := 2\n    for d*d \u003c= n {\n        if n%d == 0 {\n            result = append(result, d)\n            n = int(n / d)\n        } else {\n            d++\n        }\n    }\n    if n \u003e 1 {\n        result = append(result, n)\n    }\n    if len(result) \u003e 1 {\n        return false\n    } else {\n        return true\n    }\n}\n\nfunc P(n int) int {\n    result := []int{}\n    i := 0\n    m := 1\n    var k bool\n    for i \u003c n {\n        m++\n        k = true\n        for _, j := range result {\n            if m%j == 0 {\n                k = false\n                break\n            }\n        }\n        if k {\n            result = append(result, m)\n            i++\n        }\n    }\n    return result[len(result)-1]\n}\n\n//primorial less than n\n//пріморіал меньше n\n//примориал меньше n\nfunc Primorial(n int) int {\n    if n == 1 {\n        return 1\n    } else if IsPrime(n) {\n        return n * Primorial(n-1)\n    } else {\n        return Primorial(n - 1)\n    }\n}\n\n//primorial for first n primes\n//пріморіал для перших n простих\n//примориал первых n простых\nfunc PPrimorial(n int) int {\n    return Primorial(P(n))\n}\n```\n\n`C++`:\n\n```cpp\nbool isprime(int n){\n    vector \u003cint\u003e result;\n    int d = 2;\n    while(d * d \u003c= n){\n        if(n % d == 0){\n            result.push_back(d);\n            n = n / d;\n        }\n        else{\n            d ++;\n        }\n    }\n    if(n \u003e 1){\n        result.push_back(n);\n    }\n    if(result.size() \u003e 1) return false;\n    else return true;\n}\n\nint p(int n){\n    vector \u003cint\u003e result;\n    int i = 0;\n    int m = 1;\n    bool k;\n    while(i \u003c n){\n        m ++;\n        k = true;\n        for(auto j: result){\n            if(m % j == 0){\n                k = false;\n                break;\n            }\n        }\n        if(k){\n            result.push_back(m);\n            i ++;\n        }\n    }\n    return result[result.size() - 1];\n}\n\n//primorial less than n\n//пріморіал меньше n\n//примориал меньше n\nint primorial(int n){\n    if(n == 1) return 1;\n    else if(isprime(n)) return n * primorial(n - 1);\n    else return primorial(n - 1);\n}\n\n//primorial for first n primes\n//пріморіал для перших n простих\n//примориал первых n простых\nint p_primorial(int n){\n    return primorial(p(n));\n}\n```\n\n`C#`:\n\n```cs\nbool IsPrime(int n)\n{\n    List\u003cint\u003e result = new List\u003cint\u003e(){};\n    int d = 2;\n    while(d * d \u003c= n)\n    {\n        if(n % d == 0)\n        {\n            result.Add(d);\n            n = n / d;\n        }\n        else\n        {\n            d ++;\n        }\n    }\n    if(n \u003e 1)\n    {\n        result.Add(n);\n    }\n    if(result.Count() \u003e 1) return false;\n    else return true;\n}\n\nint P(int n)\n{\n    List\u003cint\u003e result = new List\u003cint\u003e(){};\n    int i = 0;\n    int m = 1;\n    bool k;\n    while(i \u003c n)\n    {\n        m ++;\n        k = true;\n        for(auto j: result)\n        {\n            if(m % j == 0)\n            {\n                k = false;\n                break;\n            }\n        }\n        if(k)\n        {\n            result.Add(m);\n            i ++;\n        }\n    }\n    return result[^1];\n}\n\n//primorial less than n\n//пріморіал меньше n\n//примориал меньше n\nint Primorial(int n)\n{\n    if(n == 1) return 1;\n    else if(IsPrime(n)) return n * Primorial(n - 1);\n    else return Primorial(n - 1);\n}\n\n//primorial for first n primes\n//пріморіал для перших n простих\n//примориал первых n простых\nint PPrimorial(int n)\n{\n    return Primorial(P(n));\n}\n```\n\n### Counting superfactorial / Підрахунок суперфакторіалу / Вычисление суперфакториала\n\n`Python`:\n\n```python\ndef factorial(n):\n    if n == 0: return 1\n    else: return n * factorial(n - 1)\n\ndef superfactorial(n):\n    if n == 0: return 1\n    else: return factorial(n) * superfactorial(n - 1)\n```\n\n`JavaScript`:\n\n```js\nfunction factorial(n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nfunction superfactorial(n){\n    if(n == 0) return 1;\n    else return factorial(n) * superfactorial(n - 1);\n}\n```\n\n`Go`:\n\n```go\nfunc Factorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return n * Factorial(n-1)\n    }\n}\n\nfunc SuperFactorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return Factorial(n) * SuperFactorial(n-1)\n    }\n}\n```\n\n`C++`:\n\n```cpp\nint factorial(int n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nint superfactorial(int n){\n    if(n == 0) return 1;\n    else return factorial(n) * superfactorial(n - 1);\n}\n```\n\n`C#`:\n\n```cs\nint Factorial(int n)\n{\n    if(n == 0) return 1;\n    else return n * Factorial(n - 1);\n}\n\nint SuperFactorial(int n)\n{\n    if(n == 0) return 1;\n    else return Factorial(n) * SuperFactorial(n - 1);\n}\n```\n\n### Counting superduperfactorial / Підрахунок гіперфакторіалу / Вычисление гиперфакториала\n\n`Python`:\n\n```python\ndef factorial(n):\n    if n == 0: return 1\n    else: return n * factorial(n - 1)\n\ndef superfactorial(n):\n    if n == 0: return 1\n    else: return factorial(n) * superfactorial(n - 1)\n\ndef superduperfactorial(n):\n    if n == 0: return 1\n    else: return superfactorial(n) * superduperfactorial(n - 1)\n```\n\n`JavaScript`:\n\n```js\nfunction factorial(n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nfunction superfactorial(n){\n    if(n == 0) return 1;\n    else return factorial(n) * superfactorial(n - 1);\n}\n\nfunction superduperfactorial(n){\n    if(n == 0) return 1;\n    else return superfactorial(n) * superduperfactorial(n - 1);\n}\n```\n\n`Go`:\n\n```go\nfunc Factorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return n * Factorial(n-1)\n    }\n}\n\nfunc SuperFactorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return Factorial(n) * SuperFactorial(n-1)\n    }\n}\n\nfunc SuperDuperFactorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return SuperFactorial(n) * SuperDuperFactorial(n-1)\n    }\n}\n```\n\n`C++`:\n\n```cpp\nint factorial(int n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nint superfactorial(int n){\n    if(n == 0) return 1;\n    else return factorial(n) * superfactorial(n - 1);\n}\n\nint superduperfactorial(int n){\n    if(n == 0) return 1;\n    else return superfactorial(n) * superduperfactorial(n - 1);\n}\n```\n\n`C#`:\n\n```cpp\nint Factorial(int n)\n{\n    if(n == 0) return 1;\n    else return n * Factorial(n - 1);\n}\n\nint SuperFactorial(int n)\n{\n    if(n == 0) return 1;\n    else return Factorial(n) * SuperFactorial(n - 1);\n}\n\nint SuperDuperFactorial(int n){\n    if(n == 0) return 1;\n    else return SuperFactorial(n) * SuperDuperFactorial(n - 1);\n}\n```\n\n## Combinatorics / Комбінаторика / Комбинаторика\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\ncombinatorics.count_combinations(n, k)\ncombinatorics.count_permutations(n, k)\ncombinatorics.generate_combinations(arr, k)\ncombinatorics.generate_permutations(arr, k)\n```\n\n`JavaScript`:\n\n```js\ncombinatorics.countCombinations(n, k);\ncombinatorics.countPermutations(n, k);\ncombinatorics.generateCombinations(arr, k);\ncombinatorics.generatePermutations(arr, k);\n```\n\n\u003cins\u003e***Wikipedia:***\u003c/ins\u003e *[Combinatorics](https://en.wikipedia.org/wiki/Combinatorics)*\n\n\u003cins\u003e***Вікіпедія:***\u003c/ins\u003e *[Комбінаторика](https://uk.wikipedia.org/wiki/Комбінаторика)*\n\n\u003cins\u003e***Википедия:***\u003c/ins\u003e *[Комбинаторика](https://ru.wikipedia.org/wiki/Комбинаторика)*\n\n### Files / Файли / Файлы\n\n\u003cins\u003e***Python:***\u003c/ins\u003e *[combinatorics.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Combinatorics/combinatorics.py)*\n\n\u003cins\u003e***JavaScript:***\u003c/ins\u003e *[combinatorics.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Combinatorics/combinatorics.js)*\n\n\u003cins\u003e***Go:***\u003c/ins\u003e *[combinatorics.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Combinatorics/combinatorics.go)*\n\n\u003cins\u003e***C++:***\u003c/ins\u003e *[combinatorics.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Combinatorics/combinatorics.cpp)*\n\n\u003cins\u003e***C#:***\u003c/ins\u003e *[combinatorics.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Combinatorics/combinatorics.cs)*\n\n### Combinations / Комбінації / Сочетания\n\n`Python`:\n\n```python\ndef factorial(n):\n    if n == 0: return 1\n    else: return n * factorial(n - 1)\n    \ndef count_combinations(n, k):\n    return factorial(n) / (factorial(k) * factorial(n - k))\n    \ndef generate_combinations(arr, k = None):\n    if(k == None):\n        k = 1\n    result = []\n    for i in range(0, count_combinations(len(arr), k)):\n        local_result = [0]\n        n = len(arr)\n        s = 0\n        for j in range(1,k+1):\n            t = local_result[j - 1] + 1;\n            while (t \u003c (n - k + j)) and ((s + count_combinations(n - t, k - j)) \u003c= i):\n                s += count_combinations(n - t, k - j)\n                t += 1  \n            local_result.append(t)\n        for l in range(0, len(local_result)):\n            local_result[l] = arr[local_result[l] - 1]\n        result.append(local_result[1:])\n    return result\n```\n\n\n`JavaScript`:\n\n```js\nfunction factorial(n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nfunction countCombinations(n, k){\n    return factorial(n) / (factorial(k) * factorial(n - k));\n}\n\nfunction generateCombinations(arr, k = NaN){\n    if(isNaN(k)){\n        k = 1;\n    }\n    let result = [];\n    for(let i = 0; i \u003c countCombinations(arr.length, k); i ++){\n        let localResult = [0];\n        let n = arr.length;\n        let s = 0;\n        for(let j = 1; j \u003c= k; j ++){\n            let t = localResult[j - 1] + 1;\n            while((t \u003c (n - k + j)) \u0026\u0026 ((s + countCombinations(n - t, k - j)) \u003c= i)){\n                s += countCombinations(n - t, k - j);\n                t ++;   \n            }\n            localResult.push(t);\n        }\n        for(l in localResult){\n            localResult[l] = arr[localResult[l] - 1];\n        }\n        result.push(localResult.slice(1, localResult.length));\n    }\n    return result;\n}\n```\n\n`Go`:\n\n```go\nfunc Factorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return n * Factorial(n-1)\n    }\n}\n\nfunc CountCombinations(n int, k int) int {\n    return Factorial(n) / (Factorial(k) * Factorial(n-k))\n}\n\nfunc GenerateCombinations(arr []int, k int) [][]int {\n    result := [][]int{}\n    for i := 0; i \u003c CountCombinations(len(arr), k); i++ {\n        localResult := []int{0}\n        n := len(arr)\n        s := 0\n        for j := 1; j \u003c= k; j++ {\n            t := localResult[j-1] + 1\n            for (t \u003c (n - k + j)) \u0026\u0026 (s+CountCombinations(n-t, k-j) \u003c= i) {\n                s += CountCombinations(n-t, k-j)\n                t++\n            }\n            localResult = append(localResult, t)\n        }\n        for l := 1; l \u003c len(localResult); l++ {\n            localResult[l] = arr[localResult[l]-1]\n        }\n        result = append(result, localResult[1:])\n    }\n    return result\n}\n```\n\n`C++`:\n\n```cpp\nint factorial(int n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nint count_combinations(int n, int k){\n    return factorial(n) / (factorial(k) * factorial(n - k));\n}\n\nvector \u003cvector \u003cint\u003e\u003e generate_combinations(vector \u003cint\u003e arr, int k){\n    vector \u003cvector \u003cint\u003e\u003e result;\n    for(int i = 0; i \u003c count_combinations(arr.size(), k); i ++){\n        vector \u003cint\u003e local_result(1, 0);\n        int n = arr.size();\n        int s = 0;\n        for(int j = 1; j \u003c= k; j++){\n            int t = local_result[j - 1] + 1;\n            while((t \u003c (n - k + j)) \u0026\u0026 ((s + count_combinations(n - t, k - j) \u003c= i))){\n                s += count_combinations(n - t, k - j);\n                t ++;\n            }\n            local_result.push_back(t);\n        }\n        for(int l = 1; l \u003c local_result.size(); l ++){\n            local_result[l] = arr[local_result[l] - 1];\n        }\n        result.push_back(vector \u003cint\u003e(local_result.begin() + 1, local_result.end()));\n    }\n    return result;\n}\n```\n\n`C#`:\n\n```cs\nint Factorial(int n)\n{\n    if(n == 0) return 1;\n    else return n * Factorial(n - 1);\n}\n\nint CountCombinations(int n, int k)\n{\n    return Factorial(n) / (Factorial(k) * Factorial(n - k));\n}\n\nList\u003cList \u003cint\u003e\u003e GenerateCombinations(List\u003cint\u003e arr, int k)\n{\n    List\u003cList \u003cint\u003e\u003e result = new List\u003cList \u003cint\u003e\u003e(){};\n    for(int i = 0; i \u003c CountCombinations(arr.Count(), k); i ++)\n    {\n        List\u003cint\u003e localResult = new List\u003cint\u003e(1){0};\n        int n = arr.Count();\n        int s = 0;\n        for(int j = 1; j \u003c= k; j ++)\n        {\n            int t = localResult[j - 1] + 1;\n            while((t \u003c (n - k + j)) \u0026\u0026 ((s + CountCombinations(n - t, k - j)) \u003c= i))\n            {\n                s += CountCombinations(n - t, k - j);\n                t ++;\n            }\n            localResult.Add(t);\n        }\n        for(int l = 1; l \u003c localResult.Count(); l ++){\n            localResult[l] = arr[localResult[l] - 1];\n        }\n        result.Add(localResult.GetRange(1, localResult.Count() - 1));\n    }\n    return result;\n}\n```\n\n### Permutations / Розміщення / Размещения\n\n`Python`:\n\n```python\ndef factorial(n):\n    if n == 0: return 1\n    else: return n * factorial(n - 1)\n\ndef count_combinations(n, k):\n    return factorial(n) / (factorial(k) * factorial(n - k))\n\ndef count_permutations(n, k):\n    return factorial(n) / factorial(n - k)\n    \ndef generate_combinations(arr, k = None):\n    if(k == None):\n        k = 1\n    result = []\n    for i in range(0, count_combinations(len(arr), k)):\n        local_result = [0]\n        n = len(arr)\n        s = 0\n        for j in range(1,k+1):\n            t = local_result[j - 1] + 1;\n            while (t \u003c (n - k + j)) and ((s + count_combinations(n - t, k - j)) \u003c= i):\n                s += count_combinations(n - t, k - j)\n                t += 1  \n            local_result.append(t)\n        for l in range(0, len(local_result)):\n            local_result[l] = arr[local_result[l] - 1]\n        result.append(local_result[1:])\n    return result\n\ndef generate_permutations(arr, k = None):\n    if(k == None):\n        k = len(arr)\n    result = []\n    m = generate_combinations(arr, k)\n    for arr in m:\n        local_result = []\n        for i in range(0, factorial(len(arr))):\n            ind = i + 1\n            local_local_result = []\n            local_local_arr = []\n            for a in arr:\n                local_local_arr.append(a)\n            n = len(local_local_arr)\n            for j in range(1, n + 1):\n                f = factorial(n - j)\n                g = int((ind + f - 1) / f)\n                local_local_result.append(local_local_arr.pop(g - 1))\n                ind -= (g - 1) * f\n            if len(local_local_arr):\n                local_local_result.append(local_local_arr[0])\n            local_result.append(local_local_result)\n        for u in local_result:\n            result.append(u)\n    return result\n```\n\n\n`JavaScript`:\n\n```js\nfunction factorial(n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nfunction countCombinations(n, k){\n    return factorial(n) / (factorial(k) * factorial(n - k));\n}\n\nfunction countPermutations(n, k){\n    return factorial(n) / factorial(n - k);\n}\n\nfunction generateCombinations(arr, k = NaN){\n    if(isNaN(k)){\n        k = 1;\n    }\n    let result = [];\n    for(let i = 0; i \u003c countCombinations(arr.length, k); i ++){\n        let localResult = [0];\n        let n = arr.length;\n        let s = 0;\n        for(let j = 1; j \u003c= k; j ++){\n            let t = localResult[j - 1] + 1;\n            while((t \u003c (n - k + j)) \u0026\u0026 ((s + countCombinations(n - t, k - j)) \u003c= i)){\n                s += countCombinations(n - t, k - j);\n                t ++;   \n            }\n            localResult.push(t);\n        }\n        for(l in localResult){\n            localResult[l] = arr[localResult[l] - 1];\n        }\n        result.push(localResult.slice(1, localResult.length));\n    }\n    return result;\n}\n\nfunction generatePermutations(arr, k = NaN){\n    if(isNaN(k)){\n        k = arr.length;\n    }\n    let result = [];\n    let m = generateCombinations(arr, k);\n    for(arr of m){\n        let localResult = [];\n        for(let i = 0; i \u003c factorial(arr.length); i ++){\n            let ind = i + 1;\n            let localLocalResult = [];\n            let localLocalArr = [];\n            for(a of arr){\n                localLocalArr.push(a);\n            }\n            let n = localLocalArr.length;\n            for(let j = 1; j \u003c= n; j ++){\n                let f = factorial(n - j);\n                let g = Math.floor((ind + f - 1) / f);\n                localLocalResult.push(localLocalArr.splice(g - 1, 1)[0]);\n                ind -= (g - 1) * f;\n            }\n            if(localLocalArr.length){\n                localLocalResult.push(localLocalArr[0]);\n            }\n            localResult.push(localLocalResult);\n        }\n        for(u of localResult){\n            result.push(u);\n        }\n    }\n    return result;\n}\n```\n\n`Go`:\n\n```go\nfunc Factorial(n int) int {\n    if n == 0 {\n        return 1\n    } else {\n        return n * Factorial(n-1)\n    }\n}\n\nfunc CountCombinations(n int, k int) int {\n    return Factorial(n) / (Factorial(k) * Factorial(n-k))\n}\n\nfunc CountPermutations(n int, k int) int {\n    return Factorial(n) / Factorial(n-k)\n}\n\nfunc GenerateCombinations(arr []int, k int) [][]int {\n    result := [][]int{}\n    for i := 0; i \u003c CountCombinations(len(arr), k); i++ {\n        localResult := []int{0}\n        n := len(arr)\n        s := 0\n        for j := 1; j \u003c= k; j++ {\n            t := localResult[j-1] + 1\n            for (t \u003c (n - k + j)) \u0026\u0026 (s+CountCombinations(n-t, k-j) \u003c= i) {\n                s += CountCombinations(n-t, k-j)\n                t++\n            }\n            localResult = append(localResult, t)\n        }\n        for l := 1; l \u003c len(localResult); l++ {\n            localResult[l] = arr[localResult[l]-1]\n        }\n        result = append(result, localResult[1:])\n    }\n    return result\n}\n\nfunc GeneratePermutations(arr []int, k int) [][]int {\n    result := [][]int{}\n    m := GenerateCombinations(arr, k)\n    for _, a := range m {\n        localResult := [][]int{}\n        for i := 0; i \u003c Factorial(len(a)); i++ {\n            ind := i + 1\n            localLocalResult := []int{}\n            localLocalArr := []int{}\n            for _, r := range a {\n                localLocalArr = append(localLocalArr, r)\n            }\n            n := len(localLocalArr)\n            for j := 1; j \u003c= n; j++ {\n                f := Factorial(n - j)\n                g := (ind + f - 1) / f\n                localLocalResult = append(localLocalResult, localLocalArr[g-1])\n                localLocalArr = append(localLocalArr[:g-1], localLocalArr[g:]...)\n                ind -= (g - 1) * f\n            }\n            if len(localLocalArr) \u003e 0 {\n                localLocalResult = append(localLocalResult, localLocalArr[0])\n            }\n            localResult = append(localResult, localLocalResult)\n        }\n        for _, u := range localResult {\n            result = append(result, u)\n        }\n    }\n    return result\n}\n```\n\n`C++`:\n\n```cpp\nint factorial(int n){\n    if(n == 0) return 1;\n    else return n * factorial(n - 1);\n}\n\nint count_combinations(int n, int k){\n    return factorial(n) / (factorial(k) * factorial(n - k));\n}\n\nint count_permutations(int n, int k){\n    return factorial(n) / factorial(n - k);\n}\n\nvector \u003cvector \u003cint\u003e\u003e generate_combinations(vector \u003cint\u003e arr, int k){\n    vector \u003cvector \u003cint\u003e\u003e result;\n    for(int i = 0; i \u003c count_combinations(arr.size(), k); i ++){\n        vector \u003cint\u003e local_result(1, 0);\n        int n = arr.size();\n        int s = 0;\n        for(int j = 1; j \u003c= k; j++){\n            int t = local_result[j - 1] + 1;\n            while((t \u003c (n - k + j)) \u0026\u0026 ((s + count_combinations(n - t, k - j) \u003c= i))){\n                s += count_combinations(n - t, k - j);\n                t ++;\n            }\n            local_result.push_back(t);\n        }\n        for(int l = 1; l \u003c local_result.size(); l ++){\n            local_result[l] = arr[local_result[l] - 1];\n        }\n        result.push_back(vector \u003cint\u003e(local_result.begin() + 1, local_result.end()));\n    }\n    return result;\n}\n\nvector \u003cvector \u003cint\u003e\u003e generate_permutations(vector \u003cint\u003e arr, int k){\n    vector \u003cvector \u003cint\u003e\u003e result;\n    vector \u003cvector \u003cint\u003e\u003e m = generate_combinations(arr, k);\n    for(auto a: m){\n        vector \u003cvector \u003cint\u003e\u003e local_result;\n        for(int i = 0; i \u003c factorial(a.size()); i ++){\n            int ind = i + 1;\n            vector \u003cint\u003e local_local_result;\n            vector \u003cint\u003e local_local_arr;\n            for(auto r: a){\n                local_local_arr.push_back(r);\n            }\n            int n = local_local_arr.size();\n            for(int j = 1; j \u003c= n; j ++){\n                int f = factorial(n - j);\n                int g = (ind + f - 1) / f;\n                local_local_result.push_back(local_local_arr[g - 1]);\n                auto iter = local_local_arr.cbegin();\n                local_local_arr.erase(iter + g - 1);\n                ind -= (g - 1) * f;\n            }\n            if(local_local_arr.size()){\n                local_local_result.push_back(local_local_arr[0]);\n            }\n            local_result.push_back(local_local_result);\n        }\n        for(auto u: local_result){\n            result.push_back(u);\n        }\n    }\n    return result;\n}\n```\n\n`C#`:\n\n```cs\nint Factorial(int n)\n{\n    if(n == 0) return 1;\n    else return n * Factorial(n - 1);\n}\n\nint CountCombinations(int n, int k)\n{\n    return Factorial(n) / (Factorial(k) * Factorial(n - k));\n}\n\nint CountPermutations(int n, int k)\n{\n    return Factorial(n) / Factorial(n - k);\n}\n\nList\u003cList \u003cint\u003e\u003e GenerateCombinations(List\u003cint\u003e arr, int k)\n{\n    List\u003cList \u003cint\u003e\u003e result = new List\u003cList \u003cint\u003e\u003e(){};\n    for(int i = 0; i \u003c CountCombinations(arr.Count(), k); i ++)\n    {\n        List\u003cint\u003e localResult = new List\u003cint\u003e(1){0};\n        int n = arr.Count();\n        int s = 0;\n        for(int j = 1; j \u003c= k; j ++)\n        {\n            int t = localResult[j - 1] + 1;\n            while((t \u003c (n - k + j)) \u0026\u0026 ((s + CountCombinations(n - t, k - j)) \u003c= i))\n            {\n                s += CountCombinations(n - t, k - j);\n                t ++;\n            }\n            localResult.Add(t);\n        }\n        for(int l = 1; l \u003c localResult.Count(); l ++){\n            localResult[l] = arr[localResult[l] - 1];\n        }\n        result.Add(localResult.GetRange(1, localResult.Count() - 1));\n    }\n    return result;\n}\n\nList\u003cList \u003cint\u003e\u003e GeneratePermutations(List\u003cint\u003e arr, int k)\n{\n    List\u003cList \u003cint\u003e\u003e result = new List\u003cList \u003cint\u003e\u003e(){};\n    List\u003cList \u003cint\u003e\u003e m = GenerateCombinations(arr, k);\n    foreach(List \u003cint\u003e a in m)\n    {\n        List\u003cList \u003cint\u003e\u003e localResult = new List\u003cList \u003cint\u003e\u003e(){};\n        for(int i = 0; i \u003c Factorial(a.Count()); i ++)\n        {\n            int ind = i + 1;\n            List \u003cint\u003e localLocalResult = new List \u003cint\u003e(){};\n            List \u003cint\u003e localLocalArr = new List \u003cint\u003e(){};\n            foreach(int r in a)\n            {\n                localLocalArr.Add(r);\n            }\n            int n = localLocalArr.Count();\n            for(int j = 1; j \u003c= n; j ++)\n            {\n                int f = Factorial(n - j);\n                int g = (ind + f - 1) / f;\n                localLocalResult.Add(localLocalArr[g - 1]);\n                localLocalArr.RemoveAt(g - 1);\n                ind -= (g - 1) * f; \n            }\n            if(localLocalArr.Count() \u003e 0)\n            {\n                localLocalResult.Add(localLocalArr[0]);\n            }\n            localResult.Add(localLocalResult);\n        }\n        foreach(List \u003cint\u003e u in localResult)\n        {\n            result.Add(u);\n        }\n    }\n    return result;\n}\n```\n\n## Roman and arabic numerals / Римські та арабські числа / Римские и арабские числа\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\nroman_arabic_numerals.rom_arab(p)\nroman_arabic_numerals.arab_rom(s)\n```\n\n`JavaScript`:\n\n```js\nromanArabicNumerals.romArab(p);\nromanArabicNumerals.arabRom(s);\n```\n\n### Files / Файли / Файлы\n\n\u003cins\u003e***Python:***\u003c/ins\u003e *[roman-arabic-numerals.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Roman%20arabic%20numerals/roman-arabic-numerals.py)*\n\n\u003cins\u003e***JavaScript:***\u003c/ins\u003e *[roman-arabic-numerals.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Roman%20arabic%20numerals/roman-arabic-numerals.js)*\n\n\u003cins\u003e***Go:***\u003c/ins\u003e *[roman-arabic-numerals.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Roman%20arabic%20numerals/roman-arabic-numerals.go)*\n\n\n\u003cins\u003e***C++:***\u003c/ins\u003e *[roman-arabic-numerals.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Roman%20arabic%20numerals/roman-arabic-numerals.cpp)*\n\n\n\u003cins\u003e***C#:***\u003c/ins\u003e *[roman-arabic-numerals.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Roman%20arabic%20numerals/roman-arabic-numerals.cs)*\n\n### Code / Код / Код\n\n`Python`:\n\n```python\ndef rom_arab(p):\n    z = 0\n    try:\n        p = str(p).lower()\n        for i in range(0, len(p)):\n            if p[i] == 'i':\n                try:\n                    if p[i+1] == 'v' or p[i+1] == 'x': \n                        z -= 1\n                    else:\n                        z += 1\n                except:\n                    z += 1\n            elif p[i] == 'v':\n                z += 5\n            elif p[i] == 'x':\n                try:\n                    if p[i+1] == 'c' or p[i+1] == 'l': \n                        z -= 10\n                    else:\n                        z += 10\n                except:\n                    z += 10\n            elif p[i] == 'l':\n                z += 50\n            elif p[i] == 'c':\n                try:\n                    if p[i+1] == 'm' or p[i+1] == 'd': \n                        z -= 100\n                    else:\n                        z += 100\n                except:\n                    z += 100\n            elif p[i] == 'd':\n                z += 500\n            elif p[i] == 'm':\n                z += 1000\n            else:\n                return None\n    except:\n        return None\n    return z\n\ndef arab_rom(s):\n    v = \"\"\n    try:\n        s = int(s)\n        while s \u003e 0:\n            if s \u003e= 1000:\n                s -= 1000\n                v += \"M\"\n            elif s \u003e= 900:\n                s -= 900\n                v += \"CM\"\n            elif s \u003e= 500:\n                s -= 500\n                v += \"D\"\n            elif s \u003e= 400:\n                s -= 400\n                v += \"CD\"\n            elif s \u003e= 100:\n                s -= 100\n                v += \"C\"\n            elif s \u003e= 90:\n                s -= 90\n                v += \"XC\"\n            elif s \u003e= 50:\n                s -= 50\n                v += \"L\"\n            elif s \u003e= 40:\n                s -= 40\n                v += \"XL\"\n            elif s \u003e= 10:\n                s -= 10\n                v += \"X\"\n            elif s \u003e= 9:\n                s -= 9 \n                v += \"IX\"\n            elif s \u003e= 5:\n                s -= 5\n                v += \"V\"\n            elif s \u003e= 4:\n                s -= 4\n                v += \"IV\"\n            elif s \u003e= 1:\n                s -= 1\n                v += \"I\"\n    except:\n        return None\n    return v\n```\n\n`JavaScript`:\n\n```js\nfunction romArab(p){\n    let z = 0;\n    try{\n        p = String(p).toLowerCase();\n        for(let i = 0; i \u003c p.length; i ++){\n            if(p[i] == 'i'){\n                try{\n                    if(p[i+1] == 'v' || p[i+1] == 'x'){ \n                        z -= 1;\n                    }\n                    else{\n                        z += 1;\n                    }\n                }\n                catch(e){\n                    z += 1;\n                }\n            }\n            else if(p[i] == 'v'){\n                z += 5;\n            }\n            else if(p[i] == 'x'){\n                try{\n                    if(p[i+1] == 'c' || p[i+1] == 'l'){\n                        z -= 10;\n                    }\n                    else{\n                        z += 10;\n                    }\n                }\n                catch(e){\n                    z += 10;\n                }\n            }\n            else if(p[i] == 'l'){\n                z += 50;\n            }\n            else if(p[i] == 'c'){\n                try{\n                    if(p[i+1] == 'm' || p[i+1] == 'd'){ \n                        z -= 100;\n                    }\n                    else{\n                        z += 100;\n                    }\n                }\n                catch(e){\n                    z += 100;\n                }\n            }\n            else if(p[i] == 'd'){\n                z += 500;\n            }\n            else if(p[i] == 'm'){\n                z += 1000;\n            }\n            else{\n                return NaN;\n            }\n        }\n    }\n    catch(e){\n       return NaN;\n    }\n    return z;\n}\n\nfunction arabRom(s){\n    let v = \"\";\n    try{\n        s = Number(s);\n        if(isNaN(s)){\n            return NaN;\n        }\n        while(s \u003e 0){\n            if(s \u003e= 1000){\n                s -= 1000;\n                v += \"M\";\n            }\n            else if(s \u003e= 900){\n                s -= 900;\n                v += \"CM\";\n            }\n            else if(s \u003e= 500){\n                s -= 500;\n                v += \"D\";\n            }\n            else if(s \u003e= 400){\n                s -= 400;\n                v += \"CD\";\n            }\n            else if(s \u003e= 100){\n                s -= 100;\n                v += \"C\";\n            }\n            else if(s \u003e= 90){\n                s -= 90;\n                v += \"XC\";\n            }\n            else if(s \u003e= 50){\n                s -= 50;\n                v += \"L\";\n            }\n            else if(s \u003e= 40){\n                s -= 40;\n                v += \"XL\";\n            }\n            else if(s \u003e= 10){\n                s -= 10;\n                v += \"X\";\n            }\n            else if(s \u003e= 9){\n                s -= 9;\n                v += \"IX\";\n            }\n            else if(s \u003e= 5){\n                s -= 5;\n                v += \"V\";\n            }\n            else if(s \u003e= 4){\n                s -= 4;\n                v += \"IV\";\n            }\n            else if(s \u003e= 1){\n                s -= 1;\n                v += \"I\";\n            }\n        }\n    }\n    catch(e){\n        return NaN;\n    }\n    return v;\n}\n```\n\n`Go`:\n\n```go\nfunc RomArab(p string) int {\n    z := 0\n    p = strings.ToLower(p)\n    for i := 0; i \u003c len(p); i++ {\n        if p[i] == 'i' {\n            if p[i+1] == 'v' || p[i+1] == 'x' {\n                z--\n            } else {\n                z++\n            }\n        } else if p[i] == 'v' {\n            z += 5\n        } else if p[i] == 'x' {\n            if p[i+1] == 'c' || p[i+1] == 'l' {\n                z -= 10\n            } else {\n                z += 10\n            }\n        } else if p[i] == 'l' {\n            z += 50\n        } else if p[i] == 'c' {\n            if p[i+1] == 'm' || p[i+1] == 'd' {\n                z -= 100\n            } else {\n                z += 100\n            }\n        } else if p[i] == 'd' {\n            z += 500\n        } else if p[i] == 'm' {\n            z += 1000\n        } else {\n            fmt.Println(\"Uncorrect input\")\n            return 0\n        }\n    }\n    return z\n}\n\nfunc ArabRom(s int) string {\n    v := \"\"\n    for s \u003e 0 {\n        if s \u003e= 1000 {\n            s -= 1000\n            v += \"M\"\n        } else if s \u003e= 900 {\n            s -= 900\n            v += \"CM\"\n        } else if s \u003e= 500 {\n            s -= 500\n            v += \"D\"\n        } else if s \u003e= 400 {\n            s -= 400\n            v += \"CD\"\n        } else if s \u003e= 100 {\n            s -= 100\n            v += \"C\"\n        } else if s \u003e= 90 {\n            s -= 90\n            v += \"XC\"\n        } else if s \u003e= 50 {\n            s -= 50\n            v += \"L\"\n        } else if s \u003e= 40 {\n            s -= 40\n            v += \"XL\"\n        } else if s \u003e= 10 {\n            s -= 10\n            v += \"X\"\n        } else if s \u003e= 9 {\n            s -= 9\n            v += \"IX\"\n        } else if s \u003e= 5 {\n            s -= 5\n            v += \"V\"\n        } else if s \u003e= 4 {\n            s -= 4\n            v += \"IV\"\n        } else if s \u003e= 1 {\n            s -= 1\n            v += \"I\"\n        }\n    }\n    return v\n}\n```\n\n`C++`:\n\n```cpp\n#include \u003cstring\u003e\n\nint rom_arab(string p){\n    int z = 0;\n    try{\n        for(int i = 0; i \u003c p.length(); i ++){\n            if(tolower(p[i]) == 'i'){\n                try{\n                    if(tolower(p[i+1]) == 'v' || tolower(p[i+1]) == 'x'){ \n                        z -= 1;\n                    }\n                    else{\n                        z += 1;\n                    }\n                }\n                catch(...){\n                    z += 1;\n                }\n            }\n            else if(tolower(p[i]) == 'v'){\n                z += 5;\n            }\n            else if(tolower(p[i]) == 'x'){\n                try{\n                    if(tolower(p[i+1]) == 'c' || tolower(p[i+1]) == 'l'){\n                        z -= 10;\n                    }\n                    else{\n                        z += 10;\n                    }\n                }\n                catch(...){\n                    z += 10;\n                }\n            }\n            else if(tolower(p[i]) == 'l'){\n                z += 50;\n            }\n            else if(tolower(p[i]) == 'c'){\n                try{\n                    if(tolower(p[i+1]) == 'm' || tolower(p[i+1]) == 'd'){ \n                        z -= 100;\n                    }\n                    else{\n                        z += 100;\n                    }\n                }\n                catch(...){\n                    z += 100;\n                }\n            }\n            else if(tolower(p[i]) == 'd'){\n                z += 500;\n            }\n            else if(tolower(p[i]) == 'm'){\n                z += 1000;\n            }\n            else{\n                cout \u003c\u003c \"Uncorrect input\" \u003c\u003c endl;\n                return 0;\n            }\n        }\n    }\n    catch(...){\n        cout \u003c\u003c \"Uncorrect input\" \u003c\u003c endl;\n        return 0;\n    }\n    return z;\n}\n\nstring arab_rom(int s){\n    string v = \"\";\n    try{\n        while(s \u003e 0){\n            if(s \u003e= 1000){\n                s -= 1000;\n                v += \"M\";\n            }\n            else if(s \u003e= 900){\n                s -= 900;\n                v += \"CM\";\n            }\n            else if(s \u003e= 500){\n                s -= 500;\n                v += \"D\";\n            }\n            else if(s \u003e= 400){\n                s -= 400;\n                v += \"CD\";\n            }\n            else if(s \u003e= 100){\n                s -= 100;\n                v += \"C\";\n            }\n            else if(s \u003e= 90){\n                s -= 90;\n                v += \"XC\";\n            }\n            else if(s \u003e= 50){\n                s -= 50;\n                v += \"L\";\n            }\n            else if(s \u003e= 40){\n                s -= 40;\n                v += \"XL\";\n            }\n            else if(s \u003e= 10){\n                s -= 10;\n                v += \"X\";\n            }\n            else if(s \u003e= 9){\n                s -= 9;\n                v += \"IX\";\n            }\n            else if(s \u003e= 5){\n                s -= 5;\n                v += \"V\";\n            }\n            else if(s \u003e= 4){\n                s -= 4;\n                v += \"IV\";\n            }\n            else if(s \u003e= 1){\n                s -= 1;\n                v += \"I\";\n            }\n        }\n    }\n    catch(...){\n        cout \u003c\u003c \"Uncorrect input\" \u003c\u003c endl;\n        return \"\";\n    }\n    return v;\n}\n```\n\n`C#`:\n\n```cs\nint RomArab(string p)\n{\n    int z = 0;\n    try\n    {\n        for(int i = 0; i \u003c p.Length; i ++)\n        {\n            if(char.ToLower(p[i]) == 'i')\n            {\n                try\n                {\n                    if(char.ToLower(p[i+1]) == 'v' || char.ToLower(p[i+1]) == 'x')\n                    { \n                        z -= 1;\n                    }\n                    else\n                    {\n                        z += 1;\n                    }\n                }\n                catch\n                {\n                    z += 1;\n                }\n            }\n            else if(char.ToLower(p[i]) == 'v')\n            {\n                z += 5;\n            }\n            else if(char.ToLower(p[i]) == 'x')\n            {\n                try\n                {\n                    if(char.ToLower(p[i+1]) == 'c' || char.ToLower(p[i+1]) == 'l')\n                    {\n                        z -= 10;\n                    }\n                    else\n                    {\n                        z += 10;\n                    }\n                }\n                catch\n                {\n                    z += 10;\n                }\n            }\n            else if(char.ToLower(p[i]) == 'l')\n            {\n                z += 50;\n            }\n            else if(char.ToLower(p[i]) == 'c')\n            {\n                try\n                {\n                    if(char.ToLower(p[i+1]) == 'm' || char.ToLower(p[i+1]) == 'd')\n                    { \n                        z -= 100;\n                    }\n                    else\n                    {\n                        z += 100;\n                    }\n                }\n                catch\n                {\n                    z += 100;\n                }\n            }\n            else if(char.ToLower(p[i]) == 'd')\n            {\n                z += 500;\n            }\n            else if(char.ToLower(p[i]) == 'm')\n            {\n                z += 1000;\n            }\n            else\n            {\n                Console.WriteLine(\"Uncorrect input\");\n                return 0;\n            }\n        }\n    }\n    catch\n    {\n        Console.WriteLine(\"Uncorrect input\");\n        return 0;\n    }\n    return z;\n}\n\nstring ArabRom(int s)\n{\n    string v = \"\";\n    try\n    {\n        while(s \u003e 0)\n        {\n            if(s \u003e= 1000)\n            {\n                s -= 1000;\n                v += \"M\";\n            }\n            else if(s \u003e= 900)\n            {\n                s -= 900;\n                v += \"CM\";\n            }\n            else if(s \u003e= 500)\n            {\n                s -= 500;\n                v += \"D\";\n            }\n            else if(s \u003e= 400)\n            {\n                s -= 400;\n                v += \"CD\";\n            }\n            else if(s \u003e= 100)\n            {\n                s -= 100;\n                v += \"C\";\n            }\n            else if(s \u003e= 90)\n            {\n                s -= 90;\n                v += \"XC\";\n            }\n            else if(s \u003e= 50)\n            {\n                s -= 50;\n                v += \"L\";\n            }\n            else if(s \u003e= 40)\n            {\n                s -= 40;\n                v += \"XL\";\n            }\n            else if(s \u003e= 10)\n            {\n                s -= 10;\n                v += \"X\";\n            }\n            else if(s \u003e= 9)\n            {\n                s -= 9;\n                v += \"IX\";\n            }\n            else if(s \u003e= 5)\n            {\n                s -= 5;\n                v += \"V\";\n            }\n            else if(s \u003e= 4)\n            {\n                s -= 4;\n                v += \"IV\";\n            }\n            else if(s \u003e= 1)\n            {\n                s -= 1;\n                v += \"I\";\n            }\n        }\n    }\n    catch\n    {\n        Console.WriteLine(\"Uncorrect input\");\n        return \"\";\n    }\n    return v;\n}\n```\n\n## Arithmetic for big numbers / Арифметика для великих чисел / Арифметика для больших чисел\n\n### Packages / Пакети / Пакеты\n\n`Python`:\n\n```python\narithmetic.addition_big_numbers(a, b)\narithmetic.subtraction_big_numbers(a, b)\narithmetic.multiplication_big_numbers(a, b)\n```\n\n`JavaScript`:\n\n```js\narithmetic.additionBigNumbers(a, b);\narithmetic.subtractionBigNumbers(a, b);\narithmetic.multiplicationBigNumbers(a, b);\n```\n\n### Files / Файли / Файлы\n\n\u003cins\u003e***Python:***\u003c/ins\u003e *[arithmetic.py](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Arithmetic/arithmetic.py)*\n\n\u003cins\u003e***JavaScript:***\u003c/ins\u003e *[arithmetic.js](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Arithmetic/arithmetic.js)*\n\n\u003cins\u003e***Go:***\u003c/ins\u003e *[arithmetic.go](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Arithmetic/arithmetic.go)*\n\n\u003cins\u003e***C++:***\u003c/ins\u003e *[arithmetic.cpp](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Arithmetic/arithmetic.cpp)*\n\n\u003cins\u003e***C#:***\u003c/ins\u003e *[arithmetic.cs](https://github.com/s0urcedev/AdditionalFunctions/blob/main/Arithmetic/arithmetic.cs)*\n\n### Addition / Додавання / Прибавление\n\n`Python`:\n\n```python\ndef addition_big_numbers(a, b):\n    a = str(a)[::-1]\n    b = str(b)[::-1]\n\n    while(len(b) \u003c len(a)):\n        b += '0'\n    while(len(a) \u003c len(b)):\n        a += '0'\n\n    result = ''\n    c = 0\n    for i in range(0, len(a)):\n        local_result = int(a[i]) + int(b[i]) + c\n        c = 0\n        if local_result \u003e 9:\n            local_result -= 10\n            c = 1\n        result += str(local_result)\n    if c == 1:\n        result += '1'\n    return result[::-1]\n```\n\n`JavaScript`:\n\n```js\nfunction additionBigNumbers(a, b){\n    a = String(a).split(\"\").reverse().join(\"\");\n    b = String(b).split(\"\").reverse().join(\"\");\n\n    while(b.length \u003c a.length){\n        b += '0';\n    }\n    while(a.length \u003c b.length){\n        a += '0';\n    }\n\n    let result = '';\n    let c = 0;\n    for(let i = 0; i \u003c a.length; i ++){\n        let localResult = Number(a[i]) + Number(b[i]) + c;\n        c = 0;\n        if(localResult \u003e 9){\n            localResult -= 10;\n            c = 1;\n        }\n        result += String(localResult);\n    }\n    if(c == 1){\n        result += '1';\n    }\n    return result.split(\"\").reverse().join(\"\");\n}\n```\n\n`Go`:\n\n```go\nfunc AdditionBigNumbers(a string, b string) string {\n    for len(b) \u003c len(a) {\n        b = \"0\" + b\n    }\n    for len(a) \u003c len(b) {\n        a = \"0\" + a\n    }\n    result := \"\"\n    c := 0\n    for i := len(a) - 1; i \u003e= 0; i-- {\n        localResult := int(a[i]-48) + int(b[i]-48) + c\n        c = 0\n        if localResult \u003e 9 {\n            localResult -= 10\n            c = 1\n        }\n        result += strconv.Itoa(localResult)\n    }\n    if c == 1 {\n        result += \"1\"\n    }\n    fresult := \"\"\n    for _, s := range result {\n        fresult = string(s) + fresult\n    }\n    return fresult\n}\n```\n\n`C++`:\n\n```cpp\n#include \u003cstring\u003e\n\nstring addition_big_numbers(string a, string b){\n    while(b.length() \u003c a.length()){\n        b = \"0\" + b;\n    }\n    while(a.length() \u003c b.length()){\n        a = \"0\" + a;\n    }\n    string result = \"\";\n    int c = 0;\n    for(int i = a.length() - 1; i \u003e= 0; i --){\n        int local_result = (a[i] - 48) + (b[i] - 48) + c;\n        c = 0;\n        if(local_result \u003e 9){\n            local_result -= 10;\n            c = 1;\n        }\n        result += to_string(local_result);\n    }\n    if(c == 1){\n        result += \"1\";\n    }\n    string fresult = \"\";\n    for(auto s: result){\n        fresult = s + fresult;\n    }\n    return fresult;\n}\n```\n\n`C#`:\n\n```cs \nstring AdditionBigNumbers(string a, string b)\n{\n    while(b.Length \u003c a.Length)\n    {\n        b = \"0\" + b;\n    }\n    while(a.Length \u003c b.Length)\n    {\n        a = \"0\" + a;\n    }\n    string result = \"\";\n    int c = 0;\n    for(int i = a.Length - 1; i \u003e= 0; i --)\n    {\n        int localResult = (a[i] - 48) + (b[i] - 48) + c;\n        c = 0;\n        if(localResult \u003e 9)\n        {\n            localResult -= 10;\n            c = 1;\n        }\n        result += localResult.ToString();\n    }\n    if(c == 1){\n        result += \"1\";\n    }\n    string fresult = \"\";\n    foreach(char s in result)\n    {\n        fresult = s + fresult;\n    }\n    return fresult;\n}\n```\n\n### Subtraction / Віднімання / Вычетание\n\n`Python`:\n\n```python\ndef subtraction_big_numbers(a, b):\n    k = False\n    if int(a) \u003e int(b):\n        a = str(a)[::-1]\n        b = str(b)[::-1]\n    else:\n        k = True\n        swap = str(a)[::-1]\n        a = str(b)[::-1]\n        b = swap\n    while(len(b) \u003c len(a)):\n        b += '0'\n    while(len(a) \u003c len(b)):\n        a += '0'\n\n    result = ''\n    c = 0\n    for i in range(0, len(a)):\n        local_result = int(a[i]) - int(b[i]) - c\n        c = 0\n        if local_result \u003c 0:\n            local_result += 10\n            c = 1\n        result += str(local_result)\n\n    if k:\n        result += '-'\n    while result[-1] == '0':\n        result = result[:-1]\n    return result[::-1]\n```\n\n`JavaScript`:\n\n```js\nfunction subtractionBigNumbers(a, b){\n    let k = false;\n    if(Number(a) \u003e Number(b)){\n        a = String(a).split(\"\").reverse().join(\"\");\n        b = String(b).split(\"\").reverse().join(\"\");\n    }\n    else{\n        k = true;\n        swap = String(a).split(\"\").reverse().join(\"\");\n        a = String(b).split(\"\").reverse().join(\"\");\n        b = swap;\n    }\n\n    while(b.length \u003c a.length){\n        b += '0';\n    }\n    while(a.length \u003c b.length){\n        a += '0';\n    }\n\n    let result = '';\n    let c = 0;\n    for(let i = 0; i \u003c a.length; i ++){\n        let localResult = Number(a[i]) - Number(b[i]) - c;\n        c = 0;\n        if(localResult \u003c 0){\n            localResult += 10;\n            c = 1;\n        }\n        result += String(localResult);\n    }\n    if(k){\n        result += '-'\n    }\n    while(result[result.length - 1] == '0'){\n        result = result.slice(0, result.length - 1);\n    }\n    return result.split(\"\").reverse().join(\"\");\n}\n```\n\n`Go`:\n\n```go\nfunc SubtractionBigNumbers(a string, b string) string {\n    k := false\n    if len(a) \u003c len(b) {\n        a, b = b, a\n        k = true\n    }\n    ai, _ := strconv.Atoi(a)\n    bi, _ := strconv.Atoi(b)\n    if ai \u003c bi {\n        a, b = b, a\n        k = true\n    }\n    for len(b) \u003c len(a) {\n        b = \"0\" + b\n    }\n    for len(a) \u003c len(b) {\n        a = \"0\" + a\n    }\n    result := \"\"\n    c := 0\n    for i := len(a) - 1; i \u003e= 0; i-- {\n        localResult := int(a[i]-48) - int(b[i]-48) - c\n        c = 0\n        if localResult \u003c 0 {\n            localResult += 10\n            c = 1\n        }\n        result += strconv.Itoa(localResult)\n    }\n    if c == 1 {\n        result += \"1\"\n    }\n    for result[len(result)-1] == '0' {\n        result = result[:len(result)-1]\n    }\n    fresult := \"\"\n    for _, s := range result {\n        fresult = string(s) + fresult\n    }\n    if k {\n        fresult = \"-\" + fresult\n    }\n    return fresult\n}\n```\n\n`C++`:\n\n```cpp\n#include \u003cstring\u003e\n#include \u003csstream\u003e\n\nstring subtraction_big_numbers(string a, string b){\n    stringstream ssa;\n    ssa \u003c\u003c a;\n    long long n = 0;\n    ssa \u003e\u003e n;\n    stringstream ssb;\n    ssb \u003c\u003c b;\n    long long m = 0;\n    ssb \u003e\u003e m;\n    bool k = false;\n    if(n \u003c m){\n        k = true;\n        string swap = a;\n        a = b;\n        b = swap;\n    }\n    while(b.length() \u003c a.length()){\n        b = \"0\" + b;\n    }\n    while(a.length() \u003c b.length()){\n        a = \"0\" + a;\n    }\n    string result = \"\";\n    int c = 0;\n    for(int i = a.length() - 1; i \u003e= 0; i --){\n        int local_result = (a[i] - 48) - (b[i] - 48) - c;\n        c = 0;\n        if(local_result \u003c 0){\n            local_result += 10;\n            c = 1;\n        }\n        result += to_string(local_result);\n    }\n    if(c == 1){\n        result += \"1\";\n    }\n    while(result[result.length() - 1] == '0'){\n        result = result.substr(0, result.length() - 1);\n    }\n    string fresult = \"\";\n    for(auto s: result){\n        fresult = s + fresult;\n    }\n    if(k){\n        fresult = '-' + fresult;\n    }\n    return fresult;\n}\n```\n\n`C#`:\n\n```cs\nstring SubtractionBigNumbers(string a, string b)\n{\n    bool k = false;\n    if(Convert.ToInt32(a) \u003c Convert.ToInt32(b))\n    {\n        string swap = a;\n        a = b;\n        b = swap;\n        k = true;\n    }\n    while(b.Length \u003c a.Length)\n    {\n        b = \"0\" + b;\n    }\n    while(a.Length \u003c b.Length)\n    {\n        a = \"0\" + a;\n    }\n    string result = \"\";\n    int c = 0;\n    for(int i = a.Length - 1; i \u003e= 0; i --)\n    {\n        int localResult = (a[i] - 48) - (b[i] - 48) - c;\n        c = 0;\n        if(localResult \u003c 0)\n        {\n            localResult += 10;\n            c = 1;\n        }\n        result += localResult.ToString();\n    }\n    if(c == 1)\n    {\n        result += \"1\";\n    }\n    while(result[result.Length - 1] == '0')\n    {\n        result = result.Substring(0, result.Length - 1);\n    }\n    string fresult = \"\";\n    foreach(char s in result)\n    {\n        fresult = s + fresult;\n    }\n    if(k)\n    {\n        fresult = '-' + fresult;\n    }\n    return fresult; \n}\n```\n\n### Multipl","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs0urcedev%2Fadditionalfunctions","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs0urcedev%2Fadditionalfunctions","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs0urcedev%2Fadditionalfunctions/lists"}