गुडस्टीन अनुक्रम आउटपुट


18

(यह काफी क्लासिक हो सकता है लेकिन यह मेरी पहली पोस्ट है, इसलिए मैं अभी तक फैंसी सामान के लिए तैयार नहीं हूं)

Goodstein अनुक्रम इस प्रकार है एक इनपुट संख्या के लिए परिभाषित किया गया है:

एक प्रारंभिक संख्या n चुनें , b = 2 और दोहराएं:

  • लिखने n heriditary आधार में अंकन
  • n में सभी ( b ) s ( b +1) s और 1 को प्रतिस्थापित करें
  • उत्पादन n के नए दशमलव मूल्यांकन
  • वेतन वृद्धि b

वंशानुगत आधार संकेतन एक संख्या का अपघटन है जहां आधार प्रकट होने के लिए बड़ी संख्या है। उदाहरण:

  • 83 HB3 में: 3^(3+1)+2
  • 226 HB2 में: 2^(2^(2+1))+2^(2+1)+2

गुडस्टेन सीक्वेंस हमेशा 0 पर समाप्त होते हैं, लेकिन वे सबसे पहले बहुत तेजी से बड़े होते हैं इसलिए इसे पूर्ण अनुक्रम को आउटपुट करने के लिए नहीं कहा जाता है।


कार्य:

किसी भी उचित प्रारूप में एक इनपुट नंबर को देखते हुए, आपका काम इस संख्या के लिए गुडस्टोन अनुक्रम को कम से कम 10 ^ 25 या 0 तक पहुंचाने के लिए आउटपुट करना है

उदाहरण:

Input: 3
Output: 3, 3, 3, 2, 1, 0
Input: 13
Output: 13, 108, 1279, 16092, 280711, 5765998, 134219479, 3486786855, 100000003325, 3138428381103, 106993205384715, 3937376385706415, 155568095557821073, 6568408355712901455, 295147905179352838943, 14063084452067725006646, 708235345355337676376131, 37589973457545958193377292
Input: 38
Output: 38, 22876792454990

विवरण:

  • इनपुट संख्या एक सरणी, एक स्ट्रिंग, एक पूर्णांक हो सकती है, जब तक कि यह दशमलव आधार में है
  • आउटपुट उसी नियम का पालन करता है
  • आउटपुट में शर्तों का पृथक्करण रिक्त स्थान, नई-पंक्तियाँ, या कोई उचित पृथक्करण हो सकता है
  • जैसे ही अनुक्रम 10 ^ 25 से बड़ा हो जाता है, आपका प्रोग्राम सामान्य रूप से बाहर निकल सकता है, एक त्रुटि / अपवाद फेंक सकता है, या जारी रख सकता है (कोई प्रतिबंध नहीं)
  • यह , इसलिए सबसे छोटा उत्तर (बाइट्स में) जीतता है
  • बेशक, मानक खामियों को मना किया जाता है
  • पायथन ने यहां काम करने का उदाहरण दिया

2
क्या आप एक परीक्षण मामले के चरण-दर-चरण जोड़ सकते हैं?
रॉड

5
PPCG में आपका स्वागत है! अच्छी पहली चुनौती!
फैंटांक


2
@ ØrjanJohansen हाँ, बग है int(q/base.b), q%base.bकी जरूरत होने के लिए q//base.b, q%base.b(या बस divmod(q, base.b)) फ्लोटिंग प्वाइंट त्रुटियों से बचने के।
एंडर्स कासोर्ग

2
क्या "कम से कम जब तक यह 10 ^ 25 या 0 तक पहुंचता है" का अर्थ है कि कार्यक्रम को 0 तक पहुंचने के बाद जारी रखने की अनुमति है (संभवतः −1, −2, −3,…) के साथ?
एंडर्स कासोर्ग

जवाबों:


3

पायथ , 28 26 बाइट्स

.V2JbL&bs.e*^hJykb_jbJ=ty

अनुगामी न्यूलाइन महत्वपूर्ण है।

इसे ऑनलाइन आज़माएं! (इस लिंक में QPyth के वर्तमान संस्करण द्वारा आवश्यक अतिरिक्त शामिल नहीं है।)

यह काम किस प्रकार करता है

.V2JbL&bs.e*^hJykb_jbJ=ty
.V2                          for b in [2, 3, 4, ...]:
   Jb                          assign J = b
     L                         def y(b):
      &b                         b and
                   jbJ             convert b to base J
                  _                reverse
         .e                        enumerated map for values b and indices k:
             hJ                      J + 1
            ^  yk                    to the power y(k)
           *     b                   times b
(newline)                      print Q (autoinitialized to the input)
                        y      y(Q)
                       t       subtract 1
                      =        assign back to Q

यह महत्वपूर्ण है कि yवैश्विक चर में परिवर्तन को रोकने के लिए प्रत्येक लूप पुनरावृत्ति में पुनर्परिभाषित किया जाए J


3

हास्केल , 77 बाइट्स

(&2)एक अनाम फ़ंक्शन है जो s की Integerएक (संभावित रूप से बहुत लंबी) सूची ले रहा है Integer, जैसा कि उपयोग करें (&2) 13

(&2)
n&b|n<0=[]|let _?0=0;e?n=(e+1)?div n b+mod n b*(b+1)^0?e=n:(0?n-1)&(b+1)

इसे ऑनलाइन आज़माएं! (पर कटौती 10^25)

यह काम किस प्रकार करता है

  • (&2)आधार के साथ अनुक्रम शुरू होता है 2
  • n&bसंख्या nऔर आधार के साथ शुरू होने वाले परिकलन की गणना करता है b
    • यह खाली सूची के साथ रुकता है यदि n<0, जो आम तौर पर कदम के बाद होता है n==0
    • अन्यथा, यह nअभिव्यक्ति द्वारा पुनरावर्ती रूप से वापस की गई सूची में आता है (0?n-1)&(b+1)
  • ?एक स्थानीय फ़ंक्शन ऑपरेटर है। वंशानुगत आधार 0?nमें बदलने का परिणाम देता है , फिर हर जगह आधार को बढ़ाता है। nb
    • रूपांतरण eवर्तमान घातांक का ट्रैक रखने वाले चर के साथ पुनरावृत्ति करता है । e?nसंख्या परिवर्तित करता है n*b^e
    • पुनरावृत्ति 0कब के साथ रुक जाती है n==0
    • अन्यथा, यह nआधार से विभाजित होता है b
      • (e+1)?div n b भागफल और अगले उच्च घातांक के लिए पुनरावृत्ति को संभालता है।
      • mod n b*(b+1)^0?eशेष को संभालता है (जो वर्तमान घातांक के अनुरूप अंक है e), आधार की वृद्धि और वर्तमान घातांक को आनुवंशिक रूप से परिवर्तित करता है 0?e
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.