मेथेमेटिका
फिर से शुरू करने का फैसला किया, अब जब मैं खेल के नियमों को समझता हूं (मुझे लगता है)।
लंबाई के अनूठे यादृच्छिक रूप से बनाए गए "शब्दों" (केवल निचला मामला) का एक 10000 शब्द शब्दकोश 3. इसी तरह के अन्य शब्दों में लंबाई 4, 5, 6, 7 और 8 के तार शामिल थे।
ClearAll[dictionary]
dictionary[chars_,nWords_]:=DeleteDuplicates[Table[FromCharacterCode@RandomInteger[{97,122},
chars],{nWords}]];
n=16000;
d3=Take[dictionary[3,n],10^4];
d4=Take[dictionary[4,n],10^4];
d5=Take[dictionary[5,n],10^4];
d6=Take[dictionary[6,n],10^4];
d7=Take[dictionary[7,n],10^4];
d8=Take[dictionary[8,n],10^4];
g
जाँच करने के लिए शब्दकोश का वर्तमान संस्करण लेता है। शीर्ष शब्द चक्रीय वेरिएंट (यदि कोई मौजूद है) के साथ जुड़ा हुआ है। शब्द और उसके मिलान आउटपुट सूची में out
, संसाधित शब्दों के लिए जोड़े जाते हैं । आउटपुट शब्द शब्दकोश से हटा दिए जाते हैं।
g[{wds_,out_}] :=
If[wds=={},{wds,out},
Module[{s=wds[[1]],t,c},
t=Table[StringRotateLeft[s, k], {k, StringLength[s]}];
c=Intersection[wds,t];
{Complement[wds,t],Append[out,c]}]]
f
सभी शब्द शब्दकोश के माध्यम से चलता है।
f[dict_]:=FixedPoint[g,{dict,{}}][[2]]
उदाहरण 1 : वास्तविक शब्द
r = f[{"teaks", "words", "spot", "pots", "sword", "steak", "hand"}]
Length[r]
{{"स्टेक", "टीक्स"}, {"हैंड"}, {"पॉट्स", "स्पॉट"}, {"तलवार", "शब्द"}}
4
उदाहरण 2 : कृत्रिम शब्द। लंबाई के तारों का शब्दकोश 3. पहला, समय। फिर चक्र शब्दों की संख्या।
f[d3]//AbsoluteTiming
Length[%[[2]]]
5402
शब्द की लंबाई के एक समारोह के रूप में समय । प्रत्येक शब्दकोष में 10000 शब्द।
मैं विशेष रूप से ओ के संदर्भ में निष्कर्षों की व्याख्या करने का तरीका नहीं जानता। सरल शब्दों में, तीन वर्ण शब्दकोष से चार वर्ण शब्दकोश में समय लगभग दोगुना हो जाता है। समय 8 में से 4 अक्षरों के माध्यम से लगभग लापरवाही से बढ़ता है।