Wenn du Punkte vergibst, würde ich das exponentiell machen.
Alternativ lässt sich dein Muster generieren, wenn du einfach alle natürlichen Zahlen hochzählst und dann immer nur genau die nimmst, die 5 einsen im Bitmuster haben.
Musst nur gucken wegen dem least-significant-bit (bei deinem Beispiel ist das nämlich links...)
Wenn du also nur vergleichen möchtest, welche Hand besser ist, kannst du mit Gewichten von 1, 2, 4, 8, 16, 32, ... arbeiten oder das ganze zu einem Integer verwursten und vergleichen.
Hier mal der Beispielcode, mit dem ich das überprüft habe:
PHP-Quelltext
1: 2: 3: 4: 5: 6: 7:
| function Result = NextCombination(x) a = bin2dec(fliplr(x))+1; while sum(dec2bin(a)-'0') ~= 5 % Einsen zählen a = a+1; end Result = fliplr(dec2bin(a)); end |
Ist jetzt leider in matlab, aber ich hoffe die Funktion geht hervor. fliplr kehrt den String um, damit das LSB rechts zum liegen kommt. Ausgehend von einer gegebenen Kombination wird also immer eine 1 addiert und geguckt ob das Bitmuster genau 5 Einsen enthält. Sobald das der Fall ist, sind wir fertig und der Wert kann für die Darstellung wieder umgewandelt werden.
Um eine Punktefunktion in Delphi zu implementieren würde ich folgendermaßen vorgehen:
Definiere ein konstantes Array mit einem Char als Index. Dieses kannst du nun vorbelegen mit den passenden Werten. ('A'=$01, '2'=$02, '3'=$04, '4'=$08, '5'=$10) usw.
Danach kannst du für jedes Blatt den Score berechnen indem du die Werte der einzelnen Buchstaben mit bitweisem or verknüpfst.