mirror of
https://github.com/krahets/hello-algo.git
synced 2026-07-15 08:26:06 +00:00
Add ru version (#1865)
* Add Russian docs site baseline * Add Russian localized codebase * Polish Russian code wording * Update ru code translation. * Update code translation and chapter covers. * Fix pythontutor extraction. * Add README and landing page. * placeholder of profiles * Use figures of English version * Remove chapter paperbook
This commit is contained in:
Binary file not shown.
|
After Width: | Height: | Size: 93 KiB |
@@ -0,0 +1,47 @@
|
||||
# Присоединяйтесь к созданию книги
|
||||
|
||||
Возможности автора ограничены, поэтому в книге неизбежно могут встречаться упущения и ошибки. Просим отнестись к этому с пониманием. Если вы заметите опечатки, неработающие ссылки, пропуски в содержании, двусмысленные формулировки, неясные объяснения или неудачную структуру изложения, пожалуйста, помогите нам это исправить, чтобы читатели получили более качественный учебный ресурс.
|
||||
|
||||
GitHub ID всех [участников](https://github.com/krahets/hello-algo/graphs/contributors) будут указаны на главных страницах репозитория книги, веб-версии и PDF-версии в знак благодарности за их бескорыстный вклад в сообщество открытого исходного кода.
|
||||
|
||||
!!! success "Сила открытого исходного кода"
|
||||
|
||||
Интервал между двумя тиражами бумажной книги обычно довольно велик, поэтому обновлять содержание очень неудобно.
|
||||
|
||||
В этой же открытой книге цикл обновления содержания сокращается до нескольких дней, а иногда даже до нескольких часов.
|
||||
|
||||
### Небольшие правки содержания
|
||||
|
||||
Как показано на рисунке ниже, в правом верхнем углу каждой страницы есть "значок редактирования". Вы можете изменить текст или код следующим образом.
|
||||
|
||||
1. Нажмите на "значок редактирования". Если появится сообщение "You need to fork this repository", согласитесь с этим действием.
|
||||
2. Измените содержимое исходного Markdown-файла, проверьте корректность правок и постарайтесь сохранить единый стиль оформления.
|
||||
3. Внизу страницы заполните описание изменений, затем нажмите кнопку "Propose file change". После перехода на следующую страницу нажмите кнопку "Create pull request", чтобы создать pull request.
|
||||
|
||||

|
||||
|
||||
Изображения нельзя изменить напрямую, поэтому проблему с ними нужно описывать через новый [Issue](https://github.com/krahets/hello-algo/issues) или комментарий. Мы постараемся как можно быстрее перерисовать и заменить изображение.
|
||||
|
||||
### Создание содержания
|
||||
|
||||
Если вам интересно участвовать в этом проекте с открытым исходным кодом, например переводить код на другие языки программирования или расширять содержание статей, то следует придерживаться следующего рабочего процесса Pull Request.
|
||||
|
||||
1. Войдите в GitHub и сделайте Fork [репозитория книги](https://github.com/krahets/hello-algo) в свой личный аккаунт.
|
||||
2. Перейдите на страницу своего Fork-репозитория и с помощью команды `git clone` клонируйте репозиторий локально.
|
||||
3. Создавайте и редактируйте содержание локально, затем проведите полное тестирование и проверьте корректность кода.
|
||||
4. Сделайте Commit для локальных изменений, после чего выполните Push в удаленный репозиторий.
|
||||
5. Обновите страницу репозитория и нажмите кнопку "Create pull request", чтобы отправить pull request.
|
||||
|
||||
### Развертывание Docker
|
||||
|
||||
В корневом каталоге `hello-algo` выполните следующий Docker-скрипт, после чего проект будет доступен по адресу `http://localhost:8000`:
|
||||
|
||||
```shell
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Удалить развертывание можно следующей командой:
|
||||
|
||||
```shell
|
||||
docker-compose down
|
||||
```
|
||||
@@ -0,0 +1,3 @@
|
||||
# Приложение
|
||||
|
||||

|
||||
Binary file not shown.
|
After Width: | Height: | Size: 123 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 103 KiB |
@@ -0,0 +1,68 @@
|
||||
# Установка среды программирования
|
||||
|
||||
## Установка IDE
|
||||
|
||||
В качестве локальной интегрированной среды разработки (IDE) рекомендуется использовать открытую и легковесную VS Code. Перейдите на [официальный сайт VS Code](https://code.visualstudio.com/), выберите версию для своей операционной системы и установите ее.
|
||||
|
||||

|
||||
|
||||
VS Code обладает мощной экосистемой расширений и поддерживает запуск и отладку большинства языков программирования. Например, после установки расширения "Python Extension Pack" можно отлаживать код на Python. Процесс установки показан на рисунке ниже.
|
||||
|
||||

|
||||
|
||||
## Установка языковой среды
|
||||
|
||||
### Среда Python
|
||||
|
||||
1. Загрузите и установите [Miniconda3](https://docs.conda.io/en/latest/miniconda.html), требуется Python 3.10 или более новая версия.
|
||||
2. В магазине расширений VS Code найдите `python` и установите Python Extension Pack.
|
||||
3. (Необязательно) Введите в командной строке `pip install black`, чтобы установить инструмент форматирования кода.
|
||||
|
||||
### Среда C/C++
|
||||
|
||||
1. В Windows требуется установить [MinGW](https://sourceforge.net/projects/mingw-w64/files/) ([руководство по настройке](https://blog.csdn.net/qq_33698226/article/details/129031241)); в macOS Clang уже установлен по умолчанию.
|
||||
2. В магазине расширений VS Code найдите `c++` и установите C/C++ Extension Pack.
|
||||
3. (Необязательно) Откройте страницу Settings, найдите параметр форматирования `Clang_format_fallback Style` и задайте значение `{ BasedOnStyle: Microsoft, BreakBeforeBraces: Attach }`.
|
||||
|
||||
### Среда Java
|
||||
|
||||
1. Загрузите и установите [OpenJDK](https://jdk.java.net/18/) (требуемая версия: > JDK 9).
|
||||
2. В магазине расширений VS Code найдите `java` и установите Extension Pack for Java.
|
||||
|
||||
### Среда C#
|
||||
|
||||
1. Загрузите и установите [.Net 8.0](https://dotnet.microsoft.com/en-us/download).
|
||||
2. В магазине расширений VS Code найдите `C# Dev Kit` и установите C# Dev Kit ([руководство по настройке](https://code.visualstudio.com/docs/csharp/get-started)).
|
||||
3. Также можно использовать Visual Studio ([руководство по установке](https://learn.microsoft.com/zh-cn/visualstudio/install/install-visual-studio?view=vs-2022)).
|
||||
|
||||
### Среда Go
|
||||
|
||||
1. Загрузите и установите [go](https://go.dev/dl/).
|
||||
2. В магазине расширений VS Code найдите `go` и установите Go.
|
||||
3. Нажмите `Ctrl + Shift + P`, чтобы открыть командную палитру, введите `go`, выберите `Go: Install/Update Tools`, отметьте все инструменты и установите их.
|
||||
|
||||
### Среда Swift
|
||||
|
||||
1. Загрузите и установите [Swift](https://www.swift.org/download/).
|
||||
2. В магазине расширений VS Code найдите `swift` и установите [Swift for Visual Studio Code](https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang).
|
||||
|
||||
### Среда JavaScript
|
||||
|
||||
1. Загрузите и установите [Node.js](https://nodejs.org/en/).
|
||||
2. (Необязательно) В магазине расширений VS Code найдите `Prettier` и установите инструмент форматирования кода.
|
||||
|
||||
### Среда TypeScript
|
||||
|
||||
1. Выполните те же шаги, что и для среды JavaScript.
|
||||
2. Установите [TypeScript Execute (tsx)](https://github.com/privatenumber/tsx?tab=readme-ov-file#global-installation).
|
||||
3. В магазине расширений VS Code найдите `typescript` и установите [Pretty TypeScript Errors](https://marketplace.visualstudio.com/items?itemName=yoavbls.pretty-ts-errors).
|
||||
|
||||
### Среда Dart
|
||||
|
||||
1. Загрузите и установите [Dart](https://dart.dev/get-dart).
|
||||
2. В магазине расширений VS Code найдите `dart` и установите [Dart](https://marketplace.visualstudio.com/items?itemName=Dart-Code.dart-code).
|
||||
|
||||
### Среда Rust
|
||||
|
||||
1. Загрузите и установите [Rust](https://www.rust-lang.org/tools/install).
|
||||
2. В магазине расширений VS Code найдите `rust` и установите [rust-analyzer](https://marketplace.visualstudio.com/items?itemName=rust-lang.rust-analyzer).
|
||||
@@ -0,0 +1,137 @@
|
||||
# Глоссарий
|
||||
|
||||
В таблице ниже перечислены важные термины, встречающиеся в книге. Обратите внимание на следующие моменты.
|
||||
|
||||
- Рекомендуем запомнить английские названия терминов, чтобы легче читать англоязычную литературу.
|
||||
- В русской версии третий столбец дублирует основной перевод, чтобы сохранить единый формат таблицы.
|
||||
|
||||
<p align="center"> Таблица <id> Важные термины по структурам данных и алгоритмам </p>
|
||||
|
||||
| English | Русский | Русский |
|
||||
| ------------------------------ | ------------------------------ | ------------------------------ |
|
||||
| algorithm | алгоритм | алгоритм |
|
||||
| data structure | структура данных | структура данных |
|
||||
| code | код | код |
|
||||
| file | файл | файл |
|
||||
| function | функция | функция |
|
||||
| method | метод | метод |
|
||||
| variable | переменная | переменная |
|
||||
| asymptotic complexity analysis | асимптотический анализ сложности | асимптотический анализ сложности |
|
||||
| time complexity | временная сложность | временная сложность |
|
||||
| space complexity | пространственная сложность | пространственная сложность |
|
||||
| loop | цикл | цикл |
|
||||
| iteration | итерация | итерация |
|
||||
| recursion | рекурсия | рекурсия |
|
||||
| tail recursion | хвостовая рекурсия | хвостовая рекурсия |
|
||||
| recursion tree | дерево рекурсии | дерево рекурсии |
|
||||
| big-$O$ notation | нотация big-$O$ | нотация big-$O$ |
|
||||
| asymptotic upper bound | асимптотическая верхняя граница | асимптотическая верхняя граница |
|
||||
| sign-magnitude | прямой код | прямой код |
|
||||
| 1’s complement | обратный код | обратный код |
|
||||
| 2’s complement | дополнительный код | дополнительный код |
|
||||
| array | массив | массив |
|
||||
| index | индекс | индекс |
|
||||
| linked list | связный список | связный список |
|
||||
| linked list node, list node | узел связного списка | узел связного списка |
|
||||
| head node | головной узел | головной узел |
|
||||
| tail node | хвостовой узел | хвостовой узел |
|
||||
| list | список | список |
|
||||
| dynamic array | динамический массив | динамический массив |
|
||||
| hard disk | жесткий диск | жесткий диск |
|
||||
| random-access memory (RAM) | оперативная память | оперативная память |
|
||||
| cache memory | кеш-память | кеш-память |
|
||||
| cache miss | промах кеша | промах кеша |
|
||||
| cache hit rate | коэффициент попадания в кеш | коэффициент попадания в кеш |
|
||||
| stack | стек | стек |
|
||||
| top of the stack | вершина стека | вершина стека |
|
||||
| bottom of the stack | основание стека | основание стека |
|
||||
| queue | очередь | очередь |
|
||||
| double-ended queue | двусторонняя очередь | двусторонняя очередь |
|
||||
| front of the queue | голова очереди | голова очереди |
|
||||
| rear of the queue | хвост очереди | хвост очереди |
|
||||
| hash table | хеш-таблица | хеш-таблица |
|
||||
| hash set | хеш-набор | хеш-набор |
|
||||
| bucket | корзина | корзина |
|
||||
| hash function | хеш-функция | хеш-функция |
|
||||
| hash collision | хеш-коллизия | хеш-коллизия |
|
||||
| load factor | коэффициент заполнения | коэффициент заполнения |
|
||||
| separate chaining | цепная адресация | цепная адресация |
|
||||
| open addressing | открытая адресация | открытая адресация |
|
||||
| linear probing | линейное зондирование | линейное зондирование |
|
||||
| lazy deletion | ленивое удаление | ленивое удаление |
|
||||
| binary tree | двоичное дерево | двоичное дерево |
|
||||
| tree node | узел дерева | узел дерева |
|
||||
| left-child node | левый дочерний узел | левый дочерний узел |
|
||||
| right-child node | правый дочерний узел | правый дочерний узел |
|
||||
| parent node | родительский узел | родительский узел |
|
||||
| left subtree | левое поддерево | левое поддерево |
|
||||
| right subtree | правое поддерево | правое поддерево |
|
||||
| root node | корневой узел | корневой узел |
|
||||
| leaf node | листовой узел | листовой узел |
|
||||
| edge | ребро | ребро |
|
||||
| level | уровень | уровень |
|
||||
| degree | степень | степень |
|
||||
| height | высота | высота |
|
||||
| depth | глубина | глубина |
|
||||
| perfect binary tree | идеальное двоичное дерево | идеальное двоичное дерево |
|
||||
| complete binary tree | совершенное двоичное дерево | совершенное двоичное дерево |
|
||||
| full binary tree | полное двоичное дерево | полное двоичное дерево |
|
||||
| balanced binary tree | сбалансированное двоичное дерево | сбалансированное двоичное дерево |
|
||||
| binary search tree | двоичное дерево поиска | двоичное дерево поиска |
|
||||
| AVL tree | АВЛ-дерево | АВЛ-дерево |
|
||||
| red-black tree | красно-черное дерево | красно-черное дерево |
|
||||
| level-order traversal | обход по уровням | обход по уровням |
|
||||
| breadth-first traversal | обход в ширину | обход в ширину |
|
||||
| depth-first traversal | обход в глубину | обход в глубину |
|
||||
| binary search tree | двоичное дерево поиска | двоичное дерево поиска |
|
||||
| balanced binary search tree | сбалансированное двоичное дерево поиска | сбалансированное двоичное дерево поиска |
|
||||
| balance factor | фактор баланса | фактор баланса |
|
||||
| heap | куча | куча |
|
||||
| max heap | максимальная куча | максимальная куча |
|
||||
| min heap | минимальная куча | минимальная куча |
|
||||
| priority queue | приоритетная очередь | приоритетная очередь |
|
||||
| heapify | упорядочивание кучи | упорядочивание кучи |
|
||||
| top-$k$ problem | поиск $k$ наибольших элементов | поиск $k$ наибольших элементов |
|
||||
| graph | граф | граф |
|
||||
| vertex | вершина | вершина |
|
||||
| undirected graph | неориентированный граф | неориентированный граф |
|
||||
| directed graph | ориентированный граф | ориентированный граф |
|
||||
| connected graph | связный граф | связный граф |
|
||||
| disconnected graph | несвязный граф | несвязный граф |
|
||||
| weighted graph | взвешенный граф | взвешенный граф |
|
||||
| adjacency | смежность | смежность |
|
||||
| path | путь | путь |
|
||||
| in-degree | входящая степень | входящая степень |
|
||||
| out-degree | исходящая степень | исходящая степень |
|
||||
| adjacency matrix | матрица смежности | матрица смежности |
|
||||
| adjacency list | список смежности | список смежности |
|
||||
| breadth-first search | поиск в ширину | поиск в ширину |
|
||||
| depth-first search | поиск в глубину | поиск в глубину |
|
||||
| binary search | двоичный поиск | двоичный поиск |
|
||||
| searching algorithm | алгоритм поиска | алгоритм поиска |
|
||||
| sorting algorithm | алгоритм сортировки | алгоритм сортировки |
|
||||
| selection sort | сортировка выбором | сортировка выбором |
|
||||
| bubble sort | сортировка пузырьком | сортировка пузырьком |
|
||||
| insertion sort | сортировка вставкой | сортировка вставкой |
|
||||
| quick sort | быстрая сортировка | быстрая сортировка |
|
||||
| merge sort | сортировка слиянием | сортировка слиянием |
|
||||
| heap sort | пирамидальная сортировка | пирамидальная сортировка |
|
||||
| bucket sort | блочная сортировка | блочная сортировка |
|
||||
| counting sort | сортировка подсчетом | сортировка подсчетом |
|
||||
| radix sort | поразрядная сортировка | поразрядная сортировка |
|
||||
| divide and conquer | разделяй и властвуй | разделяй и властвуй |
|
||||
| hanota problem | задача о Ханойской башне | задача о Ханойской башне |
|
||||
| backtracking algorithm | алгоритм поиска с возвратом | алгоритм поиска с возвратом |
|
||||
| constraint | ограничение | ограничение |
|
||||
| solution | решение | решение |
|
||||
| state | состояние | состояние |
|
||||
| pruning | отсечение | отсечение |
|
||||
| permutations problem | задача о перестановках | задача о перестановках |
|
||||
| subset-sum problem | задача о сумме подмножеств | задача о сумме подмножеств |
|
||||
| $n$-queens problem | задача о $n$ ферзях | задача о $n$ ферзях |
|
||||
| dynamic programming | динамическое программирование | динамическое программирование |
|
||||
| initial state | начальное состояние | начальное состояние |
|
||||
| state-transition equation | уравнение перехода состояния | уравнение перехода состояния |
|
||||
| knapsack problem | задача о рюкзаке | задача о рюкзаке |
|
||||
| edit distance problem | задача о расстоянии редактирования | задача о расстоянии редактирования |
|
||||
| greedy algorithm | жадный алгоритм | жадный алгоритм |
|
||||
Reference in New Issue
Block a user