সরলিকৃত গুডস্টেইন ক্রম আউটপুট করুন


22

একটি সংখ্যা বেস-বি সরলিকৃত গুডস্টেইন ফর্মে থাকে যদি এটি লিখিত হয়

b + b + ... + b + c,   0 < c ≤ b

সংখ্যার সরলিকৃত গুডস্টিন ক্রমটি বেস -১ সরলিকৃত গুডস্টাইন ফর্মটিতে সংখ্যাটি লিখতে শুরু করে, তারপরে সমস্ত 1 টি 2 এর সাথে প্রতিস্থাপন করে এবং 1 টি ফলাফলকে বেস -2 সরলিকৃত গুডস্টাইন ফর্মের পুনর্লিখন করুন, তারপরে সমস্ত 2 টি 3 এর সাথে প্রতিস্থাপন করুন এবং 1 কে বিয়োগ করুন ইত্যাদি you

আপনার প্রোগ্রামটি ইতিবাচক পূর্ণসংখ্যার ইনপুট এবং আউটপুট / তার গুডস্টেইন ক্রম প্রিন্ট করে শেষ করতে হবে। আপনার প্রোগ্রামটি 100 টিরও কম সংখ্যক হ্যান্ডেল করা উচিত, যদিও এটি একটি যুক্তিসঙ্গত সময়ে শেষ হতে পারে না।

উদাহরণস্বরূপ, ইনপুট হিসাবে 3 দেওয়া, আপনার প্রোগ্রাম আউটপুট করা উচিত (ডান দিকটি কেবল ব্যাখ্যা)

1 + 1 + 1                | 3 = 1 + 1 + 1
2 + 2 + 1                | Change 1's to 2's, then subtract 1. (2 + 2 + 2 - 1 = 2 + 2 + 1)
3 + 3                    | 3 + 3 + 1 - 1 = 3 + 3
4 + 3                    | 4 + 4 - 1 = 4 + 3
5 + 2                    | 5 + 3 - 1 = 5 + 2
6 + 1                    | 6 + 2 - 1 = 6 + 1
7                        | 7 + 1 - 1 = 7
7                        | 8 - 1 = 7
6                        | Numbers are now lower than the base, so just keep subtracting 1.
5                        |
4                        |
3                        |
2                        |
1                        |
0                        | End

ব্যবধানে কিছু আসে যায় না।


বিজয়ী মানদণ্ড:

এটি । সংক্ষিপ্ততম কোড জিতেছে।


1
এটি শেষ 0 অন্তর্ভুক্ত করা প্রয়োজন?
কেএসব

5
@ কেস্যাব এইচএম .... না, আমি অনুমান করি না।
কেবল সুন্দর আর্ট

উত্তর:


2

05 এ বি 1 , 19 বাইট

Å1[D'+ý,N>D>:`Ž<)0K

হিসাবে পুনরায় ব্যবস্থা করা যেতে পারে >Å1[ND>:`Ž<)0KD'+ý,

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

Å1                    # push a list of 1's the length of the input
  [                   # start a loop
   D                  # duplicate the current list
    '+ý,              # join on "+" and print
        N>D>:         # replace <current_iteration>+1 with <current_iteration>+2
             `        # flatten the list to the stack
              Ž       # break loop if the stack is empty
               <      # decrement the top number
                )     # wrap the stack in a list
                 0K   # remove zeroes

10

পাইথন 2, 77 74 বাইট

-3 বাইট ধন্যবাদ লিনকে

n=input();b=1
while n:print"+".join(n/b*[`b`]+[`n%b`][:n%b]);n+=n/b-1;b+=1

এটি অনলাইন চেষ্টা করুন!

সহজেই এন = 100 পর্যন্ত চলে (যদিও টিও সম্পূর্ণরূপে প্রদর্শনের জন্য আউটপুট খুব দীর্ঘ)।


"স্পেসিং কোনও ব্যাপার নয়", তাই আপনি সেখানে ঠিক আছেন।
কেবল সুন্দর আর্ট

এসটিডিআইএন থেকে ইনপুট পড়ে একটি বাইট সংরক্ষণ করুন:n=input() b=1 while n:…
লিন

1
এবং আরও দুটি সঙ্গে n+=n/b-1;b+=174 বাইট
লিন

1
@ সিম্প্লি বিউটিফুলআর্ট ঠিক করা হয়েছে
কেএসব

1
@ সিম্প্লি বিউটিফুলআর্টটি আপাতদৃষ্টিতে লুপটির সাথে সম্পর্কিত হ'ল, আপনি whileনিম্নলিখিতটি লিখতে পারবেন না ;। আমি অনুমান করব যে এটি কারণ হ'ল লাইনটি যদি whileনিম্নলিখিত প্রতিটি বিবৃতি দিয়ে শুরু করা হয় (সেমিকোলন দ্বারা বিচ্ছিন্ন) কিছু সময়ের মধ্যে এটির পরিধি বিবেচনা করা হয় এবং আচরণটি অস্পষ্ট বা কমপক্ষে কিছুটা অস্বচ্ছ হতে পারে
কেএসব



1

পাইথন 3, 155 বাইট

n=int(input());l=[1]*(n+1);i=0
while l:
    l=[t+1 if t==i else t for t in l];l[-1]-=1;l=l[:-1] if l[-1]==0 else l;print("+".join(list(map(str,l))));i+=1

এটি পুনরায় ফর্ম্যাট করা যেতে পারে

n = int(input())
l = [0]*(n+1)
i = 0
while l:
    l = [t+1 if t==i else t for t in l]
    if l[-1] == 0:
        l = l[:-1]
    print("+".join(list(map(str,l))))
    i += 1

আপনি প্রথম লাইনটি মিস করেছেন 1+1+...এবং নোট করুন যে আপনার প্রোগ্রামটির কোনও ধনাত্মক পূর্ণসংখ্যার ইনপুট হ্যান্ডেল করার কথা।
কেবল সুন্দর আর্ট

1
হ্যাঁ. এছাড়াও, ম্যাথজ্যাক্স এই সাইটে কাজ করে না: পি
কেবল সুন্দর আর্ট

1
আমার জন্য, এটি প্রদর্শিত হয় আপনি একটি এর পরিবর্তে আপনার গল্ফ সংস্করণে একটি স্থান রেখেছিলেন +
কেবল সুন্দর আর্ট


1
@ আরজিএস -~xএর সমান মূল্য রয়েছে তবে আপনার এটিকে প্রথম বন্ধনের x+1প্রয়োজন নেই, যেমন অ্যানারি -(অবহেলা) এবং অ্যানারি ~(বিটওয়াইজ নেগ্রেশন) এর চেয়ে বেশি অগ্রাধিকার রয়েছে *। আপনার ক্ষেত্রে [1]*-~nসমান [1]*(n+1)
ovs

1

জাভাস্ক্রিপ্ট ES6, 121 অক্ষর

for(q=1,s=Array(+prompt()).fill(1).join`+`;s!=0;s=s.split(q).join(++q).replace(/\d+$/,x=>x-1).replace(/\+0$/,''))alert(s)

alert=s=>document.write(s+'\n')
document.write("<pre>")

for(q=1,s=Array(+prompt()).fill(1).join`+`;s!=0;s=s.split(q).join(++q).replace(/\d+$/,x=>x-1).replace(/\+0$/,''))alert(s)


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.