গুডস্টেইন ক্রম আউটপুট করুন


18

(এটি বেশ ক্লাসিক হতে পারে তবে এটি এখানে আমার প্রথম পোস্ট, তাই আমি অভিনব জিনিসগুলির জন্য এখনও প্রস্তুত নই)

Goodstein ক্রম নিম্নরূপ একটি ইনপুট সংখ্যার জন্য সংজ্ঞায়িত করা হয়:

শুরুর নম্বর বাছাই করুন এন যাক = 2 এবং পুনরাবৃত্তি:

  • লেখার এন heriditary বেস স্বরলিপি
  • সমস্ত ( ) গুলি ( বি +1) এর এন তে এবং 1 টি বিয়োগ করুন
  • এন এর দশমিক মূল্যায়ন আউটপুট
  • বৃদ্ধি

বংশগত বেস সংকেত একটি সংখ্যার পচন যেখানে ভিত্তিটি উপস্থিত হওয়ার জন্য আরও বড় সংখ্যা। উদাহরণ:

  • 83 এইচবি 3-তে: 3^(3+1)+2
  • 226 এইচবি 2 তে: 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
পিপিসিজিতে আপনাকে স্বাগতম! প্রথম প্রথম চ্যালেঞ্জ!
ফ্যান্ট্যাক


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

পেছনের নতুন লাইনটি তাৎপর্যপূর্ণ।

এটি অনলাইন চেষ্টা করুন! (এই লিঙ্কে Qপাইথের বর্তমান সংস্করণটির অতিরিক্ত প্রয়োজন নেই includes

কিভাবে এটা কাজ করে

.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)একটি বেনামি ফাংশন এটি গ্রহণ 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)
  • ?স্থানীয় ফাংশন অপারেটর is বংশগত ভিত্তিতে 0?nরূপান্তরিত nকরার ফলাফল দেয় b, তারপরে সর্বত্র বেস বাড়ানো।
    • রূপান্তরটি বর্তমান ব্যয়কারীর ভেরিয়েবল 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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.