Campionato di ottimizzazione degli algoritmi. - pagina 69

 
Andrey Dik:

Lo vedi in grassetto? Un valore più grande è meglio. Chi trova il numero più alto è il vincitore.

Cosa intendi con "Il problema deve essere aperto"?

Tutto a posto.

1. Ci sarà un totale di 500 caratteri nel testo. Solo lettere. Niente spazi tra le parole e niente segni di punteggiatura.

(2) Il testo sarà compilato dall'arbitro e messo nelle FF come numeri.

3. Non facciamoci distrarre da questioni secondarie.

 
Реter Konow:

Bene.

1. Ci sarà un totale di 500 caratteri nel testo. Solo lettere. Niente spazi tra le parole e niente punteggiatura.

(2) L'arbitro scriverà il testo e lo metterà nelle FF sotto forma di numeri.

3. Non facciamoci distrarre da questioni secondarie.

Se c'è un arbitro (e dove lo troveremo?) potrò anche partecipare. In caso contrario, non sarò in grado di partecipare e compilare i compiti, si competerà senza di me.

Se qualcuno di MQ sta guardando questo thread, si metta in contatto! Serve un giudice umano per il concorso.

Se qualcuno risponde, darò a quella persona il codice del compito per inserirvi del testo.

Dopo aver risolto questo problema sarà ancora più interessante, lo prometto.

 

Andrey Dik:

Se qualcuno risponde, darò a quella persona il codice del compito per inserirvi del testo.


Conoscere il codice del compito (e ancora di più la possibilità di comporlo a propria discrezione) è un vantaggio.

Tutti o nessuno dei partecipanti dovrebbero conoscere il codice del compito.

Supponiamo che tutti conoscano il codice del compito. E allora? La cosa principale è risolvere il problema.

 
Реter Konow:

Conoscere il codice del problema (soprattutto la possibilità di comporlo a propria discrezione) è un vantaggio.

Tutti o nessuno dei partecipanti dovrebbero conoscere il codice del problema.

Supponiamo che tutti conoscano il codice del problema. E allora? La cosa principale è risolvere il problema.

Perché sei così diffidente?!!! Ti mostrerò il codice, naturalmente! Solo il giudice lo compilerà.

Tutti vedranno il codice, si vedrà come e cosa viene contato nel FF, ma il giudice inserirà il suo testo e si dovrà trovare la soluzione corretta. Conoscere il codice non vi aiuterà in alcun modo.

 
Comunque, sto iniziando a fare dei preparativi seri.
 
Andrey Dik:

Ce ne saranno ancora di più interessanti dopo che questo sarà risolto, lo prometto.

Frankenstein vive
 
Реter Konow:
Comunque, sto iniziando a fare dei preparativi seri.

Era ora.

ZS. per qualche motivo i rappresentanti di MQ non vengono qui. chi consegneremo le FF per la compilazione?

 
#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 = "редко научная статья сочетает в себе эти два типа";

La variabile Code contiene la stringa che state cercando.

Prova a leggere la stringa usando il tuo algoritmo di ottimizzazione.

Amministratori: si prega di sostituire il contenuto della variabile Code con un testo arbitrario (testo russo regolare con punteggiatura e senza caratteri speciali) con il numero di caratteri 300 ... 800 in modo che la stringa contenga i caratteri della stringa Key, compilare e mettere in questo ramo. Cercheremo di leggere la stringa.

Ci sono 49 caratteri nella variabile Codice in questo momento. Di conseguenza, il massimo valore possibile FF può produrre 49,0 (una corrispondenza di tutti i caratteri della stringa). Il mio algoritmo mostra ora un risultato di 47,0 per 100'000 FF e circa 25,0 per 1000 corse.

 
Questo è un bene. Tutto chiaro e diretto. Fare l'algoritmo.
 
Qual era il problema, mettere questo fuori per il campionato?!?!!