Skip to content

tpan/stack_solver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Stack_solver

Stack solving program in C

Given a set of ints, efficiently sorts the data using two stacks and a limited number of operations.

  • The game is composed of 2 stacks named a and b.
  • To start with:
  • a contains a random number of either positive or negative numbers without any duplicates.
  • b is empty
  • The goal is to sort in ascending order numbers into stack a.
  • To do this 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.

My program uses three different sorts:

  • An insertion sort for data sets with more than 10 elements.
  • A bubble sort for data sets between 3 and 10.
  • A simple sort which only uses SA, RA and RRA.

Example usage:

git clone https://github.com/tpan/stack_solver.git
make

$ ./push_swap 42 10 20 6 3
sa rra pb rra pb pb ra pa pa pa

For 100 random ints, less than 700 operations should be required. For 500 random ints, fewer than 5300 operations.

I also included a verbose '-v' flag which serves as a visualizer for the stacks. ./push_Swap 42 10 20 6 3 -v

Authorized functions

  • write
  • malloc
  • free
  • exit

About

Stack solving program in C

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published