MT-Version Archiv. - Seite 6

 
Alexey Viktorov:

Aber laut diesem Stück Code

Der von dieser Funktion zurückgegebene Wert muss irgendwie verarbeitet werden. Was nützt es, "minus viele Neunen" zurückzugeben, wenn im restlichen Code keine Reaktion darauf erfolgt?

Bei Rückgabe eines großen Minuswertes wird dieser Durchgang an das Ende der Ergebnisse gesetzt. Wenn es überhaupt keinen Test gab (der Test wurde gestoppt, in meinem Fall bei der Eröffnung des ersten Balkens), dann gibt es nichts zu berechnen, es gibt keine Daten zu berechnen. Wenn tester_stop gesetzt ist, wird daher eine große negative Zahl zurückgegeben.

Darüber hinaus verwende ich dieses Ergebnis nirgendwo im Code, obwohl es vielleicht verwendet werden kann, aber wie - im Moment weiß ich es nicht und ich brauche es nicht.

 
Сергей Таболин:

Die Rückgabe abzüglich eines großen Wertes wird diesen Durchgang an das Ende der Ergebnisse setzen. Wenn es im Prinzip keinen Test gab (der Test wurde abgebrochen, in meinem Fall bei der Eröffnung des ersten Balkens), dann gibt es nichts zu berechnen, es gibt keine Daten zu berechnen. Wenn tester_stop gesetzt ist, wird daher eine große negative Zahl zurückgegeben.

Außerdem verwende ich dieses Ergebnis nirgendwo in meinem Code, obwohl es wahrscheinlich verwendet werden kann, aber ich weiß nicht wie, und ich brauche es derzeit nicht.

Dies ist ein sehr schlechter Ansatz für die Lösung von Aufgaben im Allgemeinen und insbesondere für die Lösung von Programmieraufgaben.

Aus irgendeinem Grund glaube ich nicht an Tests im Allgemeinen und noch weniger an die Optimierung. Deshalb kann ich Ihnen keinen konkreten Rat geben, wie Sie den Algorithmus gestalten sollen, aber ich sehe, dass Ihr Algorithmus für die Abfolge und Verarbeitung der Ergebnisse fehlerhaft ist.

Wenn vor dem Aufruf von TesterStop() mindestens ein Durchgang vorhanden sein muss, geben Sie bitte diesen einen Durchgang an. Was ist Ihr Problem? Dass ich es nicht weiß und auch nicht wissen muss? Das ist nicht richtig.

 
Сергей Таболин:

Ich verstehe alles, und ich brauche keine Krücken. Und ich musste hier nach einer Krücke suchen, um zu lesen, wofür.

Das ist möglich. Aber ich kann mich nicht erinnern, dass sich jemand darüber beschwert hätte.

Ihre Wünsche können auf viel einfachere Weise und ohne ausgeklügelten, nutzlosen Code gestaltet werden.

Anstatt INIT_PARAMETERS_INCORRECT zurückzugeben, wiegen Sie eine globale Variable, z.B. ExtTesterStop=true.

Prüfung in die erste Zeile von OnTick einfügen

void OnTick()
  {
   if(ExtTesterStop)
     {
      TesterStop();
      return;
     }
...
 
Alexey Viktorov:

Dies ist ein sehr schlechter Ansatz zur Problemlösung im Allgemeinen und insbesondere bei Programmierproblemen.

Aus irgendeinem Grund glaube ich nicht an Tests im Allgemeinen, und an Optimierung noch weniger. Daher kann ich keine spezifischen Ratschläge zur Organisation des Algorithmus geben, aber ich sehe, dass Ihr Algorithmus zur Abfolge und Verarbeitung der Ergebnisse fehlerhaft ist.

Wenn vor dem Aufruf von TesterStop() mindestens ein Durchlauf erforderlich ist, geben Sie diesen einen Durchlauf an. Was ist Ihr Problem? Dass ich es nicht weiß und nicht brauche? Das ist nicht richtig.

Alexey, nichts für ungut, aber Sie haben überhaupt nicht verstanden, warum ich TesterStop() verwendet habe. Außerdem haben Sie nicht einmal versucht, es zu tun. Da Sie nicht gelesen haben, wofür ich es verwendet habe, werde ich es kurz erklären.

Ich verwende es, um nutzlose Testdurchläufe auszusieben und die Optimierung zu beschleunigen. Insbesondere die genetische Optimierung. Deshalb brauche ich in dieser Situation nicht einmal einen Pass! Es war der Ersatz vonINIT_PARAMETERS_INCORRECT, denn im Falle ihrer großen Menge in OnInit() führte es zum Absturz der Genetik.

Ob Sie daran glauben oder nicht, ob Sie die Optimierung nutzen oder nicht, ist Ihre eigene Sache und hat nichts mit der Lösung dieses Problems zu tun ))))

Slawa:

