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

 
Ve ne kadar süre saydın? 5 saniye değil...
 
Mathemat :

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... :)

 
Mathemat :
Ve ne kadar süre saydın? 5 saniye değil...
Yaklaşık bir dakika.
 
MetaDriver : verilen maksimum ürün için bir lemma ile herhangi bir ilerleme var mı?
Henüz değil, sadece buna değer mi diye merak ediyorum :)
 

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. :)

 
Bir düşüneyim.
 

İş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?

 
Mathemat :

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

 
Mathemat :

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.