Erbitte kleines Programm zu programmieren

#21
ich frage mich noch, bei dem "anderen ansatz" den du geschrieben hast, ob das ganze nicht zu "manipulativ" wäre:
denn sagen wir mal, einer hätte das system des programmes durchschaut, oder aber 2 (gute) freunde setzen sich zusammen hin ihre "wunsch-gruppe" aufzuschreiben und geben EXAKT die selbe konstellation an, sei es nun, weil sie sich gegenseitig "überzeugen" oder weil beide so wirklich am meisten zufrieden sind - dann würde diese kombination doch mit ZIEMLICH HOHER WAHRSCHEINLICHKEIT zustande kommen. nicht?!
 

Xpyder

Well-Known Member
c-b Experte
#22
ich frage mich noch, bei dem "anderen ansatz" den du geschrieben hast, ob das ganze nicht zu "manipulativ" wäre:
denn sagen wir mal, einer hätte das system des programmes durchschaut, oder aber 2 (gute) freunde setzen sich zusammen hin ihre "wunsch-gruppe" aufzuschreiben und geben EXAKT die selbe konstellation an, sei es nun, weil sie sich gegenseitig "überzeugen" oder weil beide so wirklich am meisten zufrieden sind - dann würde diese kombination doch mit ZIEMLICH HOHER WAHRSCHEINLICHKEIT zustande kommen. nicht?!
Das schon - allerdings gibts ja immer noch 14 andere Personen, die (egal, ob sie das System kennen oder nicht) ebenfalls ihre Wünsche angeben, was das ganze natürlich relativiert. Und JEDEM steht es ja frei, soviele mögliche Personen anzugeben, wie er will, wem es egal ist, gibt eben keine oder weniger an.
 

Xpyder

Well-Known Member
c-b Experte
#23
Durch das viele Herumprobieren habe ich mich scheinbar irgendwie selbst verzettelt. Mir ist gerade die WIRKLICH RICHTIGE Methode eingefallen, die garantiert, daß WIRKLICH JEDE Kombination getestet wird und dabei JEDE nur GENAU EINMAL.

Blöd, daß ich nicht früher drauf kam!
Also: Man definiert eine Zahl, die soviele Stellen hat, wie es Personen gibt - das Zahlensystem entspricht der Anzahl Gruppen. Jede Stelle der Zahl entspricht genau einer Person.
Beim Durchzählen der Zahl (entsprechend Zahlensystem) ergibt sich ja genau für die entsprechende Person die entsprechende Gruppe... (im 2er System Gruppe 0 oder 1).
ALLERDINGS müssen dann alle Gruppierungen AUSGESCHLOSSEN werden, deren Ziffernanzahl gleicher Ziffern nicht paßt.

