Ruby даёт вам Array, Hash и Set, но ни кучи, ни очереди с приоритетом, ни связного списка, ни дерева. На этом пути вы пишете каждую недостающую структуру на Ruby, где обход укладывается в один блок each, затем с их помощью сортируете, применяете рекурсию и обходите графы, а завершаете задачами с собеседований, проверяемыми тестами. Бесплатно, в браузере, с сертификатом за большинство курсов.
Каждый шаг состоит из уже существующих курсов Coddy, и каждая кнопка «Начать» открывает их на Ruby. Три курса, которых пока нет на Ruby, перечислены после шагов.
1
Шаг 1
Серия по структурам данных, часть первая
Начать этот шагНачатьСтек, очередь, двоичное дерево, хеш-таблица и связный список: каждую структуру вы пишете на Ruby с нуля, а затем применяете для решения задач. После этого шага Array в роли стека или очереди и Hash в роли таблицы поиска становятся решениями, которые вы можете объяснить, а не привычками.Начать
Начать этот шагНачатьДвусвязный список, кучи и очереди с приоритетом, префиксные деревья, графы и самобалансирующееся АВЛ-дерево: всё, что сверх Array, Hash и Set Ruby оставляет вам. Куча, которую вы напишете здесь, и станет той очередью с приоритетом, которая нужна на шаге с графами.Начать
Начать этот шагНачатьПузырьковая, выбором, вставками, слиянием, быстрая, пирамидальная, подсчётом и поразрядная сортировки: вы пишете их на Ruby и наблюдаете в визуализаторе. Array#sort не обещает устойчивости; после этого шага вы знаете, какие из восьми сортировок могли бы такое обещание дать.Начать
Начать этот шагНачатьЗадачи на рекурсию на Ruby. Вышедшая из-под контроля рекурсия выбрасывает SystemStackError (stack level too deep), а хвостовые вызовы Ruby по умолчанию не оптимизирует, так что за глубиной стоит следить даже в таком снисходительном языке. Динамическое программирование и битовые операции перечислены после шагов, так как они преподаются на Python и C++.НачатьСвоя страница15 уроков15 задачи
5
Шаг 5
Алгоритмы на графах
Начать этот шагНачатьПоиск в ширину и в глубину, Дейкстра, Беллман-Форд, топологическая сортировка, Крускал и Прим на Ruby, поверх графа, который вы построили на втором шаге. В Ruby нет очереди с приоритетом, поэтому для алгоритма Дейкстры нужна именно куча со второго шага.Начать
Начать этот шагНачатьДесять наборов задач с собеседований и два банка задач по программированию на Ruby с проверкой по тестам: незнакомые задачи, решение без туториалов, с блоками и хешами, стоимость которых вы теперь знаете.Начать
Всё, что вам нужно, чтобы научиться программировать
Учитесь на практике
Пишите реальный код, работайте с базами данных, создавайте сайты и осваивайте ИИ-промпты. Наши интерактивные уроки охватывают все навыки, необходимые современным разработчикам.
playground.js
Редактор кода
1const greeting ="Hello, Coddy!"
2function sayHi(name) {
3return greeting +" "+ name
4}
5
Тест №1
Тест №2
Тест №3
Ввод
"Alex"
Вывод
"Hello, Coddy! Alex"
Создайте свою серию
Будьте последовательны и наблюдайте за своим прогрессом! Отслеживайте ежедневную привычку программирования, защищайте свою серию с помощью дней заморозки и получайте награды за каждый день.
12 дней подряд
Возвращайтесь завтра, чтобы сохранить серию!
January 2026
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
21
22
23
24
25
26
27
28
29
30
Всё или ничего
День 5 из 7
Заморозка серии
2 left
Код где угодно
Возьмите свое путешествие по программированию с собой! Без настройки, без загрузок: просто откройте и начните программировать. Доступно на iOS, Android и Web с рейтингом 4.9 звезд.
Соревнуйтесь в глобальных рейтингах, приглашайте друзей, чтобы получать награды, и празднуйте успехи друг друга. Программировать веселее с друзьями!
Лига ПретендентовТоп 7 продвигаются
1
Alex7+ Days
2840
2
Jordan7+ Days
2650
3
Sam7+ Days
2420
4
Casey
2180
5
Morgan7+ Days
1950
Зона продвижения
Учитесь как угодно
Читайте, слушайте, проверяйте себя, спрашивайте у ИИ или ищите то, что уже изучили. Каждый урок подстраивается под вас.
Введение в переменные
Аудио
Переменная - это именованный контейнер, который хранит значение для последующего использования.
В Python вы создаёте её, написав имя, знак равенства и значение, которое нужно сохранить.
Значение может меняться. Переприсваивание просто направляет имя на новое значение.
1xSarah
Ваш сертификат
Получайте сертификаты за каждый завершенный курс. Добавьте их в свой профиль LinkedIn и резюме, чтобы продемонстрировать работодателям свои навыки программирования.
Структуры, которых нет в Ruby. Array служит одновременно стеком и очередью, Hash представляет собой хеш-таблицу, которая сохраняет порядок вставки, а Set есть в стандартной библиотеке; кроме них, нет ни кучи, ни очереди с приоритетом, ни связного списка, ни дерева. Когда задаче на собеседовании по Ruby нужна одна из этих структур, от вас ждут, что вы её напишете, и на этом пути вы это делаете.
Короткий код, читаемые алгоритмы. Блоки и Enumerable (each, map, select, reduce) укладывают обход в одну-две строки, поэтому поиск в ширину или слияние читаются почти как псевдокод. Только помните, что каждый из этих вызовов представляет собой цикл со своей стоимостью, а считать её и учит этот путь.
Почти весь путь на Ruby. Все структуры данных, сортировки, алгоритмы на графах, задачи на рекурсию и наборы задач с собеседований преподаются на Ruby. Три курса преподаются на других языках и перечислены после шагов, у каждого своя ссылка: динамическое программирование и серия по интервью на Python (Python), а также битовые операции (C++). Битовые операции легко читать с позиции Ruby: операторы там те же, а целые числа никогда не переполняются.
Проверка как на собеседовании. Каждый урок заканчивается задачей на Ruby с автопроверкой по тестам, а когда решение не проходит, Bugsy читает ваш код и подталкивает к исправлению, не выдавая ответ. Бесплатный сертификат за большинство курсов, каждый с проверкой по собственной ссылке.
Частые вопросы о DSA на Ruby
Подходит ли Ruby для структур данных и алгоритмов?
Да, для обучения и для собеседований в компаниях, которые пишут на Rails: код такой же короткий, как на Python, а благодаря блокам обходы читаются как сам алгоритм. Стоит знать о двух слабых местах. В стандартной библиотеке нет кучи, очереди с приоритетом, связного списка и дерева, так что их вы пишете сами; а Array#sort не обещает устойчивости, поэтому, когда равные элементы должны сохранить порядок, сортируйте по паре: sort_by.with_index { |x, i| [x, i] }.
Какие классы Ruby каким структурам данных соответствуют?
Array представляет собой динамический массив, который служит стеком (push, pop) и очередью (push, shift); Hash является хеш-таблицей, которая помнит порядок вставки; а Set из стандартной библиотеки представляет собой множество на основе хеш-таблицы. Вот и весь список. Кучи, очереди с приоритетом, связного списка, дерева, префиксного дерева и графа нет, так что их вы пишете сами, на первом и втором шагах.
Как написать очередь с приоритетом на Ruby?
В Ruby её так и не добавили, поэтому честных ответов три: сортировать массив после каждой вставки, O(n log n) на добавление; поддерживать его отсортированным с помощью bsearch_index и insert, O(n) на добавление; или написать двоичную кучу на Array, O(log n) и на добавление, и на извлечение. Именно третий вариант ждёт интервьюер, и его вы пишете на втором шаге.
Почему порядок вставки в Hash Ruby важен для алгоритмов?
Потому что он превращает некоторые классические конструкции в несколько строк. LRU-кэш, любимая задача собеседований, представляет собой Hash, в котором чтение удаляет ключ и вставляет его заново, чтобы переместить в конец, а вытеснение выполняет shift, который удаляет самую старую запись. В большинстве языков для этого нужны хеш-таблица и двусвязный список, то есть структуры, которые вы пишете на первом и втором шагах, так что вы сможете объяснить, что Ruby делает за вас.
Какие курсы этого пути не преподаются на Ruby?
Три: динамическое программирование и серия по интервью на Python преподаются на Python, а битовые операции на C++. Они перечислены после шагов, каждый со ссылкой, которая открывает курс на его собственном языке. Таблицей мемоизации в Ruby может служить Hash с блоком по умолчанию, как в Hash.new { |h, n| h[n] = n < 2 ? n : h[n - 1] + h[n - 2] }, а n[i] напрямую читает бит i целого числа там, где в C++ пишут (n >> i) & 1.
Нужно ли знать Ruby, прежде чем начинать этот путь?
Как минимум методы, блоки, массивы, хеши и классы. Если это для вас новое, курс Ruby от Coddy сначала бесплатно доведёт вас до этого уровня, а этот путь начинается там, где он заканчивается.
Будет ли сертификат за путь Структуры и алгоритмы?
Да. Пройдите все шаги и получите один бесплатный сертификат за весь путь Структуры и алгоритмы. В нём перечислены все курсы, пройденные по пути, а также ссылки на сертификат каждого курса, чтобы любой мог проверить каждый указанный навык. Его можно добавить в профиль LinkedIn. Это сертификат о завершении от Coddy, а не аккредитованная квалификация.
Другие пути обучения
Те же курсы, выстроенные под другую роль. Прогресс сохраняется: курс, пройденный на одном пути, засчитывается на каждом пути, куда он входит.