Seite 1 von 2

Verfasst: Dienstag 23. März 2010, 21:40
von numerix
Falls dir immer noch daran gelegen ist, dass andere dir behilflich sein sollen, dass dein Algorithmus schneller wird, dann musst du präzisere Angaben machen.

Verfasst: Mittwoch 24. März 2010, 06:45
von snafu
Vielleicht lohnt es sich, über ein Set zu gehen:

Code: Alles auswählen

tup = (2,5,6,7,8,12,13)
for x in set((9,4,14)).intersection(tup):
    print tup.index(x)
Bei dieser Herangehensweise weiß man aber natürlich nur, ob es Fundstellen gibt und man kennt die Positionen, man weiß aber nicht, welche Zahl wo gefunden wurde. Es bleibt weiterhin die Frage offen, was genau du vor hast. Oder ist das ein Geheimnis? Vielleicht gibt es einen wesentlich effizienteren Algorithmus für dein Problem.

Verfasst: Mittwoch 24. März 2010, 07:07
von snafu
joh# hat geschrieben:Das Tupel ist in diesem Fall nur 3 Elemente lang, wobei für jedes Element nur 4 Zahlenwerte
möglich sind, hält sich also alles in Grenzen.
Ist damit also sowas gemeint?

Code: Alles auswählen

values = [(1,2,3), (2,3,4), (3,4,1)]
wanted = set([4,1,2])
Oder heißt die Angabe, dass die 3 Elemente 4 verschieden Werte aus dem Bereich von bspw. 1-50 haben?

Code: Alles auswählen

values = [(34,12,45,1), (4,8,23,16), (50,33,34,2)]
Irgendwie deckt sich das aber alles nicht mit dem eingangs gemachten Beispiel von dir. Also, was willst du genau? Weißt du überhaupt, was du willst? ;)

Verfasst: Mittwoch 24. März 2010, 10:21
von joh#
@numerix, snafu
snafu hat geschrieben:Vielleicht lohnt es sich, über ein Set zu gehen:
. . .
Oder ist das ein Geheimnis? .
[[na google/Schäuble&Co schlafen wohl noch ... :) ]]
Ich hab doch in einem anderen Beitrag schon mal nach einem
Skat Problem angefragt...
Was ich also letztlich (verstehen) will, wie man für jede Möglichkeit des
Spielverlaufs ab Stich 6 (das sind die erwähnten 1728000) die
für die jeweiligen Spieler eingebrachten Augensummen berechnet,
nätürlich mit dem Ziel, die richtige Karte auszuwählen.
Und dazu muß natürlich irgendwann mal der Besitzer des jeweiligen
Stichs ermittelt werden.

snafu hat geschrieben: Vielleicht gibt es einen wesentlich effizienteren Algorithmus für dein Problem
bis jetzt existiert eine liste mit allen möglichen Kombnationen s.o., mit Referenzen auf die aktuelle Kartensituation.

Verfasst: Mittwoch 24. März 2010, 15:42
von numerix
Wenn du dir einmal die Mühe machen würdest, exakt zu benennen, wie viele verschiedene und welche Werte in wie vielen verschiedenen Tupeln welcher Länge und mit welchen minimalen und maximalen Werten zu suchen sind, würde das die Chance, dass noch jemand eine Idee zur Performance-Steigerung hat, enorm erhöhen.

Verfasst: Mittwoch 24. März 2010, 17:18
von joh#
numerix hat geschrieben:Wenn du dir einmal die Mühe machen würdest, exakt zu benennen, wie viele verschiedene und welche Werte in wie vielen verschiedenen Tupeln welcher Länge und mit welchen minimalen und maximalen Werten zu suchen sind, würde das die Chance, dass noch jemand eine Idee zur Performance-Steigerung hat, enorm erhöhen.
...also, wenn der Tupel in dem gesucht wird (V,M,H) ist, dann
sind für V, für M und auch für H jeweils folgende Zahlen möglich:

Code: Alles auswählen

0x01000000
0x01010000
0x01020000
0x01030000
0x00010000
0x01050000
0x01060000
0x01070000

0x02000000
0x02010000
0x02020000
0x02030000
0x00020000
0x02050000
0x02060000
0x02070000

0x03000000
0x03010000
0x03020000
0x03030000
0x00030000
0x03050000
0x03060000
0x03070000

0x04000000
0x04010000
0x04020000
0x04030000
0x00040000
0x04050000
0x04060000
0x04070000
0x63630000
jeder Block steht dabei für eine Farbe, die als höchstwertigstes
Byte codiert ist, danach kommt der eigentliche Codebyte der Karte,
benutzt wird das z.z. in folgendem Code:

Code: Alles auswählen

for crd in (0x00010000,0x00020000,0x00030000,0x00040000):
    if crd in (V,M,H):          
        owner=(V,M,H).index(crd)
        break

Verfasst: Mittwoch 24. März 2010, 19:31
von snafu
joh# hat geschrieben:[[na google/Schäuble&Co schlafen wohl noch ... :) ]]
Ich hab doch in einem anderen Beitrag schon mal nach einem
Skat Problem angefragt...
Um ehrlich zu sein, interessieren mich irgendwelche Skat Probleme nicht. ;P Ich lese hier sowieso nur einen Bruchteil der Threads. Wenn nicht schon bei der Überschrift, dann merke ich doch meist nach den ersten 3 Sätzen eines Threads, dass ich eigentlich gar keine Lust auf das Thema habe. :)