| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | Lidt matematik Fra : Morten Snedker | 
  Dato :  17-01-02 12:35 |  
  |   
            En database skal bruges i forbindelse med afvikling af reklamer på en
 lokalradio.
 
 Jeg har to tabeller: Speaker og Branche.
 
 Hver af dem har en primærnøgle med fortløbende numre; SpeakerID og
 BrancheID.
 
 Disse nøgler er fremmednøgler i en tredie tabel, Spot, hvori booking
 af reklamer foregår. 
 
 Lad os sige, at vi kl. 8:20 har en reklameblok bestående af 10
 reklamer. Mit job er nu at checke, at der ved to efterfølgende
 reklamer hverken er samme speaker eller samme branche, defineret udfra
 deres ID's.
 
 Hvis det er tilfældet skal de kombineres på ny, og checket laves igen.
 Skal jeg alle 10x9x8... muligheder igennem - eller er der en smartere
 måde ?
 
 
 mvh
 Morten Snedker
  
            
             |   |   
            
        
 
            
         
           Christian R. Larsen (17-01-2002) 
         
	
            | Kommentar Fra : Christian R. Larsen | 
  Dato :  17-01-02 19:14 |  
  |   
            "Morten Snedker" <morten_nospam@dbconsult.dk> wrote in message
 news:3c46b4b2.2885429@news.inet.tele.dk...
 > Lad os sige, at vi kl. 8:20 har en reklameblok bestående af 10
 > reklamer. Mit job er nu at checke, at der ved to efterfølgende
 > reklamer hverken er samme speaker eller samme branche, defineret udfra
 > deres ID's.
 >
 > Hvis det er tilfældet skal de kombineres på ny, og checket laves igen.
 > Skal jeg alle 10x9x8... muligheder igennem - eller er der en smartere
 > måde ?
 
 Jeg ville bare lave det som en simpel algoritme, der lægger en reklame i
 blokken af gangen:
 
 (Dette er ikke rigtig kode, men blot en illustration af ideen)
 
 Array Reklame (1-10) -> indeholder en blok på 10 numre, der refererer til et
 spot.
 Array Spots(1-1000)
 
 (Spots er en type, der indeholder to parametre, nemlig Spots.Speaker og
 Spots.Branche)
 
 Reklame(1) = Random(1000)
 
 For x = 2 to 10
 
     Do
     NyRekl = Random(1000)
     Loop Until Spots(NyRekl).branche <> Spots(x-1).branche  and
 Spots(NyRekl).speaker <> Spots(x-1).speaker
     Reklame(x) = NyRektl
 
 Next x
 
 
 
  
            
             |   |   
            
        
 
            
         
           Morten Snedker (18-01-2002) 
         
	
            | Kommentar Fra : Morten Snedker | 
  Dato :  18-01-02 00:07 |  
  |   
            On Thu, 17 Jan 2002 19:13:57 +0100, "Christian R. Larsen"
 <crlarsen@hotmail.com> wrote:
 
 
 -snip-
 
 >Reklame(1) = Random(1000)
 >
 >For x = 2 to 10
 >
 >    Do
 >    NyRekl = Random(1000)
 >    Loop Until Spots(NyRekl).branche <> Spots(x-1).branche  and
 >Spots(NyRekl).speaker <> Spots(x-1).speaker
 >    Reklame(x) = NyRektl
 >
 >Next x
 
 Tak for input. Jeg har nu kun brugt dit forslag til dels - men det fik
 mig på rette spor. En reklameblok indholder ca. 10-15 reklamer. Jeg
 tilføjede et felt, der får et random nummer. Dette nummer sorterer jeg
 så efterfølgende på, og checker om rækkefølgen er okay mht til
 sammenfald. Hvis ikke får de alle nyt random nummer og jeg prøver
 igen. 
 
 Nogle gange lykkes det i første forsøg, andre gange efter 1200 forsøg.
 Men det tager ingen tid, så det går fint - har sat en maks på 10.000
 forsøg. I snit kører den det igennem på 2-3 sekunder.
 
 
 Mvh
 Morten Snedker
  
            
             |   |   
            
        
 
            
         
            Christian R. Larsen (18-01-2002) 
         
	
            | Kommentar Fra : Christian R. Larsen | 
  Dato :  18-01-02 10:34 |  
  |   
            Morten Snedker <morten_nospam@dbconsult.dk> skrev i artiklen
 <3c475805.44696209@news.inet.tele.dk>...
 > Tak for input. Jeg har nu kun brugt dit forslag til dels - men det fik
 > mig på rette spor. En reklameblok indholder ca. 10-15 reklamer. Jeg
 > tilføjede et felt, der får et random nummer. Dette nummer sorterer jeg
 > så efterfølgende på, og checker om rækkefølgen er okay mht til
 > sammenfald. Hvis ikke får de alle nyt random nummer og jeg prøver
 > igen. 
 > 
 > Nogle gange lykkes det i første forsøg, andre gange efter 1200 forsøg.
 > Men det tager ingen tid, så det går fint - har sat en maks på 10.000
 > forsøg. I snit kører den det igennem på 2-3 sekunder.
 
 Og det er vel fint nok så. Men i almindelighed er der vel ingen grund til
 at omnummerere samtlige reklamer hver gang. Min idé er jo netop, at det kun
 er en af dem, der skal checkes hver gang, da det typisk vil være hurtigere
 at finde en valid kombination på den måde. 
 
  
            
             |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |