Algorithmus-Optimierung Meisterschaft. - Seite 69

 
Andrey Dik:

Sehen Sie das in Fettschrift? Ein größerer Wert ist besser. Wer die höchste Zahl findet, ist der Gewinner.

Was meinen Sie mit: "Das Problem muss ergebnisoffen sein"?

Also gut.

1. Der Text soll insgesamt 500 Zeichen umfassen. Nur Buchstaben. Keine Leerzeichen zwischen den Wörtern und keine Interpunktionszeichen.

(2) Der Text wird vom Schiedsrichter zusammengestellt und als Zahlen in den FF eingetragen.

3. Lassen wir uns nicht von Nebensächlichkeiten ablenken.

 
Реter Konow:

Gut.

1. Der Text soll insgesamt 500 Zeichen umfassen. Nur Buchstaben. Keine Leerzeichen zwischen den Wörtern und keine Interpunktion.

(2) Der Schiedsrichter schreibt den Text und trägt ihn in Form von Zahlen in den FF ein.

3. Lassen wir uns nicht von Nebensächlichkeiten ablenken.

Wenn es einen Schiedsrichter gibt (und woher sollen wir einen nehmen?), werde ich auch teilnehmen können. Wenn nicht, werde ich nicht teilnehmen können und die Aufgaben zusammenstellen, Sie werden ohne mich antreten.

Wenn irgendjemand von MQ diesen Thread verfolgt, meldet euch! Wir brauchen einen menschlichen Richter für den Wettbewerb.

Wenn sich jemand meldet, werde ich dieser Person den Aufgabencode geben, mit dem sie den Text einfügen kann.

Nach der Lösung dieses Problems wird es noch interessanter sein, das verspreche ich.

 

Andrey Dik:

Wenn sich jemand meldet, werde ich dieser Person den Aufgabencode für das Einfügen von Text in das Dokument geben.


Die Kenntnis des Codes der Aufgabe (und erst recht die Möglichkeit, ihn nach eigenem Ermessen zusammenzustellen) ist von Vorteil.

Alle oder keiner der Teilnehmer sollte den Aufgabencode kennen.

Gehen wir davon aus, dass jeder den Code der Aufgabe kennt. Na und? Die Hauptsache ist, das Problem zu lösen.

 
Реter Konow:

Es ist von Vorteil, den Code des Problems zu kennen (insbesondere die Möglichkeit, ihn nach eigenem Ermessen zusammenzustellen).

Alle oder keiner der Teilnehmer sollte den Problemcode kennen.

Nehmen wir an, dass jeder den Code des Problems kennt. Na und? Die Hauptsache ist, das Problem zu lösen.

Warum sind Sie so misstrauisch?!!! Ich zeige Ihnen natürlich den Code! Nur der Richter wird sie zusammenstellen.

Jeder wird den Code sehen, Sie werden sehen, wie und was in der FF gezählt wird, aber der Richter wird seinen Text einfügen und die richtige Lösung muss gefunden werden. Die Kenntnis des Codes hilft Ihnen in keiner Weise weiter.

 
Wie auch immer, ich fange jetzt an, ernsthafte Vorbereitungen zu treffen.
 
Andrey Dik:

Wenn dieses Rätsel gelöst ist, wird es noch weitere interessante Rätsel geben, das verspreche ich.

Frankenstein lebt
 
Реter Konow:
Wie auch immer, ich fange jetzt an, ernsthafte Vorbereitungen zu treffen.

Es ist an der Zeit.

ZS: Aus irgendeinem Grund kommen die MQ-Vertreter nicht hierher. Wem werden wir den FF für die Zusammenstellung übergeben?

 
#property library
#property strict

int  countRuns    = 0; 

//+------------------------------------------------------------------+
int GetParamCount () export
{ 
  textLen = StringLen(Code);
  return (textLen);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void GetParamProperties (double &min, double &max, double &step) export
{ 
  min = 0.0;
  max = 40.0;
  step = 1.0;
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
double FF (double &param []) export
{ 
  countRuns++; 
  
  int sizeArray = ArraySize (param); 
  if(sizeArray != textLen) 
    return (0.0);
  
  int ffVolue = 0; 
  
  for (int i=0; i< textLen; i++)
  {
    if(GetCode(param [i]) == StringSubstr(Code, i, 1))
      ffVolue++;
  }
    
  return (double(ffVolue));
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
int GetCountRunsFF () export
{ 
  return (countRuns);
}
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
void PrintCodeToFile (double &param []) export
{
  int sizeArray = ArraySize (param); 
  if(sizeArray != textLen) 
  {
    Print ("Неверное количество параметров, печать в файл производится не будет!");
    return;
  }
  
  string code = "";
  
  for(int i=0; i<textLen; i++)
  {
    code+=GetCode (param[i]);
  }
  
  int handle = FileOpen ("decodeFF.csv", FILE_READ|FILE_WRITE|FILE_ANSI|FILE_CSV);
  
  if(handle==INVALID_HANDLE)
  {
    Print ("Ошибка записи в файл востановленного текста ФФ. Ошибка: "+ (string)GetLastError()); 
    return;
  }
  FileWriteString(handle, code);
  FileClose (handle);
}
//+------------------------------------------------------------------+

string GetCode (double param)
{
  int p = (int) MathRound (param);
  if(p <0)
    p = 0;
  if(p > 40)
    p = 40;

  return (Key [p]);
}

string Key [41] = {"а", "б", "в", "г", "д", "е", "ё", "ж", "з", "и", "й", "к", "л", "м", "н", "о", "п", "р", "с", "т", "у", "ф", "х", "ц", "ч", "ш", "щ", "ъ", "ы", "ь", "э", "ю", "я", ";", ":", ".", ",", "-", "?", "!", " "};
int textLen = 0;
string Code = "редко научная статья сочетает в себе эти два типа";

Die Variable Code enthält die gesuchte Zeichenfolge.

Versuchen Sie, die Zeichenfolge mit Ihrem Optimierungsalgorithmus zu lesen.

Administratoren: Bitte ersetzen Sie den Inhalt der Code-Variable durch einen beliebigen Text (normaler russischer Text mit Interpunktion und ohne Sonderzeichen) mit der Anzahl von 300 Zeichen ... 800, damit die Zeichenkette Zeichen aus der Zeichenkette Key enthält, kompilieren und in diesen Zweig stellen. Wir werden versuchen, die Zeichenfolge zu lesen.

Die Variable Code enthält derzeit 49 Zeichen. Dementsprechend kann der maximal mögliche Wert FF 49,0 (eine Übereinstimmung aller Zeichen in der Zeichenkette) ausgeben. Mein Algorithmus zeigt nun ein Ergebnis von 47,0 für 100'000 FF-Läufe und etwa 25,0 für 1000 Läufe.

 
Das ist gut. Alles klar und übersichtlich. Durchführung des Algorithmus.
 
Was war das Problem, das für die Meisterschaft zu veröffentlichen?!?!!