Hast du SciTE4AutoIt3 installiert?
Beiträge von James
-
-
-
Ausgerechnet die ineffizienteste Methode von den dreien.
Du musst dazu nur jede Position auf dem Spielfeld rekursiv bewerten, d.h. jede Position hat einen Punktestand, der bei jedem Gewinn, der von dieser Position aus möglich ist, um 1 erhöht und bei jeder Niederlage um 1 gesenkt wird. Dazu eignet sich am besten eine Funktion die sich für jede freie Position selbst rekursiv aufruft. Ich weiß leider nicht wie ich das einfach genug erklären kann sodass es jemand der nicht ich ist versteht, von daher einfach ein bisschen probieren oder eine der anderen 2 Möglichkeiten versuchen.

-
- Tic-tac-toe ist ein gelöstes Spiel, d.h. es gibt eine Strategie die immer zum Sieg führt (oder zu einem Unentschieden, wenn beide perfekt spielen). Auf Wikipedia ist diese Strategie sehr schön erklärt.
- Brute-Force-Methode: Da es für Tic-tac-toe nicht allzu viele Möglichkeiten gibt kann man auch einfach alle möglichen Züge berechnen und dann anhand der daraus resultierenden Gewinne entscheiden, welcher Zug der langfristig beste ist. Das Ergebnis sollte zur perfekten Strategie eigentlich keinen Unterschied machen, es dauert nur um einiges länger. Wenn du den Spieler anfangen lässt ersparst du es dir aus den ersten 9 Möglichkeiten die richtige auszusuchen; bei 8 freien Feldern kann es einige Sekunden dauern. Alle weiteren Züge sollten ohne spürbare Zeitverzögerung funktionieren. Du kannst natürlich auch alles in einer Art Datenbank speichern, das lohnt sich aber denke ich nur für den ersten Zug.
- Für ein Spiel wie Tic-tac-toe eigentlich vollkommen übertrieben, aber falls du es mit künstlicher Intelligenz machen willst bieten sich künstliche neuronale Netze, genetische Algorithmen oder eine Kombination der beiden an.
-
Wenn \d eine Ziffer ist dann ist \d+ eine Folge von mindestens einer Ziffer, also einfach gesagt eine Zahl.
.*? hat denke ich keinen Unterschied gemacht, da die Einträge in einzelnen Zeilen stehen, und Zeilenumbrüche werden von . nicht erkannt.
Der Unterschied wäre folgendes:
<test>(.*)</test> | <test>A</test><test>B</test>
<test>(.*?)</test> | <test>A</test><test>B</test>
D.h. .* findet soviel wie möglich, .*? nicht. -
Statt .* würde ich .*? benutzen; außerdem solltest du \d+ verwenden, da Zahlen auch mehrstellig sein können.
-
Schau dir mal GUICtrlCreateMonthCal in der Hilfe an. Wenn du da noch einen Button einfügst und dann das Control mit GUICtrlRead ausliest hast du denke ich das was du suchst.
-
Wieviele User werden das erworbene Wissen später auch brauchen? Was nützt es Spanisch zu lernen wenn du nie in deinem Leben auf nen Spanier triffst?

Es kann aber natürlich auch sein - und das halte ich persönlich für sehr wahrscheinlich - dass du zwar im Voraus denkst, dass du das nie brauchen wirst, wenn du es dann aber gelernt hast sofort merkst, dass z.B. GAs und ANNs ein paar deiner Projekte enorm vereinfachen könnten. Somit ist es im Nachhinein für mehr Leute von Vorteil als anfangs vermutet. Genauso wie sich ein Spanier wahrscheinlich wahnsinnig freut wenn er sich verlaufen hat und du ihm eine Wegbeschreibung auf Spanisch geben kannst.

Da es momentan so aussieht als würde Thema 2 gewinnen würde ich, wenn es gewünscht ist, mich dazu bereiterklären selbst ein Tutorial zu Thema 1 zu schreiben. Das heißt ja nicht, dass minx dass dann nicht bei Gelegenheit erweitern bzw. noch mal ein komplettes Tutorial posten könnte, aber dann hätten wir gleich zu Anfang schon mal zwei von drei Themen abgedeckt.
Prinzipiell bin ich immer für Tutorials, es kann nie genug Quellen geben um neues Wissen zu erlangen.
Sehr gute Einstellung.

