/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
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.


Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste