Algo suite logique

Algo suite logique - Algo - Programmation

Marsh Posté le 19-01-2006 à 16:24:15    

Voila j'ai eu un sujet d'algo à faire mais je tourne en rond à propose d'un exo
Enoncé  
 
Soit la suite logique suivante:
1
1  1
2  1
1  2  1  1
1  1  1  2  2  1
3  1  2  2  1  1
 
(3 fois le nombre 1 puis 2 fois le nombre2 et 1 fois le nombre 1)
Ecrire l'algorithme qui permet de compléter cette suite.
 
Moi je suis arrivé à cela  
 
Algo Suite
 
VAR T:Tableau (1..6) de ent init {3,1,2,2,1,1}
      nb:ent
 
Début
 
Si T(1)!=T(2)  
    alors nb<-1
    Sinon Si T(1)!=T(3)
                alors nb<-2
                sinon Si T(1)!=T(4)
                            alors nb<-3
                            sinon Si T(1)!=T(5)
                                        alors nb<-4
                                        sinon Si T(1) !=T(6)
                                                    alors nb<-5
                                                    sinon nb<-6
                                                Fsi
                                    Fsi
                        Fsi
             Fsi
Fsi
Afficher (nb,T(1))
 
Cette méthode me permet d'afficher les premiers éléments de ma suite c'est à dire 1  3, je pensais donc faire une procédure avec  
mon enchainement de Si mais je bloque sur les paramètre vu qu'a chaque fois il n'y a pas le meme nombre de test.
De meme que si je fais un pour dans l'algo vu que si le nombre 1 est égal au nombre 2 par exemple lorsque ma première boucle sera fini  
la deuxième boucle commencera au 2.
 
JE remercie ceux qui pourront m'aider.
                             

Reply

Marsh Posté le 19-01-2006 à 16:24:15   

Reply

Marsh Posté le 19-01-2006 à 19:26:45    

[:aloy] J'aimerais apporter une petite modification
 
Ton tableau ok mais par contre c'est ton init qui va pas, on analyse une ligne a la fois donc dans ton init => 1, 1, 1 (2 premieres lignes que l'on pourra comparer par la suite)
Il te manque une boucle pour faire n nombre de ligne [:alphat]
Sympa tes si imbriqués mais si tu fait 1000 lignes? "nb" va donner une valeur fausse. La fonction s'impose.
 
Moi c'est le tableau qui me bloque! Je ne sait pas si on peut modifier le nombre de cases d'un tableau...


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
Reply

Marsh Posté le 19-01-2006 à 19:29:24    