Das heißt, man fängt bei 2er System mit 16 Personen mit einer Zahl mit 16 Ziffern an, diese stellt man auf 0000000011111111, das ist der erste gültige Wert und die erste Gruppenkombination. Dann zählt man so lange hoch, bis wieder die Verteilung der Ziffern 8 zu 8 ist (Im Falle von 2 Gruppen muß man nur die Nullen zählen, die Einsen ergeben sich von selbst, im Falle von 3 Gruppen muß man nur die Nullen und Einsen zählen, die Zweien ergeben sich von selbst. Im Falle von 2 Gruppen muß man auch nur einen vorzeichenbehafteten Zähler auf 0 setzen und für jede "0" um 1 erhöhen und für jede "1" um 1 verringern und der Zähler muß am Ende =0 sein. BESSER ist aber wohl, es allgemeingültig zu machen, dann kann man Nullen, Einsen, Zweien, etc... zählen und sobald ein Zählerwert die maximale Anzahl von Personen pro Gruppe überschreitet, vorher abbrechen.
Auf diese Art braucht man nichtmal die "Leer-Figuren", da sich z.B. bei 16 Figuren und 3 Gruppen die verschiedenen 6:5:5 Gruppen von selbst ergeben.

Das wäre das Verfahren, um ALLE Kombinationen abzufragen und dabei die unmöglichen auszuschließen. Für jede der Kombinationen kann nun ein Zufriedenheitswert getestet werden.

Anmerkung: Für das Binärsystem (oder jedes 2er-Potenz-System, also für 2, 4, 8 Guppen....) kann man hier noch eine Besonderheit des Computers benutzen: Die Zähl-Zahl kann man binär angeben und dann die Ziffern (Nullen und Einsen, Nullen bis Dreien, Nullen bis Siebenen, usw) mit Hilfe von Tabellen zählen. Man bildet also eine Tabelle von 256 Bytes, die Werte von 0 bis 8 (für die Anzahl 0-Bits in einem Byte) enthält und addiert dann diese Werte für alle Bytes des Zählerwerts.

Aber auch hier ergibt sich dann noch das Problem, daß die 1er-Komplemente (im 2er System) bzw auch noch andere Kombinationen (in größeren Zahlensystemen) auch wieder die andere Gruppenverteilung möglich wäre, die dasselbe Ergebnis hätte.

Dies muß man wieder so machen, indem man alle Personen jeder Gruppe zu einem "String" (aus "Ziffern") zusammenfaßt (das kann schon beim Zählen der Ziffern passieren). Sollte ein String länger werden als die maximale Anzahl Personen pro Gruppe, so wird abgebrochen und die "Zählzahl" um 1 erhöht und noch ein Versuch gestartet.

Erhält man gültige Strings, so erweitert man diese, so daß sie die maximale Länge haben, sortiert sie vom kleinsten zum größten (anhand der ersten "Ziffer") und macht daraus einen "Ergebnisstring", den man nun gegen eine schon vorhandene Liste anderer Ergebnisstrings getestet wird und NUR wenn kein solcher vorliegt, dann fügt man einen neuen String ein und macht den Zufriedenheitswert-Test.

Wahrscheinlich wäre es am besten, eine "NextCombination" Funktion zu machen, die ALL DIES (außer dem Zufriedenheitstest) macht und entweder den nächsten gültigen "String" (der quasi aus den 3 Gruppen besteht) auswirft ODER einen Leerstring, wenn es beendet ist, ausgehend von einem globalen Zählwert, der zu Anfang auf soviele Nullen gesetzt wird, wie es Kombinationen gibt.

Ja, das klingt alles kompliziert und komisch - aber so müßte es wohl gehen.
 

Xpyder

Well-Known Member
c-b Experte
#24
Also ich habs jetzt berechnet.
Es gibt 6436 verschiedene zu prüfende Kombinationen für 16 Personen mit 2 Gruppen à 8 Personen. Diese Anzahl erhöht sich exorbitant für 3 Gruppen oder mehr Personen.
D.h. selbst in dieser Konfiguration müssen 6436 Gruppen-Kombinationen getestet werden (und ja, die Doppelungen sind schon nicht dabei!) nach dem Zufriedenheitswert.

Ich überlege gerade, ob ich das nicht doch auf irgendwelche Wunschkombinationen beschränke und das Ganze damit durchrechne. Aber andererseits wird man damit ein eher unzureichendes Ergebnis bekommen.
Mit diesen 6436 Kombinationen könnte ich jedoch erstmal etwas anfangen, d.h. eine Zufriedenheitsliste erstellen, bzw zwei... Dazu müßte ich aber zunächst die Wunschkombinationen ALLER Personen haben.

Aber ich überlege noch weiter, ob mir nicht noch etwas effektiveres einfällt.
 

Firefall

Well-Known Member
c-b Experte
#25
Also ich habs jetzt berechnet.
Es gibt 6436 verschiedene zu prüfende Kombinationen für 16 Personen mit 2 Gruppen à 8 Personen. Diese Anzahl erhöht sich exorbitant für 3 Gruppen oder mehr Personen.
D.h. selbst in dieser Konfiguration müssen 6436 Gruppen-Kombinationen getestet werden (und ja, die Doppelungen sind schon nicht dabei!) nach dem Zufriedenheitswert.

Ich überlege gerade, ob ich das nicht doch auf irgendwelche Wunschkombinationen beschränke und das Ganze damit durchrechne. Aber andererseits wird man damit ein eher unzureichendes Ergebnis bekommen.
Mit diesen 6436 Kombinationen könnte ich jedoch erstmal etwas anfangen, d.h. eine Zufriedenheitsliste erstellen, bzw zwei... Dazu müßte ich aber zunächst die Wunschkombinationen ALLER Personen haben.

Aber ich überlege noch weiter, ob mir nicht noch etwas effektiveres einfällt.
Es müssten 6435 sein. Wir ziehen 8 aus 16, das gibt 16! / (8! * (16 - 8)!) = 12870. Damit haben wir aber jede Aufteilung doppelt, einfach mit vertauschten Gruppen. Daher teilen wir noch durch 2. Das gibt dann 6435.
Das schwierigste beim AUfzählen der Gruppen ist die Elimination der Permutationen. Ich würde es wie folgt lösen:
Die Personen erhalten intern eine eindeutige Reihenfolge, d.h. sowas wie eine numerische ID.
Die Aufteilung auf 2 Gruppen ist durch die Angabe der einen Gruppe aus 8 Personen bestimmt.
Man kann jede Gruppe als sortierte Folge der IDs ihrer Teilnehmer bestimmen. Somit muss man nur alle aufsteigenden Folgen aus 8 IDs aufzählen.
Das kann mit z.B. mit ner rekursiven Funktion machen. Man wählt der Reihe nach ID um ID, und streicht dann alle tieferen IDs aus den noch zur Verfügung stehenden. Ausserdem kann man frühzeitig abbrechen, wenn nicht mehr genug IDs verbleiben (Beispiel: Man hat IDs 1 bis 16. Wenn man bei 14 ist und noch 3 Leute braucht, dann wird daraus keine gültige Gruppe mehr weil man nur noch 15 und 16 haben kann).
So, nachdem ich nun viel kompliziertes erzählt habe kommt hier die Kurzversion in unwartbarer Form. Eigentlich sind es nur 8 verschachtelte For-Schleifen:
Code:
For i = 1 to 9
 For j = i to 10
  For k = j to 11
   ...
  Next
 Next
Next
Im innersten Loop ist dann (i,j,k,...) die jeweilige Gruppe.
Das produziert alle möglichen Kombinationen für eine Gruppe; somit kommt aber jede Aufteilung doppelt vor. (z.B. Einmal kommt die Gruppe 1,2,3,4,5,6,7,8, und einmal die Gruppe 9,10,11,12,13,14,15,16. Beide führen zur gleichen Aufteilung). Solche "doppelten" Gruppen kann man z.B. mit einer Hashtabelle oder einem Baum on-the-fly ignorieren. Dazu würde ich dann wie Xpyder auch 16 bit wählen, und die entsprechenden Indizes für eine Gruppe auf 1 setzen. Dann sucht man jeweils die Negation der aktuellen Gruppe im Baum/Hashtabelle. Wenn man sie findet, hatte man die Aufteilung schon, sonst nicht. Dann fügt man sie ein. Natürlich kann man dazu auch ganz einfach ne Tabelle machen, die ne Speicherstelle für jede Kombination hat. Das braucht dann 64KB für 16 Leute, was vertretbar ist (Angenommen man verbraucht ein ganzes Byte um anzugeben, dass ne bestimmte Gruppe schon dran war. Man kann mit etwas mehr Programmieraufwand auch Bits nehmen, dann sinds nur noch 8KB. Dadurch wird's aber auch langsamer - Und für mich geht Speed über Speicherverbrauch).
 
Zuletzt bearbeitet:

Xpyder

Well-Known Member
c-b Experte
#26
Es müssten 6435 sein. Wir ziehen 8 aus 16, das gibt 16! / (8! * (16 - 8)!) = 12870. Damit haben wir aber jede Aufteilung doppelt, einfahc mit vertauschten Gruppen. Daher teilen wir noch durch 2. Das gibt dann 6435.
Stimmt natürlich, es sind 6435. Das war nur, weil der Zähler den letzten (den Wraparaound) noch eins weitergezählt hat beim Abbruch.
Es sind genau 12870 Kombinationen, die getestet werden und die Doppelungen werden entfernt.
 

Xpyder

Well-Known Member
c-b Experte
#28
Ja, man kann es halt von verschiedenen Richtungen her machen. Ich überlege auch noch, wie man es schicker machen kann. Denn die schon vorhandenen Kombinationen teste ich auch per Vergleich.

EIGENTLICH wollte ich das Programm ja erweitern um die Möglichkeit, es auch auf mehr als 2 Gruppen aufzuteilen.
Aber die Anzahl Kombinationen steigt dadurch immer mehr ins Unermeßliche... Ich überlege schon, ob man das Ganze durch irgendwelche Dinge - bedingt durch die vorgegebenen Daten (welche Personen welche anderen gelistet haben) einschränken kann - aber wie gesagt, dadurch werden evtl einige "so gut wie möglich" Kombinationen nicht getestet und es gibt dann keine vernünftige Lösung...

So langsam wächst sich das ein wenig aus.
Also, die 6435 Kombinationen zu testen, ist ja noch kein Problem. Aber je mehr Personen es werden oder (schlimmer noch!) mehr Gruppen, umso unmöglicher wird, es, dies in endlicher Zeit zu lösen.
 

Firefall

Well-Known Member
c-b Experte
#29
Ja, man kann es halt von verschiedenen Richtungen her machen. Ich überlege auch noch, wie man es schicker machen kann. Denn die schon vorhandenen Kombinationen teste ich auch per Vergleich.

EIGENTLICH wollte ich das Programm ja erweitern um die Möglichkeit, es auch auf mehr als 2 Gruppen aufzuteilen.
Aber die Anzahl Kombinationen steigt dadurch immer mehr ins Unermeßliche... Ich überlege schon, ob man das Ganze durch irgendwelche Dinge - bedingt durch die vorgegebenen Daten (welche Personen welche anderen gelistet haben) einschränken kann - aber wie gesagt, dadurch werden evtl einige "so gut wie möglich" Kombinationen nicht getestet und es gibt dann keine vernünftige Lösung...

So langsam wächst sich das ein wenig aus.
Also, die 6435 Kombinationen zu testen, ist ja noch kein Problem. Aber je mehr Personen es werden oder (schlimmer noch!) mehr Gruppen, umso unmöglicher wird, es, dies in endlicher Zeit zu lösen.
Das liegt daran, dass die Komplexität n^n ist für 2 Gruppen. Das ist schon ein ziemlicher Killer.
 

amoxys

Well-Known Member
#30
Oh, anscheinend gibt es doch mehrere Methoden, die möglichen Verteilungen zu erhalten.

Ich hätte das so gemacht:

Zuerst mit Startzuordnungen anfangen.
1111111100000000

Das bedeutet hier, dass die Personen 1-8 in Gruppe 1 sind und die Personen 9-16 in Gruppe 0, oder sowas. Ist ja nur ein Erklärungsansatz.

Und dann Folgendes solange wiederholen, bis Person 16 in Gruppe 1 rutscht:

  1. Irgendetwas mit den aktuellen Zuordnungen anstellen. Also direkt bewerten, oder irgendwo speichern etc.
  2. Von links ausgehend, den ersten "Block" von Zuordnungen mit Gruppe 1 suchen.
  3. Aus diesem Block die rechteste 1 um einen Platz nach rechts verschieben und die anderen ganz nach links.

Beispielsweise wenn es so aussieht
0000111001011110
dann sind die drei Einsen links der erste Block.
1100000101011110

Sobald eine 1 ganz rechts steht kann man natürlich aufhören und diese Verteilung auch nicht mehr beachten.




Ich habe das interessehalber mal programmiert, allerdings war der Code extrem unübersichtlich.
Nach einer Übersetzung nach C und weiteren "Optimierungen" entstand folgende Version:

Code:
int16_t i, j, k;             // k enthält die aktuellen Zuordnungen
k = (1 << 8) - 1;            // untere Bits auf 1, obere Bits auf 0 setzen
do {
    bewerte(k);              // irgendetwas mit den Zuordnungen anstellen
    i = k & -k;              // unterste 1 finden
    for (j = 1; i & k; i <<= 1, j <<= 1) { // kompletten Block
        k = (k & ~i) | j;                  // Bit für Bit verschieben
    }                                      // (von i nach j)
    k = (k & ~(j >> 1)) | i; // oberste 1 wieder zurückschieben
} while(k > 0);              // bis oberstes Bit 1 ist
 
Zuletzt bearbeitet:

Xpyder

Well-Known Member
c-b Experte
#31
Ich hab mir jetzt gerade mal ausgerechnet, wieviele Kombinationen es werden bei höheren Personenanzahlen - welche Speichermengen man bräuchte, um die Kombinationen alleine zu zu speichern.
Bei den 32 Personen braucht man schon, wenn man sie BINÄR speichert, ca. 11,47 Gigabyte (jaja... für die Kindergartenkinder: GIBI...) !
(Und die müssen dann auch bei jeder neuen Kombination, die angelegt werden soll, natürlich durchforstet werden! Wenn man es nun aus Platzgründen auf Festplatte auslagern würde, würde das noch länger dauern...)
Wenn ich 20 oder 21 Personen zulasse, krieg ich's wohl grad noch in den Heap, ab 22 Personen müßte ich dann auf XMS ausweichen...

Oh ja, Kombinatorik ist lustig...

Na, was solls... Das gegebene Problem mit den 6435 Kombinationen für 16 Leute in 2 Gruppen zu je 8 ist noch lösbar in der derzeitigen Programmkonfiguration. Mal sehen, was ich mir da einfallen lasse.

@Benutzername2011:
Nur mal so 'ne Frage:
Ist der eigentliche Programm-Haben-Wollen-Wunsch überhaupt noch aktuell, bzw Euer Personen-in-Gruppen-Sortier-Problem überhaupt noch gegeben - oder erörtern wir hier nur noch Zahlenkolonnen und Lösungsansätze?
 

Xpyder

Well-Known Member
c-b Experte
#33
Da hast du dich um ne Kommastelle verrechnet. Es sind "nur" 1,147 GB nötig.
Ja, ich hatte es nicht als GB angezeigt, sondern nur als Byte, kB und MB und die 1147 sind natürlich 1,147. Reicht mir aber trotzdem schon...
Ich meine: EIGENTLICH haben heutige Rechner so viel und EIGENTLICH kann ich auch von DOS aus (selbst im 16bit Mode, dank HIMEM.SYS) diese knapp 4 GB ansprechen (sofern vorhanden natürlich), aber welcher DOS-Rechner hat die schon eingebaut? (wüßte jetzt gar nicht, ob so'n 486er Motherboard das abkann...) und neue Boards/Rechner haben die zwar, aber da ist mit normalem DOS 6.22 nicht mehr viel zu machen...

Aber ich habe gemerkt, daß ich keine Doppelungen habe, wenn ich nur die erste hälfte der 65536 "Möglichkeiten" durchspiele (also die bewußten 6435 da raushole), was natürlich klar ist, weil dann eine Person immer in einer Gruppe bleibt und die anderen "drumherum" angeordnet, dadurch ergibt sich das Problem nicht, d.h. im Falle, daß man nur 2 Gruppen bilden will, kann man sich dadurch den Test auf Doppelungen sparen.

Ich glaube derzeit kaum, daß es sinnvoll ist, das Programm für mehr als 3 oder 4 Gruppen auszulegen, denn das artet dann doch zu sehr aus...
 
#34
@Benutzername2011:
Nur mal so 'ne Frage:
Ist der eigentliche Programm-Haben-Wollen-Wunsch überhaupt noch aktuell, bzw Euer Personen-in-Gruppen-Sortier-Problem überhaupt noch gegeben - oder erörtern wir hier nur noch Zahlenkolonnen und Lösungsansätze?
ja, durchaus, das thema ist noch aktuell und gespannt lese ich jeden eurer posts auch wenn ich jeweils nur ca. 20% verstehe. aber die intensionen kommen bei mir schon rüber.
das ganze mit den gruppen findet in ca. 3 wochen statt, also ein bisschen zeit ist noch gegeben; und abgesehen davon, kann man das programm dann ja auch, mit deiner einverständnis natürlich, an die kommenden jahrgänge weiter geben......
 

Xpyder

Well-Known Member
c-b Experte
#36
Ja, auch ein interessanter Ansatz. Man würde sozusagen jeder Person als Knoten sehen, von der eine Anzahl Zweige (und zwar maximal Anzahl_Personen minus eins, aber im Endeffekt für zwei Gruppen natürlich Anzahl_Personen/2) ausgehen, die mit anderen Knoten verbunden werden (oder auch nicht, je nachdem, ob Verbindung gewünscht oder nicht).
Jede Verbindung kann natürlich bidirektional sein, die Stärke der Verbindung ergibt sich aus der "Höhe" des Wunsches... prinzipiell eine gute Idee, um die gewünschte Vernetzung der Personen darzustellen - aber nun müßten ja noch neue Verbindungen geschaffen oder Verbindungen beseitigt werden, damit es auf 2 Gruppen hinausläuft. Das Problem dabei ist natürlich - wie immer - daß es zwei gleich große Gruppen sein müssen und daß man die "Zufriedenheiten" testen muß. Das weit größere Problem sehe ich darin, daß es eventuell keine Lösung geben könnte, da man die Kombinationen für "mittlere Zufriedenheit" eventuell nicht berücksichtigt, weil sie durch die schwachen Verbindungen ja wegfallen. Wären sich alle Personen so einig, daß das Problem von vornherein lösbar wäre, bräuchte man das Programm nicht, weil sie diese Gruppen selbst bilden würden. Gibt es aber Uneinigkeiten, so müssen notgedrungen auch Verbindungen berücksichtigt werden, die eigentlich "schwach" sind, um die einzelnen Gruppen "voll" zu bekommen, damit beide Gruppen gleich groß sind - und dies eben so tun, daß eine möglichst gleichmäßige Zufriedenheit herrscht.

Der gewaltige Vorteil, der sich durch mnemonics Vorschlag ergibt, wäre natürlich, daß durch die Vernetzung der Elemente (Personen) viel Speicher gespart würde - allerdings müßte hier natürlich, aufgrund der Struktur solcher Netze - vorzugsweise rekursiv gearbeitet werden, entweder durch rekursive Funktionen oder durch eine Schleife mit künstlichem Stack (letzteres sollte wohl nicht notwendig sein, da die Zweiglänge überschaubar bleibt). Der Vorteil eines "künstlichen Stack" wäre jedoch, daß man auf diese Art die ansonsten unvermeidbare Bildung von Ringen ausschließen kann, indem man bei jedem neu getesteten Knoten testet, ob er schon in dem bereits beschrittenen Pfad (oder gegabelten Pfaden) enthalten ist - dies könnte aber ebenfalls erledigt werden, indem man z.B. die bereits gefundenen Elemente zusätzlich zu einem String (global, d.h. eine Variable außerhalb der rekursiven Funktion) "auflistet", um diese Tests durchzuführen.

Ich lasse mir das Ganze mal durch den Kopf gehen - es klingt wie ein interessanter Ansatz.
 
#39
ich möchte wirklich nicht drängen, denn wenn du es nicht fertig hast, hast du es nicht fertig!
nur zur information: das ganze wird am donnerstag den 29.09. entschieden, wenn wir keine wunschgruppen einreichen.

schönes wochenende!
 

Xpyder

Well-Known Member
c-b Experte
#40
So, heute habe ich mich mal hingesetzt und noch die letzten Dinge an dem gewünschten Programm fertiggemacht.
Entschuldige, daß es so lange gedauert hat - ich hatte zwischendurch auch noch andere (dringende) Projekte für jemand anderen am Laufen.
Anmerkung: Ja, ich weiß, daß die Programmbedienung recht billig geraten ist. Aber es ist eben nur ein Programm für diesen einen Zweck und ich hatte mich eher auf die interne Verarbeitung konzentriert und das "Außenrum" nur so gut wie nötig gebaut.

Wie gut oder schlecht das Ganze nun letztendlich arbeitet und ob es überhaupt die gewünschten Ergebnisse liefert (immerhin wird der Kram ja lediglich rein rechnerisch bearbeitet), müßt Ihr selber sehen.

Du kannst ja mal ein Feedback geben, ob Ihr es benutzen könnt,) ob es funktioniert (das tut, was es soll) und auch, wenn bestimmte Dinge nicht zu verstehen sind.

Da es sehr viele Kombinationen (bei 16 Personen à 2 Gruppen eben die bewußten 6435) gibt, erfolgt die Ausgabe nur für die erste ("beste") gefundene Gruppenaufteilung und, wieviele "beste" Gruppen dieser mit gleicher Bewertung existieren. Damit man auch die anderen Gruppen sehen kann, wird das Ergebnis (die nach Bewertung sortierte Auflistung) in eine Textdatei gespeichert.

Wichtiger Hinweis!
Die angezeigte Kombination ist nur dann die best-bewertete, wenn es nur eine bestbewertete Kombination gibt. Existieren mehrere, so sind diese absolut gleichwertig und ihre Position in der Sortierung ist als "nebeneinander" zu verstehen! Der Ergebniswert steht bei jeder Gruppierung jeweils vorn als Zahl mit einem > Zeichen dahinter.
Sollten also mehrere "beste" Kombinationen vorhanden sein, so muß entweder manuell eine ausgesucht werden oder nach anderen Kriterien bewertet werden (es stehen 8 verschiedene wählbare Bewertungsvorschriften, jeweils kombiniert aus 3 Kriterien zur Verfügung).


Achja: Zu finden ist es hier:
http://www.imperial-games.de
Oder genauer:
http://www.imperial-games.de/html/dosa3.htm
Das Tool heißt SortName.
(der zweite Link kann sich jedoch immer mal etwas ändern, da die Tools alphabetisch gelistet in die Tabellen eingetragen werden und bei neuen Tools verschiebt sich dies eventuell.)

Ich hoffe, damit kann Euer Problem gelöst werden.
 
Oben