[Arşiv] Ticaretle ilgisi olmayan saf matematik, fizik, kimya vb. beyin jimnastiği bulmacaları - sayfa 451
Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
1. Genel olarak, miktar üzerindeki kısıtlamaları kaldırmak gerekir. Tüm argümanlar temelde aynı kalır, sadece daha fazlası vardır.
2. Alıntıda Cray 1'in gerekli olduğu gerçeğine bakılırsa, algoritması sizinkinden daha az optimize edilmiş :)
1. Genel olarak, çalışmayacak - çarpanlara ayırma tablom zaten SMax=3400'de belleğe sığmıyor.
Belirli bir SMax için maksimum ürün için lemma ile ilgili herhangi bir ilerleme var mı?
İşte 3300 için çıktı:
2011.01.15 19:18:12 MetaSage (EURUSD,M1) //+---- Maksimum miktar = 3300 -------------------+
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=89; p=1168; a=16; b=73
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:18:06 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:18:06 MetaSage (EURUSD,M1) //+---- Maksimum miktar = 3300 -------------------+
.
2. Hayır, sadece mql5 çok hızlı ateşlenen bir dildir... :)
Ve ne kadar süre saydın? 5 saniye değil...
SMax=3350 ile kontrol edildi. Sonuç aynı. Bir dakika kadar sayıyor, hatta daha az.
Şimdi ana sınırlama hafızadır. Çarpanlara ayırma tablosunu sınırlamak gerekir.
Mevcut sürüm PMax=SMax*(SMax/2-1). Daha da azaltabilir misin? İzin verir misiniz?
Bana öyle geliyor ki, PMax<=SMax*(sqrt(SMax)-1) olduğu kolayca kanıtlanabilir. Şimdi çalıştırmayı deneyeceğim, eğer homurdanıyorsa, bu yanlış demektir. :)
İşe yaramadı (masa yapıldı ama küçük çıktı), ama bir çözüm daha elde etmeyi başardık (!) :-)
2011.01.15 19:40:28 MetaSage (EURUSD,M1) Dizi 'MetaSage.mq5' içinde aralık dışında (100,47)
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=89; p=1168; a=16; b=73
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 19:40:24 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //+---- Maksimum miktar = 4000 -------------------+
2011.01.15 19:40:24 MetaSage (EURUSD,M1) //============== BAŞLANGIÇ ==================== ======
Şimdi bunların sadece potansiyel çözümler değil, gerçek çözümler olduğundan emin olmak istiyorum.
Tamam, daha fazla düşünebiliriz, örneğin 10000 gibi bir sınır koyabiliriz.
Not: Bu, 3300'deki tabloda kaç numaranız var?
3300*(3300/2-1) ~ 5 milyon?
1. Şimdi bunların sadece potansiyel çözümler değil, gerçek çözümler olduğundan emin olmak istiyorum.
Tamam, daha fazla düşünebilirsiniz, örneğin 10000 gibi bir sınır koyarak.
2. PS 3300'deki tabloda kaç numaranız var?
3300*(3300/2-1) ~ 5 milyon?
1. Bir betik yardımıyla emin olmanız gerekir. Test sürümüne dönüştürün. Hadi yapalım ama önce PMax ile ilgilenelim.
2. EVET.
İşte masanın büyüklüğü ile poshamanit. SMax=4100 ile sonuçlar alındı.
PMax şu şekilde verildi: SMax*(uint)(SMax/6-1) = 2796200
2011.01.15 20:21:29 MetaSage (EURUSD,M1) //+---- Maksimum miktar = 4100 -------------------+
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=343; P=9952; a=32; b=311
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=163; P=4192; a=32; b=131
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=137; P=4672; a=64; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=127; P=1776; a=16; b=111
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=89; p=1168; a=16; b=73
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=65; P=244; a=4; b=61
2011.01.15 20:21:18 MetaSage (EURUSD,M1) S=17; P=52; a=4; b=13
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //+---- Maksimum miktar = 4100 -------------------+
2011.01.15 20:21:18 MetaSage (EURUSD,M1) //============== BAŞLAT =================== ======
2011.01.15 20:21:00 MetaSage (EURUSD,M1) SMax*(uint)(SMax/6-1) = 2796200
.
Görüldüğü gibi ortada başka bir çözüm belirdi: S=137; P=4672; a=64; b=73
Genel olarak, miktar üzerindeki kısıtlamaları kaldırmak gerekir. Tüm argümanlar temelde aynı kalır, sadece daha fazlası vardır.
Alıntıdaki kişinin Cray 1'e ihtiyaç duyduğu gerçeğine bakılırsa, algoritması sizinkinden daha az optimize edilmiş :)
1. Kısıtlama miktarı için çekim yapamazsınız - bu görevin bir parçasıdır. Farklı miktarlar farklı sonuçlar verir.
2. Cidden, çok denedim. :)
Birkaç numara, senaryoyu hızlandırır. Birincisi ve muhtemelen en "hızlandırıcı" olanı, en başta ONCE oluşturulan çarpanlara ayırma tablosudur.
Sayıları kontrol etmenin her döngüsünde açılımların yapımını bırakmanıza izin verir - sadece tabloya bakın.
ANCAK. (!) :(
Şimdi onun boyutunda dinlendik.
Ancak, bir tablo oluşturmazsanız ve her seferinde basitçe çarpanlarına ayırırsanız, o zaman kesinlikle Cray olmadan yapmayacağız - aylar alacaktır.
Özet: Hala optimize edilecek bir şey var. :)
Düşünmek.