Juste un indice : essaie d'une part d'écrire ton algorithme en supposant que tu ne connais pas à priori le tableau, ni sa taille (autrement dit, le tableau ne fait pas 6 cases, mais n), et d'autre part d'utiliser les boucles (tu écris !=T(1), !=T(2), !=T(3)... il doit bien y avoir moyen d'automatiser ça !).


---------------
Viendez vous battre à Prologin \o/
Reply

Marsh Posté le 19-01-2006 à 19:38:18    

Pas d'enchaînements de "Si", un accumulateur (pour compter le nombre actuel) et une mémoire (pour mémoriser le nombre actuel)


Message édité par masklinn le 19-01-2006 à 19:39:35

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 19-01-2006 à 20:13:58    

C'est rigolo à faire :)
 
http://magicweb.manga-torii.com/suite.htm
 
Faut pas mettre plus de 40, parceque c'est un peu exponentiel la taille de la ligne...

Reply

Marsh Posté le 19-01-2006 à 20:29:31    

Dans l'autre sens aussi ça marche :)

Reply

Marsh Posté le 19-01-2006 à 20:37:01    

je l'avais fait en PHP, c'est très marrant au bout d'un moment

Reply

Marsh Posté le 19-01-2006 à 20:38:16    

ritzle a écrit :

je l'avais fait en PHP, c'est très marrant au bout d'un moment


Ben surtout ça a bloqué mon 3500+ pendant 10 minutes quand j'ai demandé 100 itérations :D

Reply

Marsh Posté le 19-01-2006 à 20:53:01    

Juste pour le fun, une version Caml :

Code :
  1. let ligne n =
  2.   let rec suite k n l = match l with
  3.     a::t -> if a = n then suite (k + 1) n t else k::n::suite 1 a t
  4.   | [] -> k::[n]
  5.   in
  6.   let rec lignes n l =
  7.   if n < 1 then l else match l with
  8.    a::t -> lignes (n -1) (suite 0 a l)
  9.   | [] -> []
  10.   in lignes n [1];;

Bon par contre ce n'est pas du tout optimisé, et la pile prend très très cher : au delà de la ligne 39, l'interpretteur déclare forfait... ^_^;


---------------
Viendez vous battre à Prologin \o/
Reply

Marsh Posté le 19-01-2006 à 20:55:05    

et dire que des gens osent dire qu'un langage évolué c'est plus simple que de l'ASM :D

Reply

Marsh Posté le 19-01-2006 à 20:55:05   

Reply

Marsh Posté le 19-01-2006 à 21:00:03    

oui bon on aura compris que c'est trivial comme machin [:pingouino]


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 20-01-2006 à 21:30:37    

Arjuna a écrit :

C'est rigolo à faire :)
 
http://magicweb.manga-torii.com/suite.htm
 
Faut pas mettre plus de 40, parceque c'est un peu exponentiel la taille de la ligne...


 
Ton lien marche pas par contre ton site marche ^^


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
Reply

Marsh Posté le 20-01-2006 à 21:33:19    

le www c'est normal qu'il marche, il est pas chez moi :D
 
par contre, chelou que mon lien ne marche pas :/
 
alice qui fait encore des siennes ça :/
 
déjà que la télé marche plus :sweat:

Reply

Marsh Posté le 20-01-2006 à 21:43:32    

Ha ben nan, c'est mon mot de passe chez ZoneEdit qui avait expiré à priori
 
Ca devrait revenir d'ici quelques minutes


Message édité par Arjuna le 20-01-2006 à 21:43:49
Reply

Marsh Posté le 20-01-2006 à 22:00:41    

j'aurais bien vu du récursif...


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 20-01-2006 à 22:13:24    

pkoi utiliser du récusif quand une boucle suffit ?

Reply

Marsh Posté le 20-01-2006 à 22:14:01    

Reply

Marsh Posté le 21-01-2006 à 13:56:35    

trevor a écrit :

pour s'amuser :D


tiens au fait tu peux me dire si mon lien remarche ?

Reply

Marsh Posté le 21-01-2006 à 15:25:02    

@trevor : mon exemple était en récursif. Bon par contre il n'y a pas de récursion terminale, il faudrait que je le modifie...
 
@Arjuna : par goût de l'écriture fonctionnelle ! :-) A part ça ton lien ne marche toujours pas.


---------------
Viendez vous battre à Prologin \o/
Reply

Marsh Posté le 21-01-2006 à 19:07:04    

Arjuna a écrit :

tiens au fait tu peux me dire si mon lien remarche ?


 
non, tjs pas...


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 21-01-2006 à 19:08:11    

Zavie a écrit :

@trevor : mon exemple était en récursif. Bon par contre il n'y a pas de récursion terminale, il faudrait que je le modifie...


 
celui en caml ? j'ai pas regardé, je ne connais absolument rien à ce langage
mais je te crois :)
et c'est plutôt une bonne idée ;)


---------------
TReVoR - http://dev.arqendra.net - http://info.arqendra.net
Reply

Marsh Posté le 21-01-2006 à 22:00:56    

trevor a écrit :

non, tjs pas...


relou.
 
bon, reste plus qu'à voir ce qu'il se passe

Reply

Marsh Posté le 22-01-2006 à 00:39:59    

J'ai pas tout à fait passé les deux heures et demies à paramètrer ma AliceBox, mais pas loin :o
 
Quelle merde cette daube !
 
Après un reboot : elle perd toutes les règles NAT
Si je colle une IP en "DMZ" (vers mon routeur interne) non seulement elle l'oublie, mais la TV marche plus
Si je boote cette daube alors qu'elle est branchée sur mon routeur, elle marche plus !
 
:fou:
 
Z'avez déjà vu ça vous ?
Faut que j'éteigne le modem. Que je le branche à un PC, que je l'allume, puis une fois la séquence de démarrage terminée (ça dure pas loin de 5 minutes sur cette daube), je la débranche du PC pour la coller sur le routeur ! Et là, ça marche... On croit rêver :fou:
 
(désolé pour ce petit HS, mais là c'est du tip top ça...)

Reply

Marsh Posté le 22-01-2006 à 18:57:38    

Il y a eu Caml, pourquoi pas du Prolog : :lol:  
 

Code :
  1. suite(L) :-
  2. etudie(L, [], [], L1),
  3. writeln(L1),
  4. suite(L1).
  5. etudie([], L1, L2, L) :- !, append(L2, L1, L).
  6. etudie([H |  T], [N, H], L2, L3) :- !,
  7. succ(N, N1), etudie(T, [N1, H], L2, L3).
  8. etudie([H | T], [X, Y], L2, L3) :- !,
  9. append(L2, [X, Y], L22), etudie([H | T], [], L22, L3).
  10. etudie([H|T], _, L1, L2) :- etudie(T, [1, H], L1, L2).


 
Appel par suite([1]).

Reply

Marsh Posté le 23-01-2006 à 19:34:47    

C'est quoi ce langage ??? lol


---------------
http://forum.hardware.fr/hardwaref [...] 1293-1.htm
Reply

Marsh Posté le 23-01-2006 à 22:37:58    

cvex a écrit :

C'est quoi ce langage ??? lol


Pro(grammation)Log(ique)
Plus de détails ici

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed