[Arşiv] Ticaretle ilgisi olmayan saf matematik, fizik, kimya vb. beyin jimnastiği bulmacaları - sayfa 509

 

Hokey oyuncuları bırakmak istemediler. Esnememiz için aptalca bir umutla, kapsamlı bir senaryo yazdım. Ayrıca "yok" yazıyor.

Belki senaryoda ne esnedi? İsteyenler kontrol edebilir.

// Komut dosyası düzeltildi. Kritik olmayan bir bağlantı vardı. Sonuç değişmedi.

Dosyalar:
hockey_1.mq5  2 kb
 
MetaDriver :

Hokey oyuncuları bırakmak istemediler. Esnememiz için aptalca bir umutla, kapsamlı bir senaryo yazdım. Ayrıca "yok" yazıyor.

Belki senaryoda ne esnedi? İsteyenler kontrol edebilir.

// Komut dosyası düzeltildi. Kritik olmayan bir bağlantı vardı. Sonuç değişmedi.

Ben de sonra aynısını yaptım. Cevap aynı! :)))
 
MaxZ :
Ben de sonra aynısını yaptım. Cevap aynı! :)))
Sakıncası yoksa kaynağı göster. Algoritmanızla ilgileniyor. Kişisel olarak mümkündür.
 

Alnında algoritma. Düşünmeden yazdım (3-5 dakika). Uzun süre sayar! :D

 for ( int A6 = 1 ; A6 <= 6 ; A6++)
for ( int A5 = 1 ; A5 <= 6 ; A5++)
for ( int A4 = 1 ; A4 <= 6 ; A4++)
for ( int A3 = 1 ; A3 <= 6 ; A3++)
for ( int A2 = 1 ; A2 <= 6 ; A2++)
for ( int A1 = 1 ; A1 <= 6 ; A1++)
for ( int B6 = 1 ; B6 <= 6 ; B6++)
for ( int B5 = 1 ; B5 <= 6 ; B5++)
for ( int B4 = 1 ; B4 <= 6 ; B4++)
for ( int B3 = 1 ; B3 <= 6 ; B3++)
for ( int B2 = 1 ; B2 <= 6 ; B2++)
for ( int B1 = 1 ; B1 <= 6 ; B1++)
   if (A6 != A5 && A6 != A4 && A6 != A3 && A6 != A2 && A6 != A1
                && A5 != A4 && A5 != A3 && A5 != A2 && A5 != A1
                            && A4 != A3 && A4 != A2 && A4 != A1
                                        && A3 != A2 && A3 != A1
                                                    && A2 != A1
    && B6 != B5 && B6 != B4 && B6 != B3 && B6 != B2 && B6 != B1
                && B5 != B4 && B5 != B3 && B5 != B2 && B5 != B1
                            && B4 != B3 && B4 != B2 && B4 != B1
                                        && B3 != B2 && B3 != B1
                                                    && B2 != B1
    && A6 != B6 && A5 != B5 && A4 != B4
    && A3 != B3 && A2 != B2 && A1 != B1)
   {
      int A = A6* 100000 +A5* 10000 +A4* 1000 +A3* 100 +A2* 10 +A1;
      int B = B6* 100000 +B5* 10000 +B4* 1000 +B3* 100 +B2* 10 +B1;
      if ( MathMod (A, B) == 0 )
         Print (A6,A5,A4,A3,A2,A1, "/" ,B6,B5,B4,B3,B2,B1, "=" ,A/B);
   }

Not: sonra B-th dizileri üzerinde çok daha az yineleme yapmanın mümkün olacağını fark ettim ...

 
Anladım teşekkürler!
 
MaxZ :

Alnında algoritma. Düşünmeden yazdım (3-5 dakika). Uzun süre sayar! :D

Not: sonra B-th dizileri üzerinde çok daha az yineleme yapmanın mümkün olacağını fark ettim ...

Vapche, bu numaralandırmanın nasıl ve ne ölçüde optimize edilebileceği ile ilgilenmektedir.

Burada bir fren makinesinde ~ 875 ms var. (17516 msn var)

On kat daha hızlı nasıl saptırılır?

İki yedek görüyorum: (1) gereksiz numaralandırmayı kesmek, (2) doğrulamayı hızlandırmak.

Hangi fikirler?

// İsteyenleri davet ediyorum. Bir sonraki görev için mükemmel.

 
MetaDriver :

// İsteyenleri davet ediyorum. Bir sonraki görev için mükemmel.

Soruna gelince, kodu yazarken ben de düşündüm! :))) teklif etmek istedim. Ama yeni konu açmam gerektiğinden kayboldu. Kodu nasıl hızlandıracağımı biliyorum (ancak çok güzel olmayacak). Ama sadece hızlandırmak değil, aynı zamanda güzelleştirmek de istiyorum!


MetaSürücü :

Vapche, bu numaralandırmanın nasıl ve ne ölçüde optimize edilebileceği ile ilgilenmektedir.

Benim makinem de berbat... Karmaşık bir Expert Advisor'ı test edemezsiniz, ancak basit ve komplikasyonsuz bir tanesini optimize etmek uzun zaman alır! :D


MetaSürücü :

Burada bir fren makinesinde ~ 875 ms var. (17516 msn var)

On kat daha hızlı nasıl saptırılır?

İki yedek görüyorum: (1) gereksiz numaralandırmayı kesmek, (2) doğrulamayı hızlandırmak.

Hangi fikirler?

Fazladan numaralandırmayı keserseniz, yürütme süresi sonucunuza yaklaşacağını düşünüyorum (sayılardaki farka dikkatlice baktım ve "zor" diye düşündüm! Fikre gelince, düşünmeye devam ediyorum.

 

Ve 36 katlı karmaşık bir test koşulundan oluşan if'yi basit bir koşulla 36 if'ye bölerek kodumu hızlandırabilirsiniz! :)))

Kodun gözle görülür şekilde hızlanacağını düşünüyorum, ancak kesin olarak bilmek için derlemeden kaynaklanan makine talimatlarını anlamanız gerekir.

Ve genel olarak, performans konusu beni her zaman her şeyden daha az endişelendirdi.

 
MaxZ : Ve genel olarak performans konusu beni her zaman en az endişelendirmiştir.
Continue ve break deyimlerini kullanmayı sevmiyorum, ancak belki bir şey size yardımcı olabilir, özellikle de mql'de yuvalama çalışmayabilirse 36 kat
 
IgorM :
Continue ve break deyimlerini kullanmayı sevmiyorum, ancak belki bir şey size yardımcı olabilir, özellikle mql'de iç içe yerleştirme işe yaramazsa 36 kat
Eğer işe yaramasaydı, o zaman devam et'i kullanırdım... Ama hiç uğraşmak istemiyorum. İlginç olacak olsa da, başka bir algoritma uygulamak daha iyidir.