-
Gut zu wissen; wieder was gelernt.
Wenn du die Datei allerdings in enumicons.au3 in Examples\GUI\Advanced öffnest wird immer das selbe Icon angezeigt, d.h. es scheint mit den Standardfunktionen nicht zu funktionieren.
-
Ich hab mir mal das Bespiel der Onlinehilfe zu dem Befehl genommen und versucht die Icon-ID zu wechseln, aber da tut sich nix
Ausführbare Dateien und DLLs können mehrere Icons enthalten, .ico Dateien meines Wissens nach nicht.
Außerdem scheint sich das, wenn überhaupt ja nur auf dieses GUI-Fenster zu beziehen, dass ich ja gar nicht verwende, beim Kompilieren erhält die Exe dadurch ja kein Icon.
Stimmt. Das Icon für das Programm solltest du eigentlich beim Kompilieren einstellen können, vorausgesetzt du benutzt SciTE4AutoIt3. Das ist zumindest in den älteren Versionen so, die aktuelle Stable habe ich noch nicht getestet.
-
-
Hast du den Thread gelesen? Mit Map steht (zumindest in der Beta) nun ein nativer AutoIt-Datentyp zur Verfügung welcher sowohl als Key-Value-Struktur als auch als dynamisches Array verwendet werden kann. Importieren musst du nichts mehr.
Stimmt. Das ist aber auch nur ein Fall von vielen und wenn ich etwas anderes außer Arrays oder Maps haben will muss ich trotzdem auf Objekte zurückgreifen. Meine Aussage bezog sich mehr oder weniger auf die Aussage "Autoit soll Dinge möglichst schnell und einfach bewerkstelligbar machen;" nicht auf Maps speziell. Aber vielleicht kommt das ja alles noch, neue Features entstehen in letzter Zeit ja sowieso relativ häufig.

Verkettete Listen kannst du auch jetzt schon mit DllStructCreate erzeugen. Einziges Manko ist, dass als Value nicht Variant funktioniert.
Außerdem muss der Rückgabewert von DllStructCreate irgendwo (z.B. in einem Array) zwischengespeichert werden, auch wenn er gar nicht verwendet wird. Zum Erstellen eigener Datenstrukturen ist das also nicht optimal.
-
Gerade du solltest doch wissen wie Arrays intern im Speicher aussehen und warum ein ReDim eben so lange dauert. Da lässt sich schon prinzipbedingt nicht viel anpassen.
Es bleibt dabei: Jede Datenstruktur hat Vor-und-Nachteile und deswegen ihren jeweiligen Anwendungsfall für den es geeigneter ist als andere.
Autoit soll Dinge möglichst schnell und einfach bewerkstelligbar (tolles Wort) machen.
Eine Map hilft da ungemein.
Stimmt, aber wenn das wirklich das Ziel ist, wieso muss ich dann fast alle Datenstrukturen aus COM Objekten "importieren?" Mit einer einfach verketteten Liste könnte man zum Beispiel das ReDim Problem relativ einfach lösen, und wenn wir sowas nativ zur Verfügung hätten könnte sich auch jeder die passende Struktur für den jeweiligen Anwendungsfall aussuchen. Oder noch besser, wieso nicht gleich C- bzw. Haskell-artige Strukturen? Dann wäre man nicht mehr auf den Entwickler angewiesen und könnte sich so ziemlich jede Datenstruktur selbst zusammenbasteln. -
Da es ein Notepad++ Plugin ist sollte die DLL ja eigentlich einem bestimmten Muster folgen, sonst könnte NPP damit ja nicht umgehen. Ein Blick in die Dokumentation von Notepad++ wäre also vielleicht von Vorteil.
-
Dass Vögel fliegen können kann man zwar eigentlich schon aus dem Code rauslesen, das Programm kann solche Beziehungen aber noch nicht erkennen.
Ist jetzt behoben.
Ich hatte mir das insgesamt in etwa so vorgestellt: Ein Teil verarbeitet die Sprache, einer ist für mathematische Sachen zuständig und einer für Logik. Der Logik-Teil ist jetzt eigentlich weitestgehend fertig und diverse Berechnungen auszuführen sollte auch kein Problem sein, das einzige Problem ist also die Sprache, oder genauer gesagt, dass Deutsch/Englisch sehr unregelmäßig sind, im Gegensatz zu zum Beispiel Esperanto. Das könnte man natürlich wieder durch eine Datenbank à la AIML lösen, aber das währe dann eher ein gewaltiger Schritt zurück und soweit will ich die Qualität dann auch nicht senken.

Feedback ist natürlich jederzeit erwünscht, besonders falls jemand eine Idee für das Verarbeiten der Sprache hat.
-
Ich könnte hier https://autoit.de/www.regexr.com empfehlen. Ist sehr schön gestaltet, hat Cheatsheets etc.

Aller guten Dinge sind drei: regular expressions 101
@Topic: Mit welcher regex hast du es bisher versucht? Wie sieht dein Skript aus? Welche Daten willst du genau extrahieren? Generell ist das auf jeden Fall möglich, dass die Zeilen eine unterschiedliche Länge haben spielt keine Rolle.
-
Am einfachsten funktioniert das wahrscheinlich mit regulären Ausdrücken (StringRegExp).
-
Constants.au3 includet aber die MsgBoxConstants.au3

Hätte ich mir eigentlich denken können sollen. Danke.
-
DIe Konstanten für MsgBox sind in MsgBoxConstants.au3 (und nicht in Constants.au3) zu finden. Am besten einfach in der Hilfe nachschlagen, da steht das bei jedem Befehl dabei.
-
SciTE Lite wird bei der Installation mitgeliefert; SciTE4AutoIt3 hat einen größeren Funktionsumfang, wie z.B. das Fenster das du meinst.