최적화 알고리즘 챔피언십. - 페이지 69

 
Andrey Dik :

  굵게 보이시죠? 값이 클수록 좋습니다. 가장 높은 숫자를 찾는 사람이 승자가 됩니다.

"작업은 열린 형식이어야 합니다"은(는) 무슨 뜻인가요?

좋은.

1. 텍스트는 500자입니다. 글자만. 단어 사이에 공백이 없고 구두점이 없습니다 .

2. 텍스트는 심판이 편집하여 숫자 형태로 FF에 넣습니다.

3. 방심하지 말자.

 
Реter Konow :

좋은.

1. 텍스트는 500자입니다. 글자만. 단어 사이에 공백이 없고 구두점이 없습니다 .

2. 텍스트는 심판이 편집하여 숫자 형태로 FF에 넣습니다.

3. 길을 잃지 말자.

심판이 있다면(그리고 어디에서 그를 구하나요?), 저도 참여할 수 있습니다. 그렇지 않으면 내가 참가할 수 없고 과제를 만들 것이고 당신은 나 없이 경쟁하게 될 것입니다.

MQ의 대표자가 이 스레드를 보고 있다면 응답하십시오! 우리는 대회에 심판이 필요합니다.

누군가 응답하면 이 사람에게 텍스트를 삽입할 작업 코드를 줄 것입니다.

이 문제를 풀고 나면 훨씬 더 재미있을 거라고 장담합니다.

 

Andrey Dik :

누군가 응답하면 이 사람에게 텍스트를 삽입할 작업 코드를 줄 것입니다.


작업 코드에 대한 지식(특히 자신의 재량에 따라 코드를 작성할 수 있는 기능)은 이점이 있습니다.

작업 코드는 모든 참가자가 알고 있거나 참가자가 모두 알고 있지 않아야 합니다.

모든 사람이 작업 코드를 알고 있다고 가정해 보겠습니다. 그래서 무엇? 가장 중요한 것은 문제를 해결하는 것입니다.

 
Реter Konow :

작업 코드에 대한 지식(특히 자신의 재량에 따라 코드를 작성할 수 있는 기능)은 이점이 있습니다.

작업 코드는 모든 참가자가 알고 있거나 참가자가 모두 알고 있지 않아야 합니다.

모든 사람이 작업 코드를 알고 있다고 가정해 보겠습니다. 그래서 무엇? 가장 중요한 것은 문제를 해결하는 것입니다.

왜 그렇게 믿을 수 없어?! 코드를 보여드릴게요! 판사만 편집할 것입니다.

모든 사람이 코드를 볼 수 있고 FF에서 고려되는 방법과 내용이 명확하지만 판사가 텍스트를 삽입 하고 올바른 솔루션을 찾아야 합니다. 코드를 아는 것은 도움이 되지 않습니다.

 
일반적으로 진지한 준비를 시작합니다.
 
Andrey Dik :

이 문제를 해결한 후에는 훨씬 더 재미있을 것이라고 약속 합니다.

프랑켄슈타인은 살아있다
 
Реter Konow :
일반적으로 진지한 준비를 시작합니다.

그것은 높은 시간입니다.

추신. 왜 uv야. MQ 담당자는 여기에 오지 않습니다. 컴파일을 위해 FF를 누구에게 전송할 것인가?

 
#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 변수에는 49개의 문자가 있습니다. 따라서 FF의 가능한 최대 값은 49.0(문자열의 모든 문자와 일치)이 될 수 있습니다. 내 알고리즘은 이제 100,000 FF 실행에서 47.0, 1000 실행에서 약 25.0의 결과를 보여줍니다.

 
괜찮은. 모든 것이 명확하고 이해할 수 있습니다. 알고리즘을 만들고 있습니다.
 
그리고 챔피언십에 올리는데 문제가 뭐였더라???!!!