Xte Schere, Sttein Papier Variante

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
wwwheimer
User
Beiträge: 25
Registriert: Sonntag 17. Juli 2011, 16:35

@BlackJack, Du hast doch bestätigt, dass im Ergebnis sich meine aus Dreiern erzeugten
Sequenzen nicht von denen unterscheiden, die aus einzelnen Zeichen zusammengesetzt
werden. Warum machst Du, macht Ihr, daraus so ein grosses Problem? In meinen Augen
st das jetzt schon irrational: Es spielt zwar keine Rolle, wie ich die Sequenzen erzeuge,
aber ich habe sie so zu erzeugen 'wie man es macht'!

Also, Ihr könnt mich gern in eine Eso-Ecke stecken, wenn ihr nur aufhört an meiner
Dreierteilung zu nörgeln. 8)

Jetzt will ich die nächste Funktion angehen und mir einen 'Rangier-Bahnhof' für meine
Sequenzen basteln. Was sich dazu am besten eignet - Tupel, Listen, oder was sonst noch
in Frage kommt, das kann ich nicht abschätzen. Was ist dazu wohl am besten geeignet.

BlackJack, bevor ich es vergesse. Du hattest mich darauf hingewiesen, dass ich 'return
zu einer Funktion' mache. Aber einen Unterschied in der Wirkung kann ich nicht feststellen.
Ob ich return mit oder ohne Klammer schreibe, scheint keine Rolle zu spielen. Dass ich da
überhaupt Klammern benutzt habe, war ein Zufall. Vielleicht kannst Du mir dieses
Verhalten des Interpreters erklären, der ist doch sonst so pingelig. Auch dass ich der
Funktion Int- u. Str-Zeichen übergeben kann, irritiert mich.
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Wir haben doch nie behauptet, dass man mit den Dreiergruppen nicht alle Kombinationen erzeugen könnte. Unsere Aussage ist, dass die Gruppierung in jeweils drei Elemente unnötig ist, da sich die Schlangen genau so gut durch beliebige einzelne zufällige Werte erzeugen lassen. Du machst es also komplizierter als es ist. Das problematische daran ist, dass du nicht verstehst, oder nicht verstehen willst, dass deine Erzeugung unserer entspricht; nur komplizierter und unnötig mit den Längen als Vielfaches von 3.

Du wirst nicht deshalb in die Eso-Ecke geschoben, weil du die Dreierteilung benutzt, sondern weil du sie mit esoterisch anmutenden Argumenten "begründest". Fange doch einfach an dir selber die Wahrscheinlichkeiten zu berechnen, das sind hier ja immer nur ein paar Multiplikationen. Du kannst ja gerne an deine sinnvolle Aufteilung glauben, die Zahlen sprechen leider gegen dich. Im Prinzip erhälst du am Ende eine 3*n lange zufällige Zeichenkette und willst damit Muster in einer anderen finden. Das wird relativ schwer ;-)

Daher noch einmal mein Hinweis: rechne dir die Wahrscheinlichkeiten aus, überlege dir dann, ob deine Sequenzen noch sinnvoll sind oder nicht. Das Ergebnis haben wir dir ja bereits vorweg genommen, außer du kommst jetzt noch mit dem riesigen magischen Verfahren, welches du bisher vergessen hast zu erwähnen ^^ Am Ende wirst du das Problem mit einem wahrscheinlichkeitstheoretischem Ansatz oder stochastischem Prozess modellieren müssen, sonst wirst du keine vernünftigen Aussagen über deinen Ansatz treffen können.

Zum Thema Listen/Tupel/Dictionaries: Listen solltest du immer dann verwenden, wenn du die Liste selbst noch anpassen möchtest, also Elemente aus ihr löschen oder hinzufügen. Tupel bieten sich dann an, wenn die Anzahl der Elemente vorher bekannt und du die Sequenz nicht mehr ändern möchtest. Dictionaries brauchst du dann, wenn du einen Schlüssel und ein Wert hast, welcher duch den Schlüssel repräsentiert wird. Im Prinzip sind Listen Spezialfälle von Dictionaries.

Zum `return`: Python wirft keinen Fehler wenn du Klammern setzt, da der Ausdruck `return (x)` korrekt ist. In diesem Fall erzeugen die Klammern einen einfachen geklammerten Ausdruck, welcher sich zu `x` vereinfachen lässt. Im Prinzip wie `(42*23+1)` das selbe ist wie `42*23+1`.

Sebastian

Edit: Zu den Typen dar Parameter: du kannst sowohl Integer als auch Strings, so wie alle anderen Typen übergeben, da Python mit den Typen dynamisch umgeht. Erstmal ist alles was du an einen Namen binden kannst ein Objekt, dies kannst du auch als Parameter übergeben. Erst wenn du auf den Objekten Operationen ausführst werden Typen - und zwar sehr streng - getestet. Einfache Beispiele: `1+2`. `2.0+3.0`, `"abc"+"cde"`. Im ersten Fall benutzt du den `+`-Operator für die Addition von Integern, im zweiten Fall für die Addition von rationalen Zahlen und im dritten hängst du zwei Strings aneinander. `+` ist dabei eigentlich nichts anderes als eine Funktion, welche die Typen der Parameter testet und dann die richtige Operation auswählt.
Das Leben ist wie ein Tennisball.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Ich möchte die Diskussion noch einmal voran bringen: Lassen wir mal diese 3er-Sequenzen außen vor, denn immerhin sollte nun klar sein, dass man sie so wie Du erzeugen kann, oder eben auch einfacher. Sei es drum. Aber wozu dienen sie? Wozu brauchst Du diese Sequenzen im Spiel? Diese elementare Frage habe ich noch nicht begriffen... bzw. Du noch nicht beantwortet. Irgend wann ging es mal um eine KI, dann wieder nicht... ich bin da out of sync mit Dir!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
EyDu
User
Beiträge: 4881
Registriert: Donnerstag 20. Juli 2006, 23:06
Wohnort: Berlin

Hallo.

Sequenzen zu analysieren scheinen mir ein ganz vernünftiger Weg zu sein um Spielzüge des Gegners, so lange dieser sich nicht vollkommen zufällig verhält, vorauszusagen. Ich habe das einfach mal mit einigen n-Grammen versucht und die Ergebnisse sind recht brauchbar. Im Prinzip sind das natürlich nur bedingte Wahrscheinlichkeiten der vorangegangenen Züge Z1, Z2, ..., Zm für den Nächsten Zug des Gegners X. Ich hatte bisher noch nicht die Motivation dazu, darüber könnte man natürlich auch herausfinden, wie groß n sein sollte, in wie weit Züge von einander unabhängig sind, ob es sinnvoll ist mehrere n-Gramme für die Voraussagen zusammen zu werfen und eine Voraussage darüber treffen, wie groß die Wahrscheinlichkeit ist, dass der Gegner gerade einen Strategiewechsel durchgeführt hat.

Ich bin mir sicher, dass dieser Ansatz schon einmal getester wurde, er ergibt sich auch recht natürlich. Vielleicht sollte man einfach mal nach Papern oder Beiträgen dazu suchen. Wenn die Motivation wieder da ist ^^

Sebastian
Das Leben ist wie ein Tennisball.
Antworten