Ihre Wünsche können auf eine viel einfachere Art und Weise gestaltet werden, ohne unnötigen Code. Sie werden zustimmen, dass es sich um denselben Rechen in einer anderen Form handelt)))

Anstatt INIT_PARAMETERS_INCORRECT zurückzugeben, wiegen Sie eine globale Variable, sagen wir ExtTesterStop=true

Prüfung in die erste Zeile von OnTick einfügen

Ich stimme zu, dass der Code etwas einfacher aussehen wird!

Der Sachverhalt ist nach wie vor derselbe. Die Annullierung des Durchlaufs in der Initialisierungsphase findet nicht statt. Der gleiche Code wird in OnInit() und OnTick() enthalten sein. Was haben wir davon?

TesterStop() wird immer noch die Stirn runzeln

TesterStop() called on 0% of testing interval

und in dieser Version von MT wird die Kontrolle ohnehin an OnTester() übergeben. Sie werden mir zustimmen, dass wir die gleichen Probleme haben, aber auf eine andere Art und Weise ))))

Es wäre schön, wenn es eine alternative Funktion gäbe, zum Beispiel TesterStopImmediately(). Für Fälle, in denen wir den Test sofort beenden müssen, indem wir die Kontrolle nicht an OnTester(), sondern direkt an OnDeinit(const int reason) übergeben...

Aber wahrscheinlich werden wir das zu unseren Lebzeiten nicht mehr erleben...

 
Сергей Таболин:

Alexey, nichts für ungut, aber Sie haben überhaupt nicht verstanden, wozu ich TesterStop() verwendet habe. Außerdem haben Sie nicht einmal versucht, es zu tun. Da Sie nicht gelesen haben, wofür ich es verwendet habe, werde ich es kurz erklären.

Ich verwende es, um nutzlose Testdurchläufe auszusieben und die Optimierung zu beschleunigen. Insbesondere die genetische Optimierung. Deshalb brauche ich in dieser Situation nicht einmal einen Pass! Es war der Ersatz vonINIT_PARAMETERS_INCORRECT, denn im Falle ihrer großen Menge in OnInit() führte es zum Absturz der Genetik.

Glauben oder nicht glauben, Optimierung nutzen oder nicht nutzen - das ist Ihre eigene Angelegenheit, die nichts mit diesem Problem zu tun hat)))

Ich habe mich nicht genau ausgedrückt, und Sie haben mich völlig missverstanden. Aber das spielt keine Rolle.

 
Alexey Viktorov:

Ich habe mich nicht präzise ausgedrückt, und Sie haben mich völlig missverstanden. Aber das spielt keine Rolle.

Das ist wichtig. Ich glaube, dass alle Probleme im Allgemeinen das Ergebnis von Missverständnissen sind. Aber der Mensch wurde mit der Sprache geboren, um zu sprechen, um zu verhandeln )))) Natürlich glaubt jeder, dass er im Recht ist, aber Sturheit in dieser Frage ist ein Zeichen von ... Dummheit. Erklären Sie also bitte, was Sie meinen. Ich persönlich bin bereit zu lernen)))

 
Сергей Таболин:

Das ist wichtig. Ich glaube, dass alle Probleme im Allgemeinen das Ergebnis von Missverständnissen sind. Aber der Mensch wurde mit der Sprache geboren, um zu sprechen, um zu verhandeln )))) Natürlich glaubt jeder, dass er im Recht ist, aber Sturheit in dieser Frage ist ein Zeichen von ... Dummheit. Erklären Sie also bitte, was Sie meinen. Ich persönlich bin bereit zu lernen ))))

Was können wir von einer Person lernen, die Anzeichen von Ungeschicklichkeit zeigt? Oder sprechen Sie von sich selbst? Sie sind es, die stur sind und nicht das Minimum an Code eingeben wollen, um zu verstehen, was Sie wollen. Nun, ich habe bereits gesagt, dass ich nicht an der Optimierung beteiligt bin und daher nie testerbezogene Veranstaltungen genutzt habe. Meine Empfehlungen waren nur auf einen engeren Bereich ausgerichtet. Slawa hat meine Empfehlung wiederholt. Vielleicht haben Sie es anders verwendet, weil Sie nicht das bekommen, was Sie erwarten. Aus Mangel an Informationen zu diesem Thema ist dies nur eine Vermutung.

 
Alexey Viktorov:

Was können wir von einer Person mit Anzeichen von Unintelligenz lernen? Oder sprechen Sie von sich selbst? Sie sind derjenige, der die Sache hinauszögert und nicht einmal den Mindestcode einhält, um herauszufinden, was Sie wollen. Nun, ich habe bereits gesagt, dass ich mich nicht mit der Optimierung beschäftige, also habe ich nie Ereignisse im Zusammenhang mit dem Tester verwendet. Meine Empfehlungen waren nur auf einen engeren Bereich ausgerichtet. Slawa hat meine Empfehlung wiederholt. Vielleicht haben Sie es anders verwendet, weil Sie nicht das bekommen, was Sie erwarten. Aufgrund des Mangels an Informationen zu diesem Thema ist dies nur eine Vermutung.

