সাধারণ ধূসর কোডগুলি


13

ইনপুট: একটি বিন্যাস আমি এর ধনাত্মক পূর্ণসংখ্যা। পূর্ণসংখ্যাগুলি 100 এবং কে ≤ 100 এর চেয়ে বড় হবে না ।

আউটপুট: আপনার কোড আবশ্যক আউটপুট সব সম্ভব অ্যারে হে দৈর্ঘ্যের অ নেতিবাচক পূর্ণসংখ্যার সীমাবদ্ধতা যে সঙ্গে 0 ≤ হে আমি ≤ আমি আমি । একটি অ্যারে থেকে পরের দিকে যেতে আপনি অ্যারেতে 1 থেকে একটি মান যোগ বা বিয়োগ করতে পারেন। আপনার কোডে একই অ্যারেটিকে দুবার আউটপুট করা উচিত নয়। যদি আউটপুট হওয়ার জন্য বিভিন্ন অ্যারের সংখ্যা খুব বেশি হয় তবে এটি মারা না যাওয়া পর্যন্ত আপনার কোডটি চিরকাল আউটপুট চালিয়ে যাওয়া উচিত।

উদাহরণ

  • তাহলে আমি একটি অ্যারে বেশী তারপর এই ঠিক সর্বাঙ্গে iterating এর সমস্যা গ্রে কোড প্রস্থ বিট ছাড়া প্রথম এবং শেষ উপাদান এক ধাপে পৌঁছানো হতে প্রয়োজন হবে না।

  • তাহলে I = [2,1]আউটপুট অ্যারেগুলির একটি সম্ভাব্য ক্রম হ'ল(0,0),(0,1),(1,1),(1,0),(2,0),(2,1)

  • তাহলে I = [2,1,3]আউটপুট অ্যারেগুলির একটি সম্ভাব্য ক্রম হ'ল (0,0,0),(0,0,1),(0,0,2),(0,0,3),(0,1,3),(0,1,2),(0,1,1),(0,1,0),(1,1,0),(1,1,1),(1,1,2),(1,1,3),(2,1,3),(2,1,2),(2,1,1),(2,1,0),...

এটি একটি কোড-গল্ফ চ্যালেঞ্জ, সংক্ষিপ্ত দৈর্ঘ্যের জয় সহ উত্স কোড সহ জমা দেওয়া। গল্ফিং ভাষায় সংক্ষিপ্ত উত্তরগুলি আপনাকে অন্য ভাষায় উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। যে কোনও ভাষায় সংক্ষিপ্ত উত্তরটি নিয়ে আসার চেষ্টা করুন।

এটিও একটি সীমাবদ্ধ-জটিলতা চ্যালেঞ্জ। পূর্ববর্তী আউটপুটযুক্ত অ্যারে (বা প্রথম অ্যারের আউটপুট জন্য প্রোগ্রামের সূচনা ) থেকে প্রতিটি নতুন অ্যারে ও (কে) সময় বপনের সাথে আউটপুট হওয়া উচিত । এর অর্থ হ'ল নতুন আউটপুট অ্যারে প্রতি চলমান সময় ( এগুলির দৈর্ঘ্য কে প্রতিটি ) ও (কে) এর চেয়ে বড় হওয়া উচিত নয় । এটি হ'ল কে অনুপাতের সময় অনুপাত করা উচিত , উদাহরণস্বরূপ কে 2 বা 2 কে । নোট করুন এটি প্রতি আউটপুট গড় সময় নয় তবে প্রতিটি অ্যারের আউটপুট হওয়াতে সবচেয়ে খারাপ সময়।

আপনি ধরে নিতে পারেন যে bit৪ বিট পূর্ণসংখ্যার সমস্ত গাণিতিক অবিচ্ছিন্ন সময়ে সঞ্চালিত হতে পারে যা সেগুলি পড়া এবং আউটপুট করার পাশাপাশি অ্যাসাইনমেন্ট এবং সন্ধানের জন্য এবং অ্যারেতে মানগুলি পরিবর্তন করতে পারে।

সীমাবদ্ধ-জটিলতার একটি পরিণতি হ'ল যে প্রোগ্রামগুলি প্রস্থান করার সময় কেবলমাত্র আউটপুট দেয় সেগুলি সমাধানযোগ্য নয়।


1
("1 যোগ বা বিয়োগ" করা মডিউল করা উচিত I_i+1? আপনি কি 0 থেকে পৌঁছাতে পারবেন I_i?)
ব্যবহারকারী 202729

@ user202720 না আমি এটির উদ্দেশ্য করি নি।
আনুশ

জটিলতা কখন nএবং kসীমাবদ্ধ হলে কীভাবে কাজ করে ? তারা কীভাবে যাবেন বিট প্রস্থের সাথে
অনন্ততায়

@ l4m2 জটিলতার বিশ্লেষণের উদ্দেশ্যে ধরে নেওয়া যাক k অনন্ততায় চলে গেছে।
আনুশ

@ আনুশ তাই বিট প্রস্থ কিভাবে যায়?
l4m2

উত্তর:


4

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

def f(a):
 l=len(a);t=[0]*l;d=[1]*l
 while 1:
  i=0;yield t
  while not-1<t[i]+d[i]<=a[i]:d[i]*=-1;i+=1
  t[i]+=d[i]

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

-১ বাইটের জন্য মেমোনিককে ধন্যবাদ ।

জেনারেটর ফাংশন। (আমাকে স্মরণ করার জন্য ধন্যবাদ ডেনিস, আমি ভুলে গেছি বৈশিষ্ট্য বিদ্যমান) আউটপুট তারপর stdout- এ ব্যবহার করার জন্য প্রিন্ট করা যদি print(t,flush=1)9 অতিরিক্ত বাইট জন্য, অথবা যদি পাইথন সঙ্গে বলা হয় -u, print(t)+ 1 বাইট যথেষ্ট।

একটি ত্রুটি সহ বন্ধ ( IndexError)। আপনি যদি এই ফাংশনটি কল করতে চান এবং তারপরে প্রোগ্রামটি চালিয়ে যেতে চান, আপনাকে এটি ধরতে হবে।


লুপটি চলতে চলতে অভ্যন্তরটি কতক্ষণ চলবে?
আনুশ

বড়জোর @Anush kকারণ প্রতিটি পদে পদে পদক্ষেপ, iদ্বারা বৃদ্ধি 1ও পরে kপদক্ষেপ i==kএবং d[i]একটি ত্রুটি ঘটায়।
ব্যবহারকারী 202729

এটি একটি খুব সুন্দর সমাধান।
আনুশ

আপনি প্রতিস্থাপন দ্বারা একটি বাইট সংরক্ষণ করতে পারবেন not 0<=সঙ্গে not-1<

1
আপনি কি yield tপরিবর্তে ব্যবহার করতে পারেন print(t,flush=1)?
ডেনিস

2

স্ট্যাক্স , 22 বাইট

▒)∙ñ╚▀NK♀F☺S(A#P`░]╪Db

এটি চালান এবং এটি ডিবাগ করুন

অ্যাসিম্পোটিক আচরণ দেখানোর জন্য এখানে একটি বড় প্রেস প্রেস রান।

আনপ্যাকড, নিরবচ্ছিন্ন এবং মন্তব্য করা হয়েছে, এটি দেখতে এটির মতো দেখাচ্ছে।

,           pop from input to main stack
W           run the rest of the program repeatedly until explicitly cancelled
  cJP       copy top of stack and print, delimited by spaces
            get the index to mutate
  i^            iteration index + 1
  x{^|%}I       repeatedly apply divmod using l[k]+1 from input
                get the index of the first value that returns modulus >0
  cU=C      if the result is -1 (no match), then terminate the program
            get the direction to mutate
  s             get the "div" part of the last div operation called "d"
  ^|1           -1 ^ (d+1)
  ~{+}&     increment element in array at the index by the calculated amount

এটি চালান


1
বিট জটিলতায় পরিমাপ করা, পুনরাবৃত্তির O(k)kO(k²)
সূচকগুলি

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 114 বাইট

a=>{b=a.map(_=>0);c=a.map(_=>1);for(i=0;a[i];b[i]+=c[i]||-1){console.log(b);for(i=0;b[i]==a[i]*c[i];i++)c[i]^=1;}}

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

function ggray(maxima) {
    var current = Array(maxima.length).fill(0);
    var flag = Array(maxima.length).fill(1);
    for (;;) {
        console.log(current);
        for (var i = 0; ; i++) {
            if (i == maxima.length) return;
            if (current[i] != maxima[i] * flag[i]) break;
            flag[i] = 1 - flag[i];
        }
        if (flag[i]) current[i]++;
        else current[i]--;
    }
}

1

কোটলিন , 181 178 বাইট

ধন্যবাদ: আনুশ নির্দেশ করে আমি 2 বাইট সংরক্ষণের চ্যালেঞ্জটি ভুল বুঝেছি। ovs একটি 1 বাইট সঞ্চয় দেখিয়েছে।

val p={a:List<Int>->var l=a.size
val v=Array(l,{0})
val i=Array(l,{1})
l-=1
o@while(0<1){println(v)
var p=l
while(v[p]+i[p]!in 0..a[p]){i[p]*=-1
p-=1
if(p<0)break@o}
v[p]+=i[p]}}

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


1
2 1 3 এর সাথে প্রশ্নের উদাহরণের জন্য আপনার কোডটির ইনপুট হিসাবে মনে হচ্ছে 3 2 4 প্রয়োজন।
আনুশ

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