Top 20

1 0x00h 696 pts
2 boris39 696 pts
3 neoxquick 677 pts
4 maf-ia 659 pts
5 eax 658 pts
6 thefinder 640 pts
7 benito255 605 pts
8 nikokks 598 pts
9 mego 589 pts
10 madbat2 580 pts
11 plucth 562 pts
12 Mart 550 pts
13 Stupefy 530 pts
14 rostale 516 pts
15 tehron 503 pts
16 Kithyane 498 pts
17 egosum 471 pts
18 malose 428 pts
19 CoYoTe99 415 pts
20 Undr 413 pts

Classement complet

Shoutbox

6 Nov - 8:17 am

Bonjour, un léger problème sur l'épreuve 10 : Une fois réussie, le champ "points earned" indique 72 au lieu de 7 En revanche sur le site le nombre de points comptabilisés est bien 7 Merci pour ce site génial !

21 Oct - 9:48 pm

Équation du challenge 52 corrigée, merci

16 Oct - 8:43 am

Bonjour, il y a aussi un problème d'affichage "invalid equation" dans le challenge 52. Merci

14 Oct - 8:57 pm

Barbapapou l'équation du challenge 29 a été corrigée

4 Oct - 10:30 am

Bonjour, il y a un problème avec l'affichage d'une équation dans le challenge 29

24 Aug - 7:10 pm

@rostale, en effet l'épreuve 21 ne fonctionne plus depuis un moment, pour l'instant on a pas prévu de temps pour la réparer je pense qu'on va finir par la supprimer tout simplement. @nikokks, ok je t'envoie un mail

22 Aug - 11:40 pm

Salut Metatr0n. pourrait on avoir une discussion en MP. J'imagine que tu as mon mail. Ce serait pour discuter de microcontest en general.

28 Jul - 10:38 pm

Pouvez-vous vérifier l'épreuve Email (21) ? En effet, je ne reçois pas d'email de la part du site. Merci

28 Jul - 7:29 pm

Bonjour et merci. Cependant, j'ai résolu le challenge qui me posait pb, donc plus rien à demander... pour l'instant.

28 Jul - 1:48 pm

Ça devrait être réparé maintenant

Connexion
Mot de passe oublié

Supportez nousx

Vous aimez µContest ?
Supportez nous en votant (fun et difficulté) pour µContest sur WeChall :)
Si vous ne l'avez pas encore fait, profitez-en pour lier votre compte
Wechall à µContest pour pouvoir voter !

Merci

Liste des épreuves :: Divers :: Tower of Hanoï (30)

Résumé

ID : 30
Points : 15
Validations :
Page de l'épreuve
Reporter un bug

Description


Voici un problème classique en algorithmique, vous devez déplacer une tour de disques d'une tour à une autre, sauf qu'ici, au départ, les disques ne sont pas empilés que sur une tour mais sont répartis sur les trois.
Voici les règles :

- Chaque disque a une taille différente, représentée par un entier; 0 pour le plus petit.
- Vous n'avez le droit de déplacer qu'un disque à la fois.
- Vous ne pouvez poser un disque que sur un disque de taille supérieure.

Voici un exemple avec 4 disques à déplacer sur la tour 3 :

Position initiale :













Le nombre de disques initial et la tour cible varient, à récupérer dans les variables nb_disques et tour_cible.
Chaque disque est représenté par un entier, 0 pour le plus petit, 1 pour le 2e plus petit, etc.
La situation initiale vous est fournie dans trois variables tour1, tour2 et tour3. Ce sont des chaînes de caractères, codant les disques sur la tour en question. Dans l'exemple, les variables seraient :


char tour1[] = "1,0";
char tour2[] = "2";
char tour3[] = "3";


Les disques sont séparés par des virgules, en allant du plus gros disque (la base de la tour), au plus petit.

Il ne vous reste plus qu'à retourner l'enchaînement de mouvements permettant d'arriver à la situation finale, c'est à dire tous les disques sur la tour_cible. Pour cela, vous devez renvoyer une chaîne de caractères solution formatée de la façon suivante :
tour_depart>tourarrivee,tourdepart>tourarrivee,...
en remplaçant tour_depart et tour_arrivee par les numéros des tours correspondants pour chaque mouvement.
Les tours sont représentées par des entiers de 1 à 3.
Dans l'exemple, vous devriez renvoyer solution tel que :


char solution[] = "2>3,1>2,1>3,2>3";


Variables


Nom Type Description
Variables à récupérer
nb_disquesEntierintNombre de disques répartis sur les trois tours
tour_cibleEntierintTour sur laquelle doivent être déplacés les disques. Vaut 1 pour la tour 1, 2 pour la tour 2 et 3 pour la tour 3
tour1Chaîne de caractèreschar*Chaîne de caractères codant les disques initialement placés sur la tour 1, comme expliqué dans le texte.
tour2Chaîne de caractèreschar*Chaîne de caractères codant les disques initialement placés sur la tour 2, comme expliqué dans le texte.
tour3Chaîne de caractèreschar*Chaîne de caractères codant les disques initialement placés sur la tour 3, comme expliqué dans le texte.
Variables à renvoyer
solutionChaîne de caractèreschar*Chaîne de caractères codant les mouvements à effectuer pour que tous les disques se trouvent sur la tour_cible, suivant les règles expliquées dans le texte.