Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/colmiik/push_swap
Implementation of a sorting algorithm using a linked list in C
https://github.com/colmiik/push_swap
42school pushswap
Last synced: about 1 month ago
JSON representation
Implementation of a sorting algorithm using a linked list in C
- Host: GitHub
- URL: https://github.com/colmiik/push_swap
- Owner: ColmiiK
- Created: 2024-01-03T16:26:26.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-01-30T11:28:59.000Z (about 1 year ago)
- Last Synced: 2024-11-08T19:14:08.669Z (3 months ago)
- Topics: 42school, pushswap
- Language: C
- Homepage:
- Size: 117 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![]()
![]()
This proyect consists of sorting a stack of numbers using two stacks and a limited set of instructions.
![]()
![]()
![]()
---
# Mandatory part
Program name
push_swap
Turn in files
Makefile,*.h
,*.c
Makefile
NAME, all, clean, fclean, re
Arguments
stack a: a list of integers
External functions
read()
,write()
,malloc()
,free()
,exit()
,ft_printf()
and any equivalent YOU coded
Libft authorized
Yes
Description
Sort stacks
## Observations
- Global variables are forbidden
- You have to write a program named push_swap that takes as an argument the stack
a formatted as a list of integers. The first argument should be at the top of the
stack (be careful about the order).
- The program must display the smallest list of instructions possible to sort the stack
a, the smallest number being at the top.
- Instructions must be separaed by a ’\n’ and nothing else.
- The goal is to sort the stack with the minimum possible number of operations.
- If no argument is given push_swap must display nothing.
- In case of error, you must display "`Error`" followed by a ’\n’ on the standard error. This includes for example: some arguments are not integers, some arguments are bigger than an integer, and/or there are duplicates.## Rules
- You have 2 stacks named a and b.
- At the beginning:
- The stack a contains a random amount of negative and/or positive numbers
which cannot be duplicated.
- The stack b is empty
- The goal is to sort in ascending order numbers into stack a. To do so you have the following operations at your disposal:
- `sa` (`swap a`): swap the first 2 elements at the top of stack a. Do nothing if there is only one or no elements.
- `sb` (`swap b`): swap the first 2 elements at the top of stack b. Do nothing if there is only one or no elements.
- `ss`: `sa` and `sb` at the same time.
- `pa` (`push a`): take the first element at the top of b and put it at the top of a. Do nothing if b is empty.
- `pb` (`push b`): take the first element at the top of a and put it at the top of b. Do nothing if a is empty.
- `ra` (`rotate a`): shift up all elements of stack a by 1. The first element becomes the last one.
- `rb` (`rotate b`): shift up all elements of stack b by 1. The first element becomes the last one.
- `rr`: `ra` and `rb` at the same time.
- `rra` (`reverse rotate a`): shift down all elements of stack a by 1. The last element becomes the first one.
- `rrb` (`reverse rotate b`): shift down all elements of stack b by 1. The last element becomes the first one.
- `rrr`: `rra` and `rrb` at the same time.# Bonus part
Program name
checker
Turn in files
*.h
,*.c
Makefile
bonus
Arguments
stack a: a list of integers
External functions
read()
,write()
,malloc()
,free()
,exit()
,ft_printf()
and any equivalent YOU coded
Libft authorized
Yes
Description
Execute the sorting instructions
## Observations
- Write a program named checker that takes as an argument the stack a formatted
as a list of integers. The first argument should be at the top of the stack (be careful
about the order). If no argument is given, it stops and displays nothing.
- It will then wait and read instructions on the standard input, each instruction will
be followed by ’\n’. Once all the instructions have been read, the program has to
execute them on the stack received as an argument.
- If after executing those instructions, the stack a is actually sorted and the stack b
is empty, then the program must display "OK" followed by a ’\n’ on the standard
output.
- In every other case, it must display "KO" followed by a ’\n’ on the standard output.
- In case of error, you must display "Error" followed by a ’\n’ on the standard error. Errors include for example: some arguments are not integers, some arguments
are bigger than an integer,