गणितज्ञ, 82 बाइट्स
@ जेनी_मैथी के जवाब से सबमिशन के पैटर्न का उपयोग ...
(d=x=1;y=0;f:=(10^x-1)10^y;n:=If[y>0,y--;x++,y=d;d++;x=1];While[Mod[f,#]!=0,n];f)&
इनपुट:
[17]
आउटपुट:
9999999999999999
और कम से @ साथ Jenny_mathy के जवाब टिप्पणियों में तर्क के सापेक्ष @Phoenix ... RepeatedTiming[]
इनपुट करने के लिए आवेदन के [17]
लिए देता है
{0.000518, 9999999999999999}
इतना आधा मिलीसेकंड। थोड़ा बड़े इनपुट पर जा रहे हैं [2003]
:
{3.78, 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999}
4 सेकंड के तहत थोड़ा सा।
परीक्षण तालिका: पहले 30 सकारात्मक पूर्णांकों पर, परिणाम हैं
{9, 90, 9, 900, 90, 90, 999999, 9000, 9, 90, 99, 900, 999999,
9999990, 90, 90000, 9999999999999999, 90, 999999999999999999, 900,
999999, 990, 9999999999999999999999, 9000, 900, 9999990, 999,
99999900, 9999999999999999999999999999, 90}
स्पष्टीकरण: यहां एकमात्र जादू कस्टम इट्रेटर ("इटेटर" सीएस अर्थ में है, एम'एमए अर्थ नहीं)
n := If[ y>0 , y-- ; x++ , y=d ; d++ ; x=1]
जो वैश्विक चर पर कार्य करता है x
, अग्रणी "9" y
की संख्या, अनुगामी "0" की संख्या, और वांछित मूल्य है ।)d
, अंकों की कुल संख्या। हम अंकों की संख्या के माध्यम से पुनरावृत्ति करना चाहते हैं, और, अंकों की संख्या के प्रत्येक विकल्प के लिए, सबसे "0" s और कम से कम "9" s से शुरू करें। इस प्रकार पहली चीज जो कोड करती है d
वह 1 के लिए प्रारंभिक है, मजबूरनx
1 के लिएy
0. के लिए । कस्टम पुनरावृत्ति जाँचता है कि "0" के स्ट्रिंग को छोटा किया जा सकता है। यदि ऐसा है, तो यह एक से "0" के स्ट्रिंग को छोटा करता है और एक "1" के स्ट्रिंग को बढ़ाता है। यदि नहीं, तो यह अंकों की संख्या में वृद्धि करता है, "0" s की संख्या को अंकों की संख्या से कम करता है, और "9" की संख्या को 1 पर सेट करता है।d
y