Skip to content

Commit 8c433f9

Browse files
kiskvtrekhleb
andauthoredJan 22, 2022
Update main README.ru-RU, add README.ru-RU for cryptography/caesar-cipher (trekhleb#810)
* Update main README.ru-RU * Add README.ru-RU for cryptography/caesar-cipher Co-authored-by: Oleksii Trekhleb <[email protected]>
1 parent dd3cbe1 commit 8c433f9

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed
 

‎README.ru-RU.md

+20
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,10 @@ _Читать на других языках:_
6060

6161
* **Математика**
6262
* `B` [Битовые манипуляции](src/algorithms/math/bits) — получение/запись/сброс/обновление битов, умножение/деление на 2, сделать отрицательным и т.п.
63+
* `B` [Двоичное число с плавающей запятой](src/algorithms/math/binary-floating-point) - двоичное представление чисел с плавающей запятой
6364
* `B` [Факториал](src/algorithms/math/factorial)
6465
* `B` [Числа Фибоначчи](src/algorithms/math/fibonacci) — классическое решение, решение в замкнутой форме
66+
* `B` [Простые множители](src/algorithms/math/prime-factors) - нахождение простых множителей и их подсчёт с использованием теоремы Харди-Рамануджана
6567
* `B` [Тест простоты](src/algorithms/math/primality-test) (метод пробного деления)
6668
* `B` [Алгоритм Евклида](src/algorithms/math/euclidean-algorithm) — нахождение наибольшего общего делителя (НОД)
6769
* `B` [Наименьшее общее кратное](src/algorithms/math/least-common-multiple) (НОК)
@@ -71,6 +73,9 @@ _Читать на других языках:_
7173
* `B` [Комплексные числа](src/algorithms/math/complex-number) — комплексные числа, базовые операции над ними
7274
* `B` [Радианы и градусы](src/algorithms/math/radian) — конвертирование радианов в градусы и наоборот
7375
* `B` [Быстрое возведение в степень](src/algorithms/math/fast-powering)
76+
* `B` [Схема Горнера](src/algorithms/math/horner-method) - оценка полиномов
77+
* `B` [Матрицы](src/algorithms/math/matrix) - матрицы и основные операции с матрицами (умножение, транспонирование и т.д.)
78+
* `B` [Евклидово расстояние](src/algorithms/math/euclidean-distance) - расстояние между двумя точками/векторами/матрицами
7479
* `A` [Разбиение числа](src/algorithms/math/integer-partition)
7580
* `A` [Квадратный корень](src/algorithms/math/square-root) — метод Ньютона
7681
* `A` [Алгоритм Лю Хуэя](src/algorithms/math/liu-hui) — расчёт числа π с заданной точностью методом вписанных правильных многоугольников
@@ -134,15 +139,27 @@ _Читать на других языках:_
134139
* `A` [Задача коммивояжёра](src/algorithms/graph/travelling-salesman) — кратчайший маршрут, проходящий через указанные города с последующим возвратом в исходный город
135140
* **Криптография**
136141
* `B` [Полиноминальный хэш](src/algorithms/cryptography/polynomial-hash) — функция кольцевого хэша, основанная на полиноме
142+
* `B` [Шифр ​​ограждения рельсов](src/algorithms/cryptography/rail-fence-cipher) - алгоритм транспозиционного шифра для кодирования сообщений
143+
* `B` [Шифр Цезаря](src/algorithms/cryptography/caesar-cipher) - простой подстановочный шифр
144+
* `B` [Шифр Хилла](src/algorithms/cryptography/hill-cipher) - подстановочный шифр на основе линейной алгебры
137145
* **Машинное обучение**
138146
* `B` [Нано-нейрон](https://github.com/trekhleb/nano-neuron) — 7 простых JavaScript функций, отображающих способности машины к обучению (прямое и обратное распространение)
147+
* `B` [k-NN](src/algorithms/ml/knn) - алгоритм классификации k-ближайших соседей
148+
* `B` [k-Means](src/algorithms/ml/k-means) - алгоритм кластеризации по методу k-средних
149+
* **Обработка изображений**
150+
* `B` [Резьба по шву](src/algorithms/image-processing/seam-carving) - алгоритм изменения размера изображения с учетом содержания
151+
* **Статистика**
152+
* `B` [Взвешенная случайность](src/algorithms/statistics/weighted-random) - выбор случайного элемента из списка на основе веса элементов
153+
* **Эволюционные алгоритмы**
154+
* `A` [Генетический алгоритм](https://github.com/trekhleb/self-parking-car-evolution) - пример применения генетического алгоритма для обучения самопаркующихся автомобилей
139155
* **Прочие алгоритмы**
140156
* `B` [Ханойская башня](src/algorithms/uncategorized/hanoi-tower)
141157
* `B` [Поворот квадратной матрицы](src/algorithms/uncategorized/square-matrix-rotation) — используется дополнительная память
142158
* `B` [Прыжки](src/algorithms/uncategorized/jump-game) — на основе бэктрекинга, динамического программирования (сверху-вниз + снизу-вверх) и жадных алгоритмов
143159
* `B` [Поиск уникальных путей](src/algorithms/uncategorized/unique-paths) — на основе бэктрекинга, динамического программирования и треугольника Паскаля
144160
* `B` [Подсчёт дождевой воды](src/algorithms/uncategorized/rain-terraces) — на основе перебора и динамического программирования
145161
* `B` [Задача о рекурсивной лестнице](src/algorithms/uncategorized/recursive-staircase) — подсчёт количества путей, по которым можно достичь верха лестницы (4 способа)
162+
* `B` [Лучшее время для покупки и продажи акций](src/algorithms/uncategorized/best-time-to-buy-sell-stocks) - примеры "разделяй и властвуй" и в один проход
146163
* `A` [Задача об N ферзях](src/algorithms/uncategorized/n-queens)
147164
* `A` [Маршрут коня](src/algorithms/uncategorized/knight-tour)
148165

@@ -172,8 +189,10 @@ _Читать на других языках:_
172189
* `B` [Быстрая сортировка](src/algorithms/sorting/quick-sort)
173190
* `B` [Поиск в глубину (дерево)](src/algorithms/tree/depth-first-search)
174191
* `B` [Поиск в глубину (граф)](src/algorithms/graph/depth-first-search)
192+
* `B` [Матрицы](src/algorithms/math/matrix) - генерирование и обход матриц различной формы
175193
* `B` [Прыжки](src/algorithms/uncategorized/jump-game)
176194
* `B` [Быстрое возведение в степень](src/algorithms/math/fast-powering)
195+
* `B` [Лучшее время для покупки и продажи акций](src/algorithms/uncategorized/best-time-to-buy-sell-stocks) - примеры "разделяй и властвуй" и в один проход
177196
* `A` [Перестановки](src/algorithms/sets/permutations) (с повторениями и без повторений)
178197
* `A` [Сочетания](src/algorithms/sets/combinations) (с повторениями и без повторений)
179198
* **Динамическое программирование** — решение общей задачи конструируется на основе ранее найденных решений подзадач
@@ -182,6 +201,7 @@ _Читать на других языках:_
182201
* `B` [Поиск уникальных путей](src/algorithms/uncategorized/unique-paths)
183202
* `B` [Подсчёт дождевой воды](src/algorithms/uncategorized/rain-terraces)
184203
* `B` [Задача о рекурсивной лестнице](src/algorithms/uncategorized/recursive-staircase) — подсчёт количества путей, по которым можно достичь верха лестницы
204+
* `B` [Резьба по шву](src/algorithms/image-processing/seam-carving) - алгоритм изменения размера изображения с учетом содержания
185205
* `A` [Расстояние Левенштейна](src/algorithms/string/levenshtein-distance) — метрика, измеряющая разность между двумя последовательностями
186206
* `A` [Наибольшая общая подпоследовательность](src/algorithms/sets/longest-common-subsequence)
187207
* `A` [Наибольшая общая подстрока](src/algorithms/string/longest-common-substring)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Алгоритм шифра Цезаря
2+
3+
В криптографии **шифр Цезаря**, также известный как **шифр сдвига**, **код Цезаря** или **сдвиг Цезаря**, является одним из самых простых и широко известных методов шифрования. Это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на `3`, `D` была бы заменена на `A`, `E` станет `B`, и так далее. Метод назван в честь Юлия Цезаря, который использовал его в своей личной переписке.
4+
5+
![Алгоритм шифра Цезаря](https://upload.wikimedia.org/wikipedia/commons/4/4a/Caesar_cipher_left_shift_of_3.svg)
6+
7+
## Пример
8+
Это преобразование можно представить как выравнивание двух алфавитов; алфавит шифра - это обычный алфавит, повёрнутый влево или вправо на некоторое количество позиций. Например, здесь приведен шифр Цезаря, использующий поворот влево на три позиции, что эквивалентно сдвигу вправо на 23 (параметр сдвига используется в качестве ключа):
9+
10+
```text
11+
Обычный: ABCDEFGHIJKLMNOPQRSTUVWXYZ
12+
Шифрованный: XYZABCDEFGHIJKLMNOPQRSTUVW
13+
```
14+
15+
При шифровании человек просматривает каждую букву сообщения в "открытой" строке и записывает соответствующую букву в "шифрованной" строке.
16+
17+
```text
18+
Обычный текст: THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG
19+
Шифрованный текст: QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD
20+
```
21+
22+
## Сложность
23+
24+
- Время: `O(|n|)`
25+
- Пространство: `O(|n|)`
26+
27+
## Ссылки
28+
29+
- [Шифр Цезаря на Wikipedia](https://ru.wikipedia.org/wiki/Шифр_Цезаря)

0 commit comments

Comments
 (0)
Please sign in to comment.