বিপরীত ব্যাপ্তি উত্তরাধিকারী


21

ধনাত্মক পূর্ণসংখ্যা দেওয়া n, নিম্নলিখিতগুলি করুন (এবং প্রতিটি পর্যায়ে আউটপুট):

  1. nকপি সহ একটি তালিকা দিয়ে শুরু করুন n
  2. নিম্নলিখিত nবার করুন:
  3. iম পদক্ষেপ, ধীরে ধীরে হ্রাস iতালিকার তম এন্ট্রি পর্যন্ত এটি ছুঁয়েছেi

সুতরাং, উদাহরণস্বরূপ, যদি প্রদত্ত nহয় 4, তাহলে আপনি দিয়ে শুরু [4,4,4,4]প্রথম পদক্ষেপ আপনি, এবং তারপর [3,4,4,4], [2,4,4,4], [1,4,4,4]। দ্বিতীয় ধাপ এ, আপনি [1,3,4,4], [1,2,4,4]। তৃতীয় ধাপে আপনার আছে [1,2,3,4]। চতুর্থ ধাপে কিছুই করা হয় না।

সুতরাং আপনার আউটপুট হয় [[4,4,4,4],[3,4,4,4],[2,4,4,4],[1,4,4,4],[1,3,4,4],[1,2,4,4],[1,2,3,4]]


যে কোনও যুক্তিসঙ্গত ইনপুট / আউটপুট ফর্ম্যাট অনুমোদিত।


স্ট্যান্ডার্ড লুফোলস প্রযোজ্য। এটি : সবচেয়ে ছোট বাইট-কাউন্ট জয়ের উত্তর।


পরীক্ষার উদ্দেশ্যে পাইথন বাস্তবায়ন


1
আপনি স্পষ্টভাবে বলতে চাইবেন যে iসর্বদা 1-ইনডেক্সড।
কেভিন ক্রুইজসেন

আমাদের কি সত্যিই অ্যারে হেরফের করতে হবে? আমি কোনও অ্যারে চালিত না করে সংক্ষিপ্ত উত্তর পেতে পারি, একটি গ্রহণযোগ্য আউটপুট উত্পাদন করে না।
অলিভিয়ার গ্রাগোয়ার

2
পছন্দ করুন (অর্থাত্ এগিয়ে যান)
লিকি নুন

উত্তর:


6

জেলি , 9 বাইট

r€⁸Œp»\QṚ

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

কিভাবে?

r€⁸Œp»\QṚ - Link: integer, N    e.g. 4
 €        - for €ach of implicit range of N (i.e. for i in [1,2,3,...N])
  ⁸       -   with the chain's left argument, N on the right:
