Skip to content

🥛🥛 21 Project Algo branch // This project sorts data on a stack, with a limited set of instructions, using the lowest possible number of actions.

Notifications You must be signed in to change notification settings

eldaroid/push_swap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Push_swap

Обзор проекта

alt text

push_swap - это второй алгоритмический проект Школы 21, состоящий из 2-ух программ: checker и push_swap. Главная цель - сортировка массива с помощью 2-ух стеков за наименьшее количество определенных команд. Написан на языке C с использование собственной библиотеки libft с небольшими дополнениями. Подробнее: push_swap

❓ Какие команды можно использовать

  • sa: меняет местами 2 элемента на вершине стека a (в случае, когда в стеке 1 элемент, ничего не делать)
  • sb: меняет местами 2 элемента на вершине стека b (в случае, когда в стеке 1 элемент, ничего не делать)
  • ss: одновременно выполняются sa и sb
  • pa: перемещает элемент, находящийся на вершине стека b, наверх стека a (ничего не делать, если стек b пуст)
  • pa: перемещает элемент, находящийся на вершине стека a, наверх стека b (ничего не делать, если стек a пуст)
  • ra: сдвиг всех элементов стека a на 1 вверх, первый элемент становится последним
  • rb: сдвиг всех элементов стека b на 1 вверх, первый элемент становится последним
  • rr: одновременно выполняются ra и rb
  • rra: сдвиг всех элементов стека a на 1 вниз, последний элемент становится первым
  • rrb: сдвиг всех элементов стека b на 1 вниз, последний элемент становится первым
  • rrr: одновременно выполняются rra и rrb

✔️Checker

Данная программа принимает на вход массив чисел (условия правильной подачи входных параметров указаны тут), которые и формируют стек a, а затем набор комманд, описанных выше. Результатом является надпись OK (в случае, когда после введенных комманд стек a отсортировался, а стек b пуст) или KO (в ином случае соответственно).

Пример:

$>./checker 3 2 1 0
rra
pb
sa
rra
pa
OK

💱 Push_swap

Вторая программа, которая вычисляет и отображает через стандартный выход наименьшее количество операций(sa,sb,ra,....), требуемых для отсортировки стека a.

$>./push_swap 2 1 3 6
pb
ra
pa
rra

💡 Как пользоваться?

Собирать проект с помощью команды make.

Для запуска checker требуется ввести следующее:

$>./checker [исходный массив чисел] *Enter*
[ввод команд]
*Ctrl+D* - завершение ввода команд

Для запуска push_swap:

./push_swap [исходный массив чисел]

💣 Бонусы

Также, для этого проекта были реализованы следующие бонуса: визуализация стеков -v и представление их в цвете -c

./push_swap -v -c 5 3 1 7

About

🥛🥛 21 Project Algo branch // This project sorts data on a stack, with a limited set of instructions, using the lowest possible number of actions.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published