Bonjour,
Je suis actuellement sur un programme dont je n'arrive pas a trouver le bon algorythme, si quelqu'un pourrait me mettre sur quelque piste...
Merci.
Description du jeu.
Le jeu est constitue de 2 listes nomees l_a et l_b. Au depart l_b est vide et l_a contient un certain nombre de nombres positifs ou negatifs (sans doublons) . Le but du jeu est de faire en sorte que l_a contienne les memes nombres mais dans l'ordre croissant.
Pour ce faire on ne dispose que des operations suivantes :
sa swap les 2 premiers elements de l_a (ne fait rien si il n'y en a qu'un ou aucun).
sb swap les 2 premiers elements de l_b (ne fait rien si il n'y en a qu'un ou aucun).
ss sa et sb en meme temps
pa prend le premier element de l_b et le met en premier dans l_a. (si l_b est vide ne fait rien).
pb prend le premier element de l_a et le met en premier dans l_b. (si l_a est vide ne fait rien).
ra rotate l_a (vers le debut, le premier element devient le dernier).
rb rotate l_b (vers le debut, le premier element devient le dernier).
rr ra et rb en meme temps.
rra rotate l_a (vers la fin, le dernier element devient le premier).
rrb rotate l_b (vers la fin, le dernier element devient le premier).
rrr rra et rrb en meme temps.
Examples.
La liste a et b sera defini ainsi :
l_a 2 1 3 6 5 8
l_b
* sa
l_a 1 2 3 6 5 8
l_b
* pb pb pb
l_a 6 5 8
l_b 3 2 1
* ra rb (on peut donc aussi dire rr)
l_a 5 8 6
l_b 2 1 3
* rra rrb (on peut donc aussi dire rrr)
l_a 6 5 8
l_b 3 2 1
* sa
l_a 5 6 8
l_b 3 2 1
* pa pa pa
l_a 1 2 3 5 6 8
l_b
Le programme.
Vous devez faire un programme qui prend en parametre la liste l_a sous la forme d'une liste de parametres (elle est correcte (pas de doublon , tout les nombres sont bons et rentrent dans un entier). Le programme doit afficher la suite d'operation qui permet de trier la liste. Les operations seront affichees separees par un espace (un seul), pas d'espace au debut ni a la fin, le tout suivi d'un '\n'.
Plus le nombre d'operation est faible, mieux c'est.
$./push_swap 2 1 3 6 5 8
sa pb pb pb sa pa pa pa
$