:
bazı tanımsız değerler geçmek ve ifade genişler görebilirsiniz, nasıl çalıştığını görmek için. Joey Robert'ın çözümü magicFunction1 ve Eric'in çözümü magicFunction2'yi arayalım.
magicFunction1 çok kısa ve zariftir. Bu konuda sevmediğim şey, çok büyük bir sayı listesine sahip olduğum ve birincisinin 10'dan büyük olduğu halde, hala gerekli olmayan en büyük sayıyı bulmakla ilgili tüm çalışmaları yapacağım. Ben
In[1]:= data = Table[RandomInteger[{1, 10}], {10000000}];
In[2]:= Timing[magicFunction1[data, 10]]
Out[2]= {0.017551, False}
In[2]:= Timing[magicFunction2[data, 10]]
Out[2]= {10.0173, False}
In[2]:= Timing[magicFunction3[data, 10]]
Out[2]= {7.10192, False}
In[2]:= Timing[magicFunction4[data, 10]]
Out[2]= {0.402562, False}
Dolayısıyla benim en iyi yanıt magicFunction4 olduğunu bulduk kriter yapmak
magicFunction3[lst_, val_] :=
Position[# < val & /@ lst, False, 1, 1] == {}
ve
magicFunction4[lst_, val_] :=
Cases[lst, x_ /; x >= val, 1, 1] == {}
: Bu aynı zamanda magicFunction2
için geçerlidir aşağıdaki iki çözüm geliştirdi ama hala neden magicFunction1'den daha yavaş olduğunu bilmiyorum. MagicFunction3 ve magicFunction4 arasında neden böyle büyük bir performans farkının olduğunu da görmezden geliyorum.
Teşekkürler, iyi fikir. – Nope
Sadece hecelemek için: 'magicFunction [lst_, val_]: = Max [lst]
dreeves