Liest du überhaupt, was ich dir schreibe?

"Alexey, nichts für ungut, aber du hast überhaupt nicht verstanden, wozu ich TesterStop() verwendet habe. Außerdem haben Sie nicht einmal versucht, es zu tun. Da Sie nicht gelesen haben, wofür ich es verwendet habe, werde ich es kurz erklären.

Ich verwende es, um nutzlose Testdurchläufe auszusieben unddie Optimierung zu beschleunigen. Insbesondere die genetische Optimierung. Deshalb brauche ich in dieser Situation nicht einmal einen Pass! Es war der Ersatz von INIT_PARAMETERS_INCORRECT, denn wenn ihre Anzahl in OnInit() groß war, führte dies zum Absturz der Genetik..."

Welchen Teil davon verstehen Sie nicht?

P.S. Übrigens weiß Slava im Gegensatz zu Ihnen genau, wovon wir sprechen. ))
 
Сергей Таболин:

Liest du überhaupt, was ich dir schreibe?

"Alexey, nichts für ungut, aber du hast überhaupt nicht verstanden, wozu ich TesterStop() verwendet habe. Außerdem haben Sie nicht einmal versucht, es zu tun. Da Sie nicht gelesen haben, wofür ich es verwendet habe, werde ich es kurz erklären.

Ich verwende es, um nutzlose Testdurchläufe auszusieben unddie Optimierung zu beschleunigen. Insbesondere die genetische Optimierung. Deshalb brauche ich in dieser Situation nicht einmal einen Pass! Es war der Ersatz von INIT_PARAMETERS_INCORRECT, denn wenn ihre Anzahl in OnInit() groß war, führte dies zum Absturz der Genetik..."

Welcher Teil davon ist Ihnen nicht klar?

P.S. Übrigens weiß Slava im Gegensatz zu Ihnen genau, wovon wir sprechen. ))

Sergei, TesterStop() wird zum vorzeitigen Beenden von Tests verwendet. Was in diesem Fall die Ausgabe sein soll, ist Sache des Programmierers. Ich muss nicht wissen, was Sie bekommen müssen, Hauptsache, Sie hören auf zu testen. Alles andere ist im Rechenalgorithmus festgelegt.

Wenn Sie mit einer Zwischenvariante der erhaltenen Werte nicht zufrieden sind, brechen Sie die Prüfung ab und geben ein erfundenes Ergebnis aus dem Hintergrund zurück. Wenn Sie das nicht können, bedeutet das, dass Ihr Algorithmus irgendwo nicht richtig aufgebaut ist. Schließlich wird Ihnen mehr als einmal gesagt, wie Sie die Prüfung beenden können.

 
Alexey Viktorov:

Sergei, TesterStop() wird zum vorzeitigen Beenden von Tests verwendet. Und was Sie in diesem Fall bekommen müssen, ist das Geschäft eines Programmierers. Ich muss nicht wissen, was Sie besorgen müssen, die Hauptsache ist, dass Sie aufhören zu testen. Alles andere ist im Berechnungsalgorithmus festgelegt.

Wenn Sie mit einer Zwischenvariante der erhaltenen Werte nicht zufrieden sind, brechen Sie die Prüfung ab und geben ein erfundenes Ergebnis zurück. Wenn Sie das nicht können, bedeutet das, dass Sie irgendwo den falschen Algorithmus entwickelt haben. Schließlich wird Ihnen mehr als einmal gesagt, wie Sie die Prüfung beenden können.

Wenn ich Ihnen anbiete, einen Eimer Nägel zu kaufen, wird es Sie wahrscheinlich überhaupt nicht interessieren, woher ich ihn bekomme und wie viel er kostet. Ihre Antwort kann also alles Mögliche sein: nein, ich will nicht, ich will es nicht, na ja, usw.. Die Hauptsache, die Sie und ich verstehen werden. Meine Antwort in einem solchen Fall "von einer Fackel erfundenes Ergebnis", das für mich persönlich absolut klar ist.

Im Laufe dieser Untersuchung wurde deutlich, dass TesterStop() und ExpertRemove() vor dem neuen Build die Kontrolle sofort an OnDeinit() weitergegeben haben, während sie im neuen Build die Kontrolle sofort an OnTester() weitergeben (falls es einen solchen gibt). Und wenn im ersten Fall das Testergebnis ein NULL war, müssen wir jetzt mit onTester() prüfen, ob die Ausgabe bei diesen Ereignissen verfügbar war (diese Prüfung muss natürlich organisiert werden) und unsere eigene Ausgabe erstellen. Welches Ergebnis man in diesem Fall angibt (0 oder -99999999), ist eine Frage der Vorlieben.

Grund der Beschwerde: