WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Script som fördelar artiklar jämt (https://www.wn.se/forum/showthread.php?t=1043652)

simals 2010-09-03 14:54

Script som fördelar artiklar jämt
 
Ponera att jag har 4 olika typer av artiklar, vi kan kalla dem för typ A, typ B, typ C och typ D. Av typ A har jag 2 artiklar, av typ B har jag 4 artiklar, av typ C har jag 5 artiklar och av typ D har jag 3 artiklar. Kan man på något sätt göra ett script i PHP som fördelar artiklarna så jämt som det bara är möjligt? Kanske någon form av loop? Här nedan följer ett par exempel på vad jag menar:

2 typ A och 2 typ B = A-B-A-B

4 typ A och 2 typ B = A-A-B-A-A-B

2 typ A, 4 typ B och 3 typ C = B-C-A-B-C-B-A-C-B (det tror jag i alla fall är den mest jämna fördelning)

Ett sådant script hade underlättat uppdateringarna utav ett par av mina hemsidor en hel del. Någon smart jävel som kan hjälpa mig lite? :)

Bjorne 2010-09-03 15:42

Använd en roundrobin-algoritm för att plocka artiklarna. Här är exempelkod i Python: http://docs.python.org/library/itertools.html#recipes (sök på roundrobin)

Kod:

for letter in roundrobin('AA', 'BBBB', 'CCCCC', 'DDD'):
    print letter,
=> A B C D A B C D B C D B C C

Man kan jämna till urvalet ytterligare om man ordnar grupperna efter längd:
Kod:

for letter in roundrobin('CCCCC', 'BBBB', 'DDD', 'AA'):
    print letter,
=> C B D A C B D A C B D C B C


simals 2010-09-03 20:17

Verkar vara precis vad jag letar efter. Är det jättebökigt att få igång scriptet? Jag har aldrig hållt på med Python tidigare.

Bjorne 2010-09-07 13:28

Nej det är inte jättebökigt. Men för att få det att fungera i PHP behöver man copy-pasta någon annans kod eller själv lära sig hur round robin fungerar.

robincox 2010-09-09 13:54

Vilket språk?
 
Citat:

Ursprungligen postat av simals (Inlägg 20367820)
Ponera att jag har 4 olika typer av artiklar, vi kan kalla dem för typ A, typ B, typ C och typ D. Av typ A har jag 2 artiklar, av typ B har jag 4 artiklar, av typ C har jag 5 artiklar och av typ D har jag 3 artiklar. Kan man på något sätt göra ett script i PHP som fördelar artiklarna så jämt som det bara är möjligt? Kanske någon form av loop? Här nedan följer ett par exempel på vad jag menar:

2 typ A och 2 typ B = A-B-A-B

4 typ A och 2 typ B = A-A-B-A-A-B

2 typ A, 4 typ B och 3 typ C = B-C-A-B-C-B-A-C-B (det tror jag i alla fall är den mest jämna fördelning)

Ett sådant script hade underlättat uppdateringarna utav ett par av mina hemsidor en hel del. Någon smart jävel som kan hjälpa mig lite? :)

Vilket programmeringsspråk håller du på med, är det php du kodar i så är det lätt att lösa det.


Alla tider är GMT +2. Klockan är nu 18:47.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson