Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 21:32

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Hilfe bei (mathematischen) Algorithmus (Gruppenteilung)

Discussion on Hilfe bei (mathematischen) Algorithmus (Gruppenteilung) within the General Coding forum part of the Coders Den category.

Reply
 
Old   #1

 
papierkorp's Avatar
 
elite*gold: 170
The Black Market: 187/0/0
Join Date: Sep 2009
Posts: 2,688
Received Thanks: 336
Hilfe bei (mathematischen) Algorithmus (Gruppenteilung)

Servus,

ich mach mir grad privat für eine LAN Party (sobald Corona mal vorbei ist..) so eine kleine Turnierwebsite.

Das dient hauptsächlich dazu ein bisschen zu programmieren um die Skills ned zu verlernen.

Jetzt hab ich grad folgendes Problem:

Ich kenn die Anzahl aller Teilnehmer am Turnier.
Und ich weiß wieviele Spieler maximal bei einem Spiel gemeinsam zocken können (z.B. Worms sind max. 4 Spieler, Counter-Strike 10 Spieler..)
Und ich kann ausrechnen wieviele Gruppen insgesamt benötigt werden.

Jetzt würde ich gerne abhängig von der Anzahl Teilnehmer und den MaxSpieler pro Spiel automatisch Gruppen erstellen lassen (zumindest die Größen der einzelnen Gruppen).

Was ich schon weiß:

Wenn AnzahlTeilnehmer // maxSpieler == 0 können alle mitspielen
Wenn AnzahlTeilnehmer // maxSpieler == 1 werden alle Teilnehmer einfach in 2 Gruppen gesplittet
Sonst AnzahlTeilnehmer // maxSpieler + 1 = Anzahl der benötigten Gruppen

Jetzt kommt mein Problem, wenn das Ergebnis > 1 ist, kann ich die Anzahl der Gruppen rausfinden, weiß aber nicht wie ich die per Algorithmus immer ausgeglichen hin bekomm.

Als Beispiel:

Teilnehmer Maximal Spieler möglich Gewünschte Gruppenteilung
9 4 3,3,3
10 4 4,3,3
11 4 4,4,3
12 4 4,4,4
13 4 4,3,3,3
9 6 5,4
10 6 5,5
11 6 6,5
12 6 6,6
13 6 5,4,4

Ich hoffe ihr versteht was ich mein , vielleicht hat hier einer ne Idee wie man das machen könnte <3


Gruß
Markus
papierkorp is offline  
Old 02/24/2021, 08:17   #2


 
Jeoni's Avatar
 
elite*gold: 966
Join Date: Apr 2010
Posts: 1,105
Received Thanks: 681
Naja, wenn du die Anzahl der Gruppen hast, kannst du die Anzahl der Teilnehmer dort einfach aufteilen. Zuerst wieviele Teilnehmer jede Gruppe mindestens hat:
Floor(AnzahlTeilnehmer / AnzahlGruppen) = TeilnehmerProGruppe
Dann wie viele Gruppen +1 Teilnehmer haben, um den Überschuss / Divisionsrest aufzuteilen:
AnzahlGruppenMitEinemTeilnehmerMehr = AnzahlTeilnehmer - TeilnehmerProGruppe * AnzahlGruppen (oder auch AnzahlGruppenMitEinemTeilnehmerMehr = AnzahlTeilnehmer % TeilnehmerProGruppe ).
Das war's.

Beispiel mit der Zeile 11 | 4 | 4,4,3:
AnzahlGruppen hast du ja bereits mit deiner Formel berechnet, das sind 3.
TeilnehmerProGruppe = Floor(11 / 3) = 3
AnzahlGruppenMitEinemTeilnehmerMehr = 11 % 3 = 2
Also jede der drei Gruppen hat 3 Teilnehmer und zwei der Gruppen haben einen Teilnehmer mehr (also 4) -> 4,4,3
Jeoni is offline  
Thanks
1 User
Old 02/25/2021, 07:08   #3

 
papierkorp's Avatar
 
elite*gold: 170
The Black Market: 187/0/0
Join Date: Sep 2009
Posts: 2,688
Received Thanks: 336
Das ich da nicht selber dran gedacht hab -.-'

Hat funktioniert vielen Dank!

Hier der Code in Python3 falls es wen interessiert:

Code:
Teilnehmer=18;
maxSpieler=6;

def Gruppenrechner(Teilnehmer,maxSpieler):
    Teilnehmergruppe=[];
    
    if isinstance(Teilnehmer, str) or Teilnehmer <= 0:
        return "Keine erlaubte Eingabe!";
    elif Teilnehmer <= maxSpieler:
        Teilnehmergruppe.append(Teilnehmer);
    elif Teilnehmer // maxSpieler == 1:
        if Teilnehmer % 2 == 0:
            Teilnehmergruppe.append(Teilnehmer//2);
            Teilnehmergruppe.append(Teilnehmer//2);
        else:
            Teilnehmergruppe.append(Teilnehmer//2);
            Teilnehmergruppe.append(Teilnehmer//2+1);
    elif Teilnehmer % maxSpieler == 0:
        AnzahlGruppen = Teilnehmer//maxSpieler;
        MindestanzahlinGruppe = Teilnehmer//AnzahlGruppen;
        for i in range(AnzahlGruppen):
            Teilnehmergruppe.append(MindestanzahlinGruppe);
    else:
        AnzahlGruppen = Teilnehmer//maxSpieler + 1;
        MindestanzahlinGruppe = Teilnehmer//AnzahlGruppen;
        AnzahlGruppenUeberschuss = Teilnehmer % AnzahlGruppen;
        for i in range(AnzahlGruppenUeberschuss):
            Teilnehmergruppe.append(MindestanzahlinGruppe+1)
        for i in range(AnzahlGruppen-AnzahlGruppenUeberschuss):
            Teilnehmergruppe.append(MindestanzahlinGruppe);
    return Teilnehmergruppe;

for i in range(20):
    print ("Teilnehmer:", i, Gruppenrechner(i,maxSpieler));
    
if not isinstance(Gruppen, str):
    #go on
papierkorp is offline  
Reply


Similar Threads Similar Threads
MD5 Algorithmus?!? Hilfe bitte!
09/10/2008 - Main - 1 Replies
Hallöchen, Ich soll mich mal mit MD5 befassen, allerdings hörts schon beim Algorithmus auf ^^. Bei wikipedia ist so ein bild was den Algorithmus darstellt, allerdings versteh ich die erläuterungen nicht. Kann mir jemand das bild mit dem Schaltkreis näher erläutern bzw hat jemand ne seite wo es besser erklärt ist?? link danke schonmal für eure antworten mfg cs



All times are GMT +1. The time now is 21:34.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.