## Program: Algorithms_6_pancake.py

Program: Algorithms_6_pancake.py

```#Algorithms and Computational Thinking
#Program for Example 6, arranging te pancakes
#

from __future__ import print_function

def printCakes(cakes):
total = len(cakes)
for cake in cakes:
for i in range(total-cake):
print(' ',end='')
for i in range(cake):
print('-',end='')
print(cake,end='')
for i in range(cake):
print('-',end='')
print()
printLine()
raw_input('Press any key to continue...')
printLine()

def flipCakes(cakes,position):
top_cakes = cakes[0:position+1]
top_cakes.reverse()
bottom_cakes = cakes[position+1:]

def printLine():
print('.....................')

def arrangeCakes(cakes):
largest = len(cakes)
count = 0
while largest != 1:
if(largest != (cakes.index(largest)+1)):
#if the next largest pancake to position is not on the top, flip to get it there
if(cakes.index(largest)!= 0):
cakes = flipCakes(cakes, cakes.index(largest))
count += 1
print('Step',count)
printLine()
printCakes(cakes)

#once the next largest pancake to position is one top, flip
cakes = flipCakes(cakes,largest -1)
count += 1
largest -= 1
print('Step',count)
printLine()
printCakes(cakes)
else:
largest -= 1
return count

#Example Data
my_cakes = [3,6,2,1,7,5,4]

#Print original pancakes
print('Original')
printLine()
printCakes(my_cakes)

count = arrangeCakes(my_cakes)

print('Total Steps:',count)

```

Output

```.....................
Step 8
.....................
-1-
--2--
---3---
----4----
-----5-----
------6------
-------7-------
.....................
Press any key to continue...
.....................
Total Steps: 8
```