r         -     inclusive range (for i<=N this yields [i, i+1, ..., N]
          - ...leaving us with a list of lists like the post-fixes of [1,2,3,....,N]
          -                     e.g. [[1,2,3,4],[2,3,4],[3,4],[4]]
   Œp     - Cartesian product* of these N lists
          -                     e.g. [[1,2,3,4],[1,2,4,4],[1,3,3,4],[1,3,4,4],[1,4,3,4],[1,4,4,4],[2,2,3,4],[2,2,4,4],[2,3,3,4],[2,3,4,4],[2,4,3,4],[2,4,4,4],[3,2,3,4],[3,2,4,4],[3,3,3,4],[3,3,4,4],[3,4,3,4],[3,4,4,4],[4,2,3,4],[4,2,4,4],[4,3,3,4],[4,3,4,4],[4,4,3,4],[4,4,4,4]]
      \   - cumulative reduce with:
     »    -   maximum (vectorises)
          -                     e.g. [[1,2,3,4],[1,2,4,4],[1,3,4,4],[1,3,4,4],[1,4,4,4],[1,4,4,4],[2,4,4,4],[2,4,4,4],[2,4,4,4],[2,4,4,4],[2,4,4,4],[2,4,4,4],[3,4,4,4],[3,4,4,4],[3,4,4,4],[3,4,4,4],[3,4,4,4],[3,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4],[4,4,4,4]]
       Q  - de-duplicate        e.g. [[1,2,3,4],[1,2,4,4],[1,3,4,4],[1,4,4,4],[2,4,4,4],[3,4,4,4],[4,4,4,4]]
        Ṛ - reverse             e.g. [[4,4,4,4],[3,4,4,4],[2,4,4,4],[1,4,4,4],[1,3,4,4],[1,2,4,4],[1,2,3,4]]

* উপরে বর্ণিত কার্টেসিয়ান পণ্যটির সাথে আলাদা ইনপুট দিয়ে কী চলছে তা দেখা সহজ হতে পারে:

the Cartesian product of [[0,1,2],[3,4],[5]]
is [[0,3,5],[0,4,5],[1,3,5],[1,4,5],[2,3,5],[2,4,5]]

আপনি আন-আউটগল্ফ-সক্ষমকে ছাড়িয়ে গেছেন।
লিকি নুন

5

আর , 83 82 74 বাইট

N=rep(n<-scan(),n);while({print(N);any(K<-N>1:n)})N[x]=N[x<-which(K)[1]]-1

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

ডাবল ফর-লুপের পরিবর্তে whileএখানে একটি লুপই যথেষ্ট the আমরা প্রথম সূচকটি খুঁজে পাই যেখানে তালিকাটি সূচকের চেয়ে বেশি, এবং সেখানে হ্রাস।

Kহয়েছে TRUEযেখানেই থাকুন না কেন N[i]>i, which(K)আয় সত্য সূচকের, এবং আমরা প্রথম নিতে [1]




2

এপিএল + উইন, 54 বাইট

পূর্ণসংখ্যার স্ক্রিন ইনপুট জন্য অনুরোধ জানানো হয়

((⍴m)⍴n)-+⍀m←0⍪(-0,+\⌽⍳n-1)⊖((+/+/m),n)↑m←⊖(⍳n)∘.>⍳n←⎕

প্রতিটি স্তরের ফলাফলকে প্রতিনিধিত্ব করে প্রতিটি সারিতে একটি ম্যাট্রিক্স আউটপুট দেয় যেমন 4:

4 4 4 4
3 4 4 4
2 4 4 4
1 4 4 4
1 3 4 4
1 2 4 4
1 2 3 4

2

জেলি , 11 বাইট

x`’Jḟḣ1Ʋ¦ÐĿ

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

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

x`’Jḟḣ1Ʋ¦ÐĿ  Main link. Argument: n

x`           Repeat self; yield an array of n copies of n.
         ÐĿ  While the results are unique, repeatedly call the link to the left.
             Return the array of all unique results, including the initial value.
  ’     ¦      Decrement the return value at all indices specified by the chain
               in between.
       Ʋ         Combine the four links to the left into a monadic chain.
   J               Indices; yield [1, ..., n].
    ḟ              Filterfalse; remove all indices that belong to the return value.
     ḣ1            Head 1; truncate the result to length 1.

2

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

n=int(input())
x=[n]*n;print(x)
for i in range(n):
    for j in[0]*(n-i-1):x[i]-=1;print(x)

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


পাইথনে ইনডেন্ট কোডের জন্য 1 স্পেস যথেষ্ট। অপ্রয়োজনীয় স্পেসগুলি সরিয়ে এবং অজগর 2 এ স্যুইচ করা 10 বাইট সাশ্রয় করে: এটি পরীক্ষা করে দেখুন
মৃত পসসাম

@ ডেডপসসাম, যদিও আমি জানি আমি পাইথন 2 এ আরও ভাল করতে পারলাম, এটি শীঘ্রই অপ্রচলিত হতে চলেছে তাই আমি আমার পাইথন 3 দক্ষতা যথাসম্ভব অনুশীলন করতে চেয়েছিলাম।
ডেটা

2

জাভা (ওপেনজেডিকে 8) , 135 বাইট

a->{int r[]=new int[a],i=0;java.util.Arrays x=null;x.fill(r,a);for(r[0]++;i<a;r[i++]++)for(;--r[i]>i;System.out.print(x.toString(r)));}

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

ব্যাখ্যা:

int r[]=new int[a],i=0;    //Initialize array and loop counter
java.util.Arrays x=null;    //reduces the number of of “Arrays” needed from 3 to 1
x.fill(r,a);    //Sets each value in array length n to int n
for(r[0]++;i<a;r[i++]++)    //Increment everything!
  for(;--r[i]>i;    //If decremented array element is larger than element number:
     System.out.print(x.toString(r)));}    //Print the array

ক্রেডিট:

-8 বাইট জনাথন ফ্রেচকে ধন্যবাদ !

-16 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ !

-1 বাইট ধন্যবাদ Okx কে !


4
import java.util.*;বাইট গোনা আমি ভীত অংশ। এবং @ জোনাথনফ্রেচের কোডটি আরও ,i=0পরে 4 টি বাইট দ্বারা গল্ফ করা যায় এবং এর পরে r[]পরিবর্তন <-~aকরে <=a। ( এটি অনলাইন চেষ্টা করুন। 144 বাইট ) (এবং আমি পরিবর্তিত ~-iকরতে i-1এটি আরো পাঠযোগ্য করতে ..)
কেভিন Cruijssen

1
139 বাইট দ্বারা পরিত্রাণ import java.util.*;ব্যবহার করে java.util.Arrays x=null;এবং x.fillএবং x.toString(মনে রাখবেন যে আপনার বর্তমান সমাধানটি প্রয়োজনীয় 155 বাইটের সাথে রয়েছেimport java.util.*;))
কেভিন ক্রুইজসেন

1
for(;r[i-1]>i;পরিবর্তে ব্যবহার করে একটি বাইট গল্ফ for(;r[i-1]!=i;
Okx

2
@ কেভিন ক্রুইজসেন আরও একটি বাইট গল্ফ ++i<=aকরে বাঁচাতে পারত i++<a
জোনাথন ফ্রেচ

1
আর -2 বাইট শেষ অংশটি পরিবর্তন করে for(r[0]++;i<a;r[i++]++)for(;--r[i]>i;System.out.print(x.toString(r)));। :) এটি অনলাইনে 135 বাইট ব্যবহার করে দেখুন
কেভিন ক্রুইজসেন

2

হাস্কেল, 69 67 65 63 বাইট

পুনরাবৃত্ত সংজ্ঞা:

f 0=[[]]
f a=map(:(a<$[2..a]))[a,a-1..2]++[1:map(+1)x|x<-f$a-1]

লাইকোনিকে 2 বাইটের জন্য ধন্যবাদ!


দ্বিতীয়টি mapহল দুটি বাইট সংক্ষিপ্ত তালিকা অনুসারে: এটি অনলাইনে চেষ্টা করুন!
লাইকোনি

2

পিএইচপি, 153 বাইট

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

কোড

function f($n){
$a=array_fill(0,$n,$n);$r=json_encode($a)."\n";$p=0;while($p<$n)
{if($a[$p]!=$p+1){$a[$p]--;$r.=json_encode($a)."\n";}else{$p++;}}echo$r;}

বাইটগুলি কম করার চেষ্টা করবে বা পুনরাবৃত্তির কাজটি শেষ করবে

ব্যাখ্যা

function f($n){
  $a=array_fill(0,$n,$n);          #start with $nlength array filled with $n
  $r=json_encode($a)."\n";         #pushed to the string to output
  $p=0;                            #first position
  while($p<$n){                    #on position $n ($n-1) we do nothing
    if($a[$p]!=$p+1){              #comparing the position+1 to the value
     $a[$p]--;                     #it gets decreased by 1
     $r.= json_encode($a)."\n";    #and pushed
   } else {
     $p++;                       #when position+1 = the value,
   }                               #position is changed ++
  }
   echo $r;
  }

মনে হচ্ছে আপনার কিছু অপ্রয়োজনীয় সাদা জায়গা আছে তাই এটি 153 বাইট হওয়া উচিত - নোট করুন যে আমি পিএইচপি জানি না।
জিউসেপে

হ্যাঁ, ঠিক বুঝতে পারুন, আপনাকে ধন্যবাদ, এখন সম্পাদনা করুন।
ফ্রান্সিসকো হহন





1

রেটিনা , 49 বাইট

.+
*
_
$`_,$= 
.{*\`_+,(_+)
$.1
0`(\b(_+),\2)_
$1

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

.+
*

ইনপুটটি আনারিতে রূপান্তর করুন।

_
$`_,$= 

কপি n এর একটি তালিকা তৈরি করুন i,nযেখানে iকপি সূচি।

.

কিছু মুদ্রণ করবেন না (যখন লুপ শেষ হবে)।

{

প্যাটার্নটি পরিবর্তন না হওয়া পর্যন্ত লুপ করুন।

*\`_+,(_+)
$.1

অস্থায়ীভাবে মুছে দিন এবং iগুলি nদশমিক এবং আউটপুট রূপান্তর ।

0`(\b(_+),\2)_
$1

প্রথম তালিকার এন্ট্রি নিন যার মান তার সূচকে ছাড়িয়ে গেছে এবং এটি হ্রাস পাবে।


1

পাইথন 3 , 70 67 65 বাইট

def f(n):
 k=0;a=[n]*n
 while k<n-1:print(a);k+=a[k]==k+1;a[k]-=1

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

  • (67) ফাংশনে রূপান্তর করা হচ্ছে: -3 বাইট
  • (65) অপ্রয়োজনীয় বন্ধনীগুলি সরানো হচ্ছে: -2 বাইট

অবরুদ্ধ সংস্করণ:

def f(n):
    k = 0
    a = [n] * n             # create n-item list with all n's
    while k < n - 1:        # iterate through columns 0..n-1
        print(a)            # print whole list
        if a[k] == k + 1:   # move to the next column when current item reaches k+1
            k += 1
        a[k] -= 1           # decrement current item

0

সি (ঝনঝন) , 131 141 বাইট

i,j,k,m[99];p(){for(k=0;m[k];printf("%d ",m[k++]));puts("");}f(n){for(j=k=m[n]=0;k<n;m[k++]=n);p();for(;j<n;j++)for(i=1;i++<n-j;m[j]--,p());}

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

এটি সবার জন্য কাজ করবে n 99 অবধি সমস্তের T টিআইও আউটপুট কেটে দেয়। এটি মেমরি পারমিট হিসাবে nঅ্যারের আকার পরিবর্তন করে ইচ্ছামত বৃহত্তর সমর্থন করতে পারে m


নিম্নলিখিতটি n = 1..9 এ সীমাবদ্ধ তবে উল্লেখযোগ্যভাবে খাটো

সি (ঝনঝন) , 89 92 বাইট

i,j;char m[12];f(n){j=!puts(memset(m,n+48,n));for(;j<n;j++)for(i=1;i++<n-j;m[j]--,puts(m));}

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

আপডেট হয়েছে: স্থিতিশীল আরম্ভের উপর নির্ভরতা এড়াতে পরিবর্তিত


আপনার static/global initialization because multiple test casesঅনুমোদিত নয়, কারণ ফাংশনগুলিকে একাধিকবার কল করতে হবে।
জোনাথন ফ্রেচ

@ জোনাথন আপডেট হওয়া উত্তরসমূহ। আমি সর্বদা ভাবতাম যে এটির অনুমতি দেওয়া উচিত কিনা, এবং আমার মন আপ করতে পারি না।
জিপিএস

1
এখানে প্রাসঙ্গিক মেটা পোস্টটি দেওয়া হয়েছে: কোড golf.meta.stackexchange.com/a/4940/73111
জোনাথন

আপনি গল্ফ m[j]--,p()করতে পারেন p(m[j]--)এবং একটি বাইট সংরক্ষণ করতে পারেন ।
জোনাথন ফ্রেচ


0

ক্লোজার, 132 বাইট

#(loop[R[(vec(repeat % %))]j(- % 2)i 0](if(> i j)R(recur(conj R(update(last R)i dec))(if(= i j)(- % 2)(dec j))(if(= i j)(inc i)i))))

আমি আশা করি এটি আরও কম হবে ...

কম রাষ্ট্রীয় তবে 141 বাইটে দীর্ঘ :

#(apply map list(for[i(range %)](concat(repeat(nth(cons 0(reductions +(reverse(range %))))i)%)(range % i -1)(if(>(dec %)i)(repeat(inc i))))))

0

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

def f(n):
 p=print;m=[n for_ in range(n)];p(m)
 for i in range(n):
    while m[i]>1+i:m[i]-=1;p(m)

আমি সম্ভবত মুদ্রণের সাথে আরও গল্ফ করতে পারি, তবে আমি আমার কম্পিউটার থেকে দূরে আছি এবং মুদ্রণের জন্য একটি ভেরিয়েবল সেট করার বিষয়ে পাইথন 2 এর নিয়ম সম্পর্কে পুরোপুরি নিশ্চিত নই। আমি যখন কম্পিউটারে উঠি বা কেউ মন্তব্যগুলিতে স্পষ্ট করে তখন আমি আপডেট করব।


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