Чемпионат Алгоритмов Оптимизации. - страница 69

 
Andrey Dik:

 Выделенное жирным видите? Большее значение - лучше. Кто найдет наибольшее число - тот победитель. 

Что значит "Задача должна быть в открытом виде?" 

Хорошо.

1. Всего в тексте будет 500 символов. Только буквы. Без пробелов между словами и без знаков препинания.

2. Текст составит рефери и вложит его в ФФ ввиде чисел.

3. Давайте не отвлекаться на второстепенные вопросы.

 
Реter Konow:

Хорошо.

1. Всего в тексте будет 500 символов. Только буквы. Без пробелов между словами и без знаков препинания.

2. Текст составит рефери и вложит его в ФФ ввиде чисел.

3. Давайте не отвлекаться на второстепенные вопросы.

Если будет рефери (а где мы его возьмём?) то я тоже смогу участвовать. Если не будет, то я не смогу участвовать и буду составлять задачи, будете соревноваться без меня.

Если кто из представителей MQ смотрит эту ветку - отзовитесь! Нужен человек-судья для соревнований.

Если кто откликнется, то я передам этому человеку код задачи для вставки в него текста.

После решения этой задачи будут ещё более интересные, я обещаю. 

 

Andrey Dik:

Если кто откликнется, то я передам этому человеку код задачи для вставки в него текста.


Знание кода задачи (тем более возможность его составить по своему усмотрению) - это преимущество.

Код задачи должны знать все участники или никто из участников.

Предположим, что код задачи знают все. Ну и что? Главное, - решить задачу.

 
Реter Konow:

Знание кода задачи (тем более возможность его составить по своему усмотрению) - это преимущество.

Код задачи должны знать все участники или никто из участников.

Предположим, что код задачи знают все. Ну и что? Главное, - решить задачу.

Что же Вы такой недоверчивый то?!!! Покажу я конечно код! Компилировать только будет судья.

Код увидят все, будет видно как и что считается в ФФ, но судья вставит свой текст и правильное решение станет нужно найти. Вам ничем не поможет знание кода.  

 
В общем начинаю серьзную подготовку.
 
Andrey Dik:

После решения этой задачи будут ещё более интересные, я обещаю

Франкенштейн жив
 
Реter Konow:
В общем начинаю серьзную подготовку.

Давно пора.

ЗЫ. Почему то ув. представители MQ не заходят сюда. кому же мы будем передавать ФФ для компила? 

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

 В переменной Code содержится искомая строка.

Попробуйте прочитать строку с помощью своего алгоритма оптимизации.

Администраторам: прошу заменить содержимое переменной Code на произвольный текст (обычный текст прописными буквами русского языка со знаками пунктуации и без специальных знаков) количеством символов 300 ... 800 так, что бы строка содержала в себе символы из строки Key, скомпилируйте и положите в этой ветке. Мы попробуем прочитать строку.

Сейчас в переменной Code 49 символов. Соответственно максимально возможное значение FF может выдать 49.0 (совпадение всех символов в строке). Мой алгоритм показывает сейчас результат 47.0 при 100'000 запусков ФФ и около 25.0 при 1000 запусков.

 
Отлично. Все ясно и понятно. Делаю алгоритм.
 
А в чем была проблема, это выставить на чемпионате???!!!
Причина обращения: