suite logique de mot de bits

suite logique de mot de bits - Algo - Programmation

Marsh Posté le 29-08-2012 à 00:37:44    

Bonjour,
 
 
Je souhaite générer une ou plusieurs suite(s) de N bit(s) parmi M bit(s) de manière à parcourir tous les élément de la suite sur M bits
 
Merci pour votre aide.
 
 


Message édité par Profil supprimé le 29-08-2012 à 01:29:11
Reply

Marsh Posté le 29-08-2012 à 00:37:44   

Reply

Marsh Posté le 30-08-2012 à 16:43:43    

Tu veux faire toutes les permutations? J'ai pas trop compris ton besoin...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 30-08-2012 à 19:01:44    

bonjour rufo,
Je cherche des suites logiques qui me permettraient de parcourir une suite de permutation de N bit dans une suite de Mbit.
Est-ce plus explicite ?
 
J'ai un clavier de 103 touches, représenté par un tableau de 103 bits, et j'ai 24 voix de polyphonie, je veux des suites de 1 à 24 bit sur 103;

Reply

Marsh Posté le 30-08-2012 à 20:13:10    

j'ai déjà fait ceci : :
 
La fonction next génère la suite. C'est une simple addition, ou genre...

Code :
  1. subtype Keyb_Type is natural range 48..72;  
  2.    
  3. Polyphony : positive := 24;      
  4.  
  5.      
  6.  
  7. type Chord_Type is array (Positive range 1..Polyphony) of Keyb_Type;
  8.                  
  9.    
  10.      
  11.    
  12.      
  13. Init : Chord_Type := (others => Keyb_Type'First);
  14. Code : array (Keyb_Type'Range) of Boolean := (others => False);
  15.            
  16.      
  17. function Next return Chord_Type is         
  18.     
  19. begin
  20.   Init := (others => Keyb_Type'First);
  21.     
  22.   for I in Code'first..Code'Last-1 loop
  23.      if Code(I) then
  24.         if Code(I+1) then
  25.            null;
  26.         else
  27.            Code(I+1) := True;
  28.            Code(Keyb_Type'First..I) := (others => False);
  29.            exit;
  30.         end if;          
  31.      else
  32.          Code(I) := True;               
  33.          exit;
  34.       end if;        
  35.   end loop;    
  36.     
  37.   declare
  38.      Index : Natural := 0;
  39.   begin
  40.      for I in Code'Range loop
  41.         if Code(I) then
  42.            Init(Index +1) := I;
  43.            Index := Index + 1;
  44.          end if;
  45.          exit when Index = Polyphony-1;
  46.      end loop;
  47.   end;    
  48.   return Init;    
  49. end Next;


Message édité par Profil supprimé le 30-08-2012 à 20:18:38
Reply

Sujets relatifs:

Leave a Replay

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