Optimizasyon Algoritmaları Şampiyonası. - sayfa 69

 
Andrey Dik :

  Kalın harflerle görüyor musun? Daha büyük değer daha iyidir. En yüksek sayıyı bulan kazanır.

"Görev açık biçimde olmalıdır" ne anlama geliyor?

İyi.

1. Metinde 500 karakter olacaktır. Sadece harfler. Sözcükler arasında boşluk ve noktalama işareti yok .

2. Metin hakem tarafından derlenecek ve sayı şeklinde FF'ye yerleştirilecektir.

3. Yoldan sapmayalım.

 
Реter Konow :

İyi.

1. Metinde 500 karakter olacaktır. Sadece harfler. Sözcükler arasında boşluk ve noktalama işareti yok .

2. Metin hakem tarafından derlenecek ve sayı şeklinde FF'ye yerleştirilecektir.

3. Yoldan sapmayalım.

Bir hakem varsa (ve onu nereden alacağız?), o zaman ben de katılabileceğim. Olmazsa, ben katılamayacağım ve görevler yapacağım, bensiz rekabet edeceksiniz.

MQ temsilcilerinden herhangi biri bu konuyu izliyorsa - yanıt verin! Müsabaka için bir hakeme ihtiyacımız var.

Birisi yanıt verirse, bu kişiye metin eklemesi için görev kodunu vereceğim.

Bu sorunu çözdükten sonra daha da ilginç olacak, söz veriyorum.

 

Andrey Dik :

Birisi yanıt verirse, bu kişiye metin eklemesi için görev kodunu vereceğim.


Görev kodu bilgisi (özellikle kendi takdirinize bağlı olarak oluşturma yeteneği) bir avantajdır.

Görev kodu tüm katılımcılar tarafından bilinmeli veya hiçbir katılımcı tarafından bilinmemelidir.

Herkesin görev kodunu bildiğini varsayalım. Ne olmuş? Ana şey sorunu çözmektir.

 
Реter Konow :

Görev kodu bilgisi (özellikle kendi takdirinize bağlı olarak oluşturma yeteneği) bir avantajdır.

Görev kodu tüm katılımcılar tarafından bilinmeli veya hiçbir katılımcı tarafından bilinmemelidir.

Herkesin görev kodunu bildiğini varsayalım. Ne olmuş? Ana şey sorunu çözmektir.

Neden bu kadar inanılmazsın?! Sana kodu göstereceğim! Sadece yargıç derler.

Herkes kodu görecek, FF'de nasıl ve neyin dikkate alındığı açık olacak, ancak hakim metnini girecek ve doğru çözümün bulunması gerekecek. Kodu bilmek size yardımcı olmaz.

 
Genel olarak, ciddi hazırlıklara başlarım.
 
Andrey Dik :

Bu sorunu çözdükten sonra daha da ilginç olacak, söz veriyorum .

Frankenstein yaşıyor
 
Реter Konow :
Genel olarak, ciddi hazırlıklara başlarım.

Tam zamanı.

not. neden uv. MQ temsilcileri buraya gelmiyor. FF'yi derleme için kime aktaracağız?

 
#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 değişkeni, arama dizesini içerir.

Optimizasyon algoritmanızla satırı okumayı deneyin.

Yöneticiler: Lütfen Kod değişkeninin içeriğini rastgele metinle (noktalama işaretli ve özel karakterler içermeyen Rus dilinde büyük harflerle düz metin) 300 ... 800 karakter sayısıyla değiştirin, böylece dize Anahtar dizesinden karakterler içerir , derleyin ve bu dala koyun. Satırı okumaya çalışacağız.

Artık Code değişkeninde 49 karakter var. Buna göre, FF'nin olası maksimum değeri 49.0 olabilir (dizedeki tüm karakterlerle eşleşir). Algoritmam şimdi 100.000 FF çalıştırmada 47.0 ve 1000 çalıştırmada yaklaşık 25.0 sonuç gösteriyor.

 
İyi. Her şey açık ve anlaşılır. Bir algoritma yapıyorum.
 
Ve onu şampiyonaya koymak için sorun neydi???!!!