यह निर्मित संख्या का स्टार्टर क्या है?


14

प्रोग्रामिंग भाषाओं की एक संख्या मौजूदा संख्या के अंत में अंक को 'समवर्ती' के माध्यम से बड़े पूर्णांक का निर्माण करती है। उदाहरण के लिए, भूलभुलैया , या एडाप्ट । अंकों को अंत तक पहुंचाने से मेरा मतलब है कि, यदि मौजूदा संख्या , और अंक , तो परिणाम संख्या ।457457(45×10+7)

एक निर्मित संख्या एक संख्या है जिसे एकल अंकों की संख्याओं के गुणकों के उपयोग के माध्यम से इस तरह बनाया जा सकता है: AKA इन 9 अनुक्रमों में से एक में एक तत्व:1,2,3,4,5,6,7,8,9

1,12,123,1234,12345,
2,24,246,2468,24690,
3,36,369,3702,37035,
4,48,492,4936,49380,
5,60,615,6170,61725,
6,72,738,7404,74070,
7,84,861,8638,86415,
8,96,984,9872,98760,
9,108,1107,11106,111105,

अनुक्रम का निर्माण कैसे किया जाता है, इसका एक उदाहरण प्रदान करने के लिए, यहां बताया गया है कि निर्माण में का क्रम कैसा है :a=3

u1=a=3=3u2=10×u1+2×a=30+6=36u3=10×u2+3×a=360+9=369u4=10×u3+4×a=3690+12=3702u5=10×u4+5×a=37020+15=37035u6=10×u5+6×a=370350+18=370368
u33=10×u32+33×a=37260+99=37359u34=10×u33+34×a=37359+102=373692
_ \ _ \ _ \ _ \ _ \ _ \ _ {33} & \ _ \ _ 10 \ _ \ _ 32} + 33 \ गुना a = && 37 \ dots260 + 99 & = 37 \ dots359 \\ u_ {34} = && 10 \ गुना u_ {33} + 34 \ गुना a = && 37 \ dots359 + 102 & = 37 \ _ dots3692 \ end {संरेखित}

u33 और को प्रदर्शित करने के लिए शामिल किया गया जब । एक बहुत अंकों की अंतरिक्ष के लिए बाहर बिंदीदार।u34n×a100

यह अभी भी स्पष्ट नहीं हो सकता है कि इन अनुक्रमों का निर्माण कैसे किया जाता है, इसलिए यहां उन्हें समझने के दो अलग-अलग तरीके हैं:

  • प्रत्येक अनुक्रम एकल अंक से शुरू होता है। अगला शब्द उस अंक के अगले कई लेने से मिलता है, पिछले शब्द को गुणा करना और कई को जोड़ना। क्रम में:10

    un=10×un1+n×a,u1=a

    जहां एकल अंक है ( के माध्यम से )a19


  • से प्रत्येक अनुक्रम में किसी भी बिंदु पर तत्वों (ले उदाहरण के लिए) के गुणज हैं से करने के लिए , जहां द्वारा निर्माण किया है9n=312319123un+1=10×un+n (1,12,123,,123456789,1234567900,12345679011,)

    तो पहला मान , दूसरा , तीसरा , आदि।1×1,2,3,,8,912×1,2,3,,8,9123×1,2,3,,8,9

आपका काम एक निर्माण संख्या को इनपुट के रूप में लेना है और इसका निर्माण करने के लिए उपयोग किए गए प्रारंभिक अंक का उत्पादन करना है। आप मान सकते हैं कि इनपुट हमेशा एक निर्मित संख्या होगी, और से अधिक होगी । यह एक एकल अंक हो सकता है, जो अपने आप में वापस मैप करता है।0

आप किसी भी उचित तरीके से इनपुट ले सकते हैं, जिसमें अंकों की एक सूची, एक स्ट्रिंग आदि के रूप में शामिल है। यह स्वीकार्य है (हालांकि अनुशंसित नहीं है), या आपके चयन के किसी अन्य आधार पर इनपुट लेने के लिए।

यह एक इसलिए सबसे छोटा कोड जीतता है!

परीक्षण के मामलों

       u_n        => a
 37035            => 3
 6172839506165    => 5
 5                => 5
 246913580244     => 2
 987654312        => 8
 61728395061720   => 5
 1111104          => 9
 11111103         => 9
 111111102        => 9
 2469134          => 2
 98760            => 8
 8641975308641962 => 7

या दो सूचियों के रूप में:

[37035, 6172839506165, 5, 246913580244, 987654312, 61728395061720, 1111104, 11111103, 111111102, 2469134, 98760, 8641975308641962]
[3, 5, 5, 2, 8, 5, 9, 9, 9, 2, 8, 7]

जब मैंने इस चुनौती को पोस्ट किया, तो मुझे यह महसूस नहीं हुआ कि ग्रिम के उत्तर में इस्तेमाल की गई विधि से इसे इतना सरल बनाया जा सकता है , और इसलिए यह उन उत्तरों में बहुत रुचि होगी जो इसे हल करने के लिए एक गणितीय दृष्टिकोण लेते हैं, बजाय एक 'अंक' के। चाल (स्पष्ट रूप से सभी मान्य उत्तर समान रूप से मान्य हैं, बस मुझे जो देखने में दिलचस्पी होगी)।


सैंडबॉक्स पोस्ट । मैं जेली में एक 9 बाइट समाधान है, अगर कोई भी चुनौती देना चाहता है।
caird coinheringaahing

जवाबों:


26

05AB1E , 7 5 4 बाइट्स

>9*н

इसे ऑनलाइन आज़माएं!

>            # input + 1
 9*          # * 9
   н         # take the first digit

6
हम्म, जो इस चुनौती के लिए अच्छी तरह से नहीं
झुकता है

9
आपके पास चुनौती स्पष्टीकरण के 800 बाइट्स के लिए लगभग 1 बाइट कोड है। : p
Arnauld

1
आप कैसे समाधान के साथ आते हैं और यह सही क्यों है?
जोएल

7
@Joel a (n-1) th का क्रम a से शुरू होता है a * (((10**n - 1) / 9 - n) / 9)। 9 से गुणा करें और जोड़ते हैं a*n, और आप प्राप्त करते हैं a * ((10**n - 1) / 9), अंक को एक बार दोहराया गया एन। a*nN = 1 के लिए कामों के बजाय 9 को जोड़ देता है , और बड़े n के लिए निरंतर अंतर घातीय वृद्धि के बगल में नगण्य है।
ग्रैमी

3
@ ग्रेमी स्पष्टीकरण के लिए बहुत बहुत धन्यवाद। हो सकता है कि आप इसे अपनी पोस्ट में डाल सकते हैं।
योएल

3

मैथॉल्फ , 6 बाइट्स

)9*▒├Þ

इसे ऑनलाइन आज़माएं!

दुर्भाग्य से, headMathGolf में कोई ऑपरेशन नहीं है , इसलिए मुझे ▒├Þस्ट्रिंग में कनवर्ट करने के लिए, बाईं ओर से पॉप और स्टैक के शीर्ष पर सभी को त्यागना होगा।





2

चारकोल , 7 बाइट्स

§I×⁹⊕N⁰

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। @ ग्रिम की विधि निश्चित रूप से। यहाँ एक 27 बाइट गणितीय दृष्टिकोण है:

NθW¬№Eχ×κ↨υχθ⊞υLυI⌕Eχ×ι↨υχθ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। अमान्य इनपुट पर क्रैश। स्पष्टीकरण:

Nθ

निर्मित संख्या को इनपुट करें।

W¬№Eχ×κ↨υχθ

से सभी नंबरों से आधार 10 में एक संख्या के रूप सूची व्याख्या गुणा 0करने के लिए 9, और निर्माण नंबर दिखाई देता है कि क्या देखते हैं।

⊞υLυ

सूची की लंबाई को अपने आप में पुश करें। लिस्ट इसलिए फॉर्म की हो जाती है [0, 1, 2, ..., n]

I⌕Eχ×ι↨υχθ

निर्मित संख्याओं को फिर से बनाएँ लेकिन इस बार उस सूचकांक को खोजें और आउटपुट करें जिस पर इनपुट नंबर दिखाई दिया।



2

व्हॉट्सएप , 108 बाइट्स

[S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_integer][T   T   T   _Retrieve_input][S S S T    N
_Push_1][T  S S S _Add][S S S T S S T   N
_Push_9][T  S S N
_Multiply][S S S T  N
_Push_1][N
S S N
_Create_Label_LOOP][S S S T S T S N
_Push_10][T S S N
_Multiply][S N
S _Duplicate][S T   S S S T S N
_Copy_0-based_2nd]S N
T   Swap_top_two][T S S T   _Subtract][N
T   T   S N
_If_neg_jump_to_Label_PRINT][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT][S S S T    S T S N
_Push_10][T S T S _Integer_divide][T    S T S _Integer_divide][T    N
S T _Output_top_as_number]

पत्र S(स्थान), T(टैब), और N(नई-पंक्ति) केवल हाइलाइटिंग के रूप में जोड़े गए।
[..._some_action]केवल स्पष्टीकरण के रूप में जोड़ा गया।

पोर्ट @Grimy का 05AB1E उत्तर है , सिवाय इसके कि मेरे पास पहला अंक प्राप्त करने के लिए एक बिलिन नहीं है। ;)

इसे ऑनलाइन आज़माएं (कच्चे स्थान, टैब और नई लाइनों के साथ)।

छद्म कोड में स्पष्टीकरण:

Integer i = STDIN as integer
i = i + 1
i = i * 9
Integer t = 1
Start LOOP:
  t = t * 10
  If(i - t < 0):
    Call function PRINT
  Go to next iteration of LOOP

function PRINT:
  t = t / 10
  i = i / t    (NOTE: Whitespace only has integer-division)
  Print i as integer to STDOUT

2

पायथन 3 , 22 बाइट्स

lambda i:str(-~i*9)[0]

इसे ऑनलाइन आज़माएं!

पोर्ट ऑफ ग्रिम का 05AB1E उत्तर


पायथन 3 , 74 बाइट्स

f=lambda i,j=1,k=2,l=1:l*(i==j)or f(i,*(10*j+k*l,l+1,k+1,2,l,l+1)[i<j::2])

इसे ऑनलाइन आज़माएं!

व्याख्या

पुनरावर्ती कार्य। प्रत्येक अंक के लिए अनुक्रम से अधिक lशुरू, पर शुरू होता है 1। यदि इनपुट iवर्तमान पुनरावृत्ति के बराबर है j, तो संबंधित अंक lवापस आ जाता है। यदि jअनुक्रम में वर्तमान मान इनपुट मान से अधिक है i, तो यह अंक को बढ़ाएगा lऔर शुरू होगा। तर्क kका उपयोग गुणन कारक को बढ़ाने के लिए किया जाता है।


1

जावास्क्रिप्ट (ईएस 6),  16  15 बाइट्स

पिछले संस्करण के साथ मेरे पास 32-बिट बाधा उठाने के लिए @Grimy के लिए धन्यवाद।

ग्रिम की जादुई भस्म का उपयोग करना । एक स्ट्रिंग के रूप में इनपुट लेता है।

n=>(n*9+9+n)[0]

इसे ऑनलाइन आज़माएं!


जावास्क्रिप्ट (ईएस 6), 53 बाइट्स

Naive brute बल दृष्टिकोण।

n=>(g=(k,x=i=0)=>x>n?g(k+1):x<n?g(k,++i*k+10*x):k)(1)

इसे ऑनलाइन आज़माएं!


-~n*9हो सकता है n*9+9, जो एक ही बाईटेकाउंट है, लेकिन अगर मुझे सही तरीके से समझा जाए तो 32-बिट सीमा से छुटकारा मिलना चाहिए।
ग्रिम्मी

ब्रूट बल एक = = 10 के लिए काम करता है, जैसे14808
नहुएल फौइलुल

1
@ नहुएलफौइल अगर हम एक = = 10 पर विचार करें, तो उत्तर अब अनूठा नहीं है (14808 = 4 का कार्यकाल = 12 हो सकता है, या = 14808 का पहला शब्द)। यदि किसी भी आउटपुट की अनुमति है, तो n=>nसभी इनपुट के लिए काम करता है।
ग्रिम्मी

1

जावा 8, 23 बाइट्स

n->(n*9+9+"").charAt(0)

पोर्ट @Grimy का 05AB1E उत्तर है , इसलिए उसे सुनिश्चित करें!

इसे ऑनलाइन आज़माएं।

लेकिन क्योंकि मैं @cairdCoinheringaahing के लिए बुरा महसूस करता हूं , यहां थोड़ा अधिक खर्च ( 83 बाइट्स ) के साथ एक जानवर-बल दृष्टिकोण है :

n->{long r=n,a=0,u,k;for(;++a<10;r=u>n?r:a)for(k=2,u=a;u<n;)u=u*10+k++*a;return r;}

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

n->{                 // Method with long as both parameter and return-type
  long r=n,          //  Result, starting at the input in case it's already a single digit
       a=0,          //  The digit to start the sequence with
       u,            //  The last number of the sequence we're building for digit a
       k;            //  Multiplier which increments each iteration
  for(;++a<10;       //  Loop in the range [1,9] (over each digit):
      r=u>n?         //    After ever iteration: if `u` is larger than the input:
            r        //     Keep the result the same
           :         //    Else:
            a)       //     Change the result to `a`
    for(k=2,         //   Reset `k` to 2
        u=a;         //   Reset `u` to the current digit `a`
        u<n;)        //   Inner loop as long as `u` is smaller than the input
      u=             //    Change `u` to:
        u*10         //     10 times the current `u`
            +k++*a;  //     With `k` multiplied by `a` added
                     //     (after which `k` increases by 1 with `k++`)
  return r;}         //  And after we iterated over each digit, return the result


0

जेली , 8 बाइट्स

RRḌ÷@fⱮ9

इसे ऑनलाइन आज़माएं!

एक पूर्ण कार्यक्रम जो एक पूर्णांक लेता है और स्टार्टर अंक को प्रिंट करता है। ग्रिम की चालाक विधि का उपयोग नहीं करता है! बड़े इनपुट के लिए बहुत अक्षम है। निम्न संस्करण सभी परीक्षण मामलों को संभालता है, लेकिन एक बाइट अधिक समय तक है:

जेली , 9 बाइट्स

DJRḌ÷@fⱮ9

इसे ऑनलाइन आज़माएं!



0

केग -rr , 4 बाइट्स

⑨9*÷

इसे ऑनलाइन आज़माएं!

बेशक, 05AB1E उत्तर के समान दृष्टिकोण का उपयोग करता है। नए -rr(रिवर्स और प्रिंट कच्चे) ध्वज का भी उपयोग करता है ।

ट्रांसपाइल्स:

from KegLib import *
from Stackd import Stack
stack = Stack()
printed = False
increment(stack)
integer(stack, 9)
maths(stack, '*')
item_split(stack)
if not printed:
    reverse(stack)
    raw(stack)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.