programme affichant la suite d'operation pour trier une liste. [C] - C - Programmation
Marsh Posté le 07-01-2009 à 19:07:04
on fait pas les devoirs. Réfléchis y et montre à quoi tu arrive, on t'aidera aprés.
Marsh Posté le 08-01-2009 à 00:59:39
Arf le mec qui fout le sujet du pushswap direct sur le forum
Allez, c'est pas trop dur, je vais te donner un indice : listes chainée circulaire.
Après, l'algo est fastoche
Marsh Posté le 08-01-2009 à 13:05:18
Joel F, je ne t ai pas demande de faire mon devoir, jai demande juste quelques pistes car je suis legerement perdu.. ralala les bolos dans les forums sa m enerve.
sinon merci Mxtrem, je vais faire quelques recherches
En fait je me rend compte que si je le fais a la main, jy arrive pas sur des longues chaines. je ne capte pas vraiment la logique a avoir... :S
Marsh Posté le 08-01-2009 à 17:13:33
Darame a écrit : Joel F, je ne t ai pas demande de faire mon devoir, jai demande juste quelques pistes car je suis legerement perdu.. ralala les bolos dans les forums sa m enerve. |
Ce qui m'énerve moi c'est les gugus dans ton genre qui se croient chez mami.
Marsh Posté le 08-01-2009 à 17:43:32
Je te demanderai simplement de pas repondre si tu en a pas envie c'est tout.
Bref, ya-t-il une autre façon de le coder sans une liste chainée??
merci des reponses
Marsh Posté le 08-01-2009 à 18:00:57
ReplyMarsh Posté le 08-01-2009 à 20:36:36
Darame a écrit : Je te demanderai simplement de pas repondre si tu en a pas envie c'est tout. |
La liste chaînée, c'est le B-A BA du C. Autant t'y mettre.
Marsh Posté le 07-01-2009 à 17:32:59
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
$