ভিজ্যুয়ালাইজ বাছাই


20

বলুন যে আমার মতো একটি তালিকা রয়েছে [3, 0, 4, 2, 1]এবং আমি এটি বাছাইয়ের জন্য নির্বাচনের ধরণটি ব্যবহার করি, আমি এটি এর মতো দৃশ্যধারণ করতে পারি:

3,0,4,2,1
|-|
0,3,4,2,1
  |-----|
0,1,4,2,3
    |-|
0,1,2,4,3
      |-|
0,1,2,3,4

এই চ্যালেঞ্জটি এইভাবে বাছাইয়ের দৃশ্যধারণ সম্পর্কে।

ইনপুট

আপনার ইনপুটটি আপনার পছন্দ মতো যে কোনও বিন্যাসে ইতিবাচক পূর্ণসংখ্যার একটি তালিকা হবে।

কার্য

আপনার জমা দেওয়ার ক্ষেত্রে ইনপুট তালিকাটি একবারে দু'টি উপাদান অদলবদল করে বাছাই করা উচিত এবং প্রতিটি সোয়াপ-এ জমা দেওয়ার তালিকাটি প্রদর্শন করা উচিত, এবং প্রতিটি উপাদানের অদলবদল হওয়াতে একটি অক্ষর প্রদর্শন করা উচিত। অদলবদল করা একটি সংখ্যার যদি একাধিক সংখ্যা থাকে তবে চরিত্রটি এর নীচে যে কোনও জায়গায় থাকতে পারে। শেষে, জমাটি বাছাই করা তালিকা প্রদর্শন করা উচিত।

অন্যান্য বিধি

  • বাছাইয়ের ক্ষেত্রে অবশ্যই এন 4 এর চেয়ে কম অদলবদল ব্যবহার করা উচিত , যেখানে n তালিকার দৈর্ঘ্য।
  • বাছাইয়ের জন্য নির্বিচারবাদী হতে হবে না।
  • অদলবদলের নীচে অক্ষরগুলি স্থান ব্যতীত যে কোনও চর হতে পারে।

আমি কি ধরে নিতে পারি যে পূর্ণসংখ্যাগুলি অনন্য?
জার্গ হালসারম্যান

n^4? আপনি এখানে কিছুটা উদার হচ্ছেন।
orlp

@ জার্গহ্লসারম্যান ন
লুভজো


3
আপনি বলেছেন ইনপুটটি ইতিবাচক পূর্ণসংখ্যার তবে আপনার উদাহরণটিতে একটি রয়েছে 0(দয়া করে কেবল উদাহরণটি ঠিক করুন যাতে 0 টি পরিচালনা করতে পারে না এমন উত্তরগুলিকে অবৈধ করতে না পারে)
টন হসপেল

উত্তর:


10

পার্ল, 62 বাইট

জন্য +3 অন্তর্ভুক্ত -p

STDIN এ সংখ্যার একক লাইন হিসাবে ইনপুট দিন:

perl -M5.010 visisort.pl <<< "3 0 4 2 1"

বারবার প্রথম বিপরীতটি অদলবদল করে। অদলবদল জটিলতা O(n^2), সময় জটিলতা হয় O(n^3)। চিহ্ন হিসাবে অদলবদল করা নম্বরগুলি ব্যবহার করে:

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

visisort.pl:

#!/usr/bin/perl -p
$&>$'&&say$_.$"x"@-".!s/(\S+) \G(\S+)/$2 $1/.$&while/\S+ /g

প্রোগ্রামটি নেতিবাচক মান এবং ভাসমান পয়েন্ট সংখ্যাগুলিকে সমর্থন করে

আপনি যদি কোনও সংযোগকারী চরিত্রের উপর জোর দেন তবে কোডটি 66 বাইট হয়ে যায়:

#!/usr/bin/perl -p
$&>$'&&say$_.$"x"@-".!s/(\S+) \G(\S+)/$2 $1/.$1.-$2while/\S+ /g

তবে এখন এটি নেতিবাচক সংখ্যা এবং 0 কে আর সমর্থন করে না (তবে প্রোগ্রামটি কেবল যাইহোক ইতিবাচক পূর্ণসংখ্যার সমর্থন করতে পারে 0the উদাহরণটিতে একটি ভুল)


প্রদত্ত যে The characters under the swapped can be any char except space. আপনার চিহ্নিত
লাইকের

@ edc65 উপাদানগুলির অদলবদল হওয়াতে অক্ষর (গুলি) কোনও স্থান নয়। তাদের মধ্যে চরিত্রগুলি সম্পর্কে কিছুই বলা হয় না
টন হসপেল

পুরোপুরি নিশ্চিত নয়, তবে ঠিক আছে। আমি খুব দ্রুত ডাউনভোটিং (তবে আমি আপনার দৃষ্টি আকর্ষণ করেছি)। আপনি যদি নিজের উত্তরে একটি (খালি) সম্পাদনা করেন আমি আমার ভোটটি পরিবর্তন করব
edc65

@ edc65 ঠিক আছে, আপনার মন্তব্য আমাকে চ্যালেঞ্জটি খুব সাবধানে পুনঃপ্রকাশ করেছে। লক্ষ্য করুন যে তিনি মাল্টিডিজিট সংখ্যার ক্ষেত্রেও স্পষ্টরূপে অর্থ বোঝায় যে আপনি উদাহরণস্বরূপ _প্রথম অঙ্কের নীচে একটি অক্ষর রেখেছেন যার অর্থ সমস্ত অক্ষর অভ্যন্তরীণ স্থানটি বাস্তবে ফাঁক হবে। সুতরাং আমি আমার ব্যাখ্যার পাশে দাঁড়িয়েছি (যদি না ওপি অবশ্যই এর সাথে একমত না হয়)। শুধু আপনাকে খুশি
করতেই কিনুন

9

জাভাস্ক্রিপ্ট (ES6), 158 বাইট

a=>{for(;;){console.log(``+a);i=a.findIndex((e,i)=>e<a[i-1]);if(i<0)break;console.log(` `.repeat(`${a.slice(0,i)}`.length-1)+`|-|`);t=a[i];a[i]=a[--i];a[i]=t}}

বুদ্বুদ সাজান। নমুনা আউটপুট:

3,0,4,2,1
|-|
0,3,4,2,1
    |-|
0,3,2,4,1
  |-|
0,2,3,4,1
      |-|
0,2,3,1,4
    |-|
0,2,1,3,4
  |-|
0,1,2,3,4

@ নিমিমি যেহেতু আমি সর্বদা সংলগ্ন উপাদানগুলিকে অদলবদল করি, আমি সর্বদা এটির -নীচে রাখতে পারি ,এবং তারপরে দুটি |গুলি সর্বদা সংলগ্ন সংখ্যার নীচে থাকবে।
নীল

আহ, চতুর! ধন্যবাদ!
নিমি

1
অদলবদল করা সংখ্যার হাইলাইটিংকে সহজ করার জন্য বুদ্বুদ সাজানোর কাজটি সত্যই বিচারযোগ্য পছন্দ। সাবাশ!
আর্নৌল্ড

9

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

বুদবুদে বোরিং জেতা

<?for($c=count($a=$_GET[a]);$c--;){for($s=$i=0;$i<$c;){$l=strlen($j=join(",",$a));if($a[$i]>$a[$i+1]){$t=$a[$i];$a[$i]=$a[$i+1];$a[$i+1]=$t;$m=" ";$m[$s]=I;$m[$s+strlen($a[$i].$a[$i+1])]=X;echo"$j\n$m\n";}$s+=strlen($a[$i++])+1;}}echo join(",",$a);

পিএইচপি, 266 অ্যারে_স্লাইস এবং মিনিট সহ একটি উপায় বাইট

I Xপরিবর্তে পরিবর্তিত আউটপুট*~~*

<?for($c=count($a=$_GET[a]);$i<$c;){$j=join(",",$s=($d=array_slice)($a,$i));$x=array_search($m=min($s),$s);echo($o=join(",",$a));$a[$x+$i]=$a[$i];$a[$i]=$m;if($i++!=$c-1){$t=" ";$t[$z=($f=strlen)($o)-($l=$f($j))]=I;$t[$l+$z-$f(join(",",$d($s,$x)))]=X;echo"\n$t\n";}}

282 বাইট

<?for($c=count($a=$_GET[a]);$i<$c;){$j=join(",",$s=($d=array_slice)($a,$i));$x=array_search($m=min($s),$s);echo($o=join(",",$a));$a[$x+$i]=$a[$i];$a[$i]=$m;if($i++!=$c-1)echo"\n".str_repeat(" ",($f=strlen)($o)-($l=$f($j))).($x?str_pad("*",$l-$f(join(",",$d($s,$x))),"~"):"")."*\n";}

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

একটি অ্যারেতে সর্বনিম্ন সন্ধান করুন এবং এটিকে প্রথম অবস্থানে নিয়ে যান প্রথম অবস্থান ছাড়াই সর্বনিম্ন সন্ধান করুন .... এবং অন্য কোনও মান দ্বিগুণ হলে প্রথম মানটি অদলবদল হবে

আউটপুট উদাহরণ

31,7,0,5,5,5,753,5,99,4,333,5,2,1001,35,1,67
*~~~~*
0,7,31,5,5,5,753,5,99,4,333,5,2,1001,35,1,67
  *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
0,1,31,5,5,5,753,5,99,4,333,5,2,1001,35,7,67
    *~~~~~~~~~~~~~~~~~~~~~~~~~*
0,1,2,5,5,5,753,5,99,4,333,5,31,1001,35,7,67
      *~~~~~~~~~~~~~~*
0,1,2,4,5,5,753,5,99,5,333,5,31,1001,35,7,67
        *
0,1,2,4,5,5,753,5,99,5,333,5,31,1001,35,7,67
          *
0,1,2,4,5,5,753,5,99,5,333,5,31,1001,35,7,67
            *~~~*
0,1,2,4,5,5,5,753,99,5,333,5,31,1001,35,7,67
              *~~~~~~*
0,1,2,4,5,5,5,5,99,753,333,5,31,1001,35,7,67
                *~~~~~~~~~~*
0,1,2,4,5,5,5,5,5,753,333,99,31,1001,35,7,67
                  *~~~~~~~~~~~~~~~~~~~~~*
0,1,2,4,5,5,5,5,5,7,333,99,31,1001,35,753,67
                    *~~~~~~*
0,1,2,4,5,5,5,5,5,7,31,99,333,1001,35,753,67
                       *~~~~~~~~~~~*
0,1,2,4,5,5,5,5,5,7,31,35,333,1001,99,753,67
                          *~~~~~~~~~~~~~~~*
0,1,2,4,5,5,5,5,5,7,31,35,67,1001,99,753,333
                             *~~~~*
0,1,2,4,5,5,5,5,5,7,31,35,67,99,1001,753,333
                                *~~~~~~~~*
0,1,2,4,5,5,5,5,5,7,31,35,67,99,333,753,1001
                                    *
0,1,2,4,5,5,5,5,5,7,31,35,67,99,333,753,1001

পরিবর্তে echo$t."\n";, আপনি echo"$t\n";একটি বাইট ব্যবহার এবং সংরক্ষণ করতে পারেন ।
ইসমাইল মিগুয়েল

@ ইসমাইল মিগুয়েল আপনার পোস্টগুলি সম্পাদনা করতে নির্দ্বিধায় মনে করেন আপনি যদি কিছু উন্নতি করতে চান
জার্গ হালসারম্যান

7
পোস্টগুলিতে কোড সম্পাদনাগুলি সাধারণত অস্বীকার করা হয়, যা আমি সম্পূর্ণরূপে একমত।
ইসমাইল মিগুয়েল

3

হাস্কেল, 165 164 162 বাইট

s%c=drop 2$show s>>c
p#x|(h,t:s)<-span(/=minimum x)x=id=<<[show$p++x,"\n ",[' '|p>[]],p%" ","|",h%"-",['|'|h>[]],"\n",(p++[t])#(drop 1h++take 1h++s)]|1<2=""
([]#)

এটি নির্বাচনের বাছাইয়ের ভিজ্যুয়ালাইজ করে। ব্যবহারের উদাহরণ:

*Main> putStr $ ([]#) [31,7,0,5,5,5,753,5,99,4,333,5,2,1001,35,1,67]
[31,7,0,5,5,5,753,5,99,4,333,5,2,1001,35,1,67]
 |----|
[0,7,31,5,5,5,753,5,99,4,333,5,2,1001,35,1,67]
   |-------------------------------------|
[0,1,31,5,5,5,753,5,99,4,333,5,2,1001,35,7,67]
     |-------------------------|
[0,1,2,5,5,5,753,5,99,4,333,5,31,1001,35,7,67]
       |--------------|
[0,1,2,4,5,5,753,5,99,5,333,5,31,1001,35,7,67]
         |
[0,1,2,4,5,5,753,5,99,5,333,5,31,1001,35,7,67]
           |
[0,1,2,4,5,5,753,5,99,5,333,5,31,1001,35,7,67]
             |---|
[0,1,2,4,5,5,5,753,99,5,333,5,31,1001,35,7,67]
               |------|
[0,1,2,4,5,5,5,5,99,753,333,5,31,1001,35,7,67]
                 |----------|
[0,1,2,4,5,5,5,5,5,753,333,99,31,1001,35,7,67]
                   |---------------------|
[0,1,2,4,5,5,5,5,5,7,333,99,31,1001,35,753,67]
                     |------|
[0,1,2,4,5,5,5,5,5,7,31,99,333,1001,35,753,67]
                        |-----------|
[0,1,2,4,5,5,5,5,5,7,31,35,333,1001,99,753,67]
                           |---------------|
[0,1,2,4,5,5,5,5,5,7,31,35,67,1001,99,753,333]
                              |----|
[0,1,2,4,5,5,5,5,5,7,31,35,67,99,1001,753,333]
                                 |--------|
[0,1,2,4,5,5,5,5,5,7,31,35,67,99,333,753,1001]
                                     |
[0,1,2,4,5,5,5,5,5,7,31,35,67,99,333,753,1001]
                                         |

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

s % cএকটি সহায়ক ফাংশন যা length (show s) - 2চরিত্রের অনুলিপি তৈরি করে c। এটি উভয়ের আগে ব্যবধানের জন্য ব্যবহৃত হয় |, এক সময় c == ' 'এবং একসাথে c == '-'

প্রধান ফাংশন #একটি তালিকা নেয় pযা তালিকার অনুসারে বাছাই করা অংশ এবং xকোনটি এখনও অংশটি বাছাই করতে পারে। প্যাটার্ন মিলটি (h,t:s)<-span(/=minimum x)xতালিকাটিকে xতার সর্বনিম্ন উপাদানে বিভক্ত করে এবং ন্যূনতমের hআগে অংশটি tন্যূনতম এবং নিজেই ন্যূনতমের পরে অংশে আবদ্ধ হয় s। 1) তার বর্তমান রাজ্য (এ তালিকা: বাকি দুই লাইন বিন্যাস করা হয় p++x) এবং 2) |----|অংশ একটি recursive কল দ্বারা অনুসরণ #সঙ্গে tসংযোজন pএবং প্রধান hএর লেঙ্গুড় মধ্যে ঢোকানো hএবং s

পিএস: নেগেটিভ এবং / বা ভাসমান পয়েন্ট সংখ্যাগুলির সাথেও কাজ করে:

*Main> putStr $ ([]#) [-3,-1,4e33,-7.3]
[-3.0,-1.0,4.0e33,-7.3]
 |----------------|
[-7.3,-1.0,4.0e33,-3.0]
      |-----------|
[-7.3,-3.0,4.0e33,-1.0]
           |------|
[-7.3,-3.0,-1.0,4.0e33]
                |

সম্পাদনা করুন: @ ব্ল্যাকক্যাপ 2 বাইট সংরক্ষণ করেছে। ধন্যবাদ!


id=<<[show$p++x,"\n ",[' '|p>[]],p%" ","|",h%"-",['|'|h>[]],"\n",(p++[t])#(drop 1h++take 1h++s)]
ব্ল্যাকক্যাপ

1

পাইথন 2, 267 বাইট

এটি দশমিক এবং নেতিবাচক সংখ্যাগুলির সাথেও কাজ করে।

p=1
while p!=len(a):    
 q=p-1;k=a[p:];m=min(k);n=k.index(m)+p;b=map(str,a)
 if a[q]>m:print','.join(b)+'\n'+''.join(' '*len(i)for i in b[:q])+' '*q+'*'+'-'*(len(b[n])+n-q-2)+''.join('-'*len(i)for i in b[q:n])+'*';a[q],a[n]=[a[n],a[q]]
 p+=1
print','.join(map(str,a))

উদাহরণ:

7,2,64,-106,52.7,-542.25,54,209,0,-1,200.005,200,3,6,1,0,335,-500,3.1,-0.002
*----------------------*
-542.25,2,64,-106,52.7,7,54,209,0,-1,200.005,200,3,6,1,0,335,-500,3.1,-0.002
        *-------------------------------------------------------*
-542.25,-500,64,-106,52.7,7,54,209,0,-1,200.005,200,3,6,1,0,335,2,3.1,-0.002
             *-----*
-542.25,-500,-106,64,52.7,7,54,209,0,-1,200.005,200,3,6,1,0,335,2,3.1,-0.002
                  *-------------------*
-542.25,-500,-106,-1,52.7,7,54,209,0,64,200.005,200,3,6,1,0,335,2,3.1,-0.002
                     *-----------------------------------------------------*
-542.25,-500,-106,-1,-0.002,7,54,209,0,64,200.005,200,3,6,1,0,335,2,3.1,52.7
                            *--------*
-542.25,-500,-106,-1,-0.002,0,54,209,7,64,200.005,200,3,6,1,0,335,2,3.1,52.7
                              *-----------------------------*
-542.25,-500,-106,-1,-0.002,0,0,209,7,64,200.005,200,3,6,1,54,335,2,3.1,52.7
                                *------------------------*
-542.25,-500,-106,-1,-0.002,0,0,1,7,64,200.005,200,3,6,209,54,335,2,3.1,52.7
                                  *-------------------------------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,64,200.005,200,3,6,209,54,335,7,3.1,52.7
                                    *--------------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,200.005,200,64,6,209,54,335,7,3.1,52.7
                                      *-------------------------------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,200,64,6,209,54,335,7,200.005,52.7
                                          *------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,6,64,200,209,54,335,7,200.005,52.7
                                            *-----------------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,6,7,200,209,54,335,64,200.005,52.7
                                              *----------------------------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,6,7,52.7,209,54,335,64,200.005,200
                                                   *----*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,6,7,52.7,54,209,335,64,200.005,200
                                                      *--------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,6,7,52.7,54,64,335,209,200.005,200
                                                         *-----------------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,6,7,52.7,54,64,200,209,200.005,335
                                                             *---------*
-542.25,-500,-106,-1,-0.002,0,0,1,2,3,3.1,6,7,52.7,54,64,200,200.005,209,335

1

জাভাস্ক্রিপ্ট (ES6), 147 155

এন * এন তুলনা করে ব্যবহার করে, তবে (আমি বিশ্বাস করি) সর্বনিম্ন স্বাপের সংখ্যা। বোরিং বুদ্বুদ সাজানোর তুলনায় অদলবদলের অবস্থানগুলি আরও পরিবর্তনশীল।

l=>l.reduce((z,v,i)=>l.map((n,j)=>s+=`${j>i?n<l[i]?l[p=j,t=s,i]=n:0:u=s,n},`.length,s=p=0)|p?z+`
${l[p]=v,' '.repeat(u)}^${Array(t-u)}^
`+l:z,''+l)

কম গল্ফ এবং আশা আরও বোধগম্য

l=>
  l.reduce( (z,v,i) => // update z for each list element v at position i
    ( // begin outer loop body
      // loop to find the least value that is to be placed at pos i
      l.map( (n,j) => // for each list element n at position j
        ( // begin inner loop body
          j > i ? // check if at position after i
            n < l[i] && // check if lower value 
            (
              p = j, // remember position in p 
              l[i] = n, // store value in l[i] (could change later)
              t = s // in t, string length of list elements up element preciding j
            )
          : // else, position up to i
            u = s, // in u, string length of list elements up element preciding i
          s += `${n},`.length, // string length of list elements up to this point (value length + comma)
        ) // end inner loop body
        , s = p = 0 // init s and p at start of inner loop
      ), 
      p ? (// if found a lower value, complete the swap and update output
          l[p] = v, // complete swap, l[i] was assigned before
          z + '\n' + ' '.repeat(u) + // spaces to align 
               '^' + // left marker
               Array(t-u) + // swap highlight, using sequence of commas
               '^\n' + // right marker, newline
               l + // list values after the swap, newline
      )
      : z // else output is unchanged
    ) // end outer loop body
    , ''+l // init string output at start of outer loop
  ) // output is the result of reduce

পরীক্ষা

f=
l=>l.reduce((z,v,i)=>l.map((n,j)=>s+=`${j>i?n<l[i]?l[p=j,t=s,i]=n:0:u=s,n},`.length,s=p=0)|p?z+`
${l[p]=v,' '.repeat(u)}^${Array(t-u)}^
`+l:z,''+l)

function sort()
{
  var list=I.value.match(/-?[\d.]+/g).map(x=>+x)
  O.textContent = f(list)
}

sort()
#I { width:80% }
<input id=I value='3, 0, 4, 2, 1'>
<button onclick='sort()'>Sort</button>
<pre id=O></pre>


0

জাভা 7, 256 241 282 বাইট

15 জ্যাকেট সংরক্ষণ করার জন্য @ জিওবিটস এবং @ অ্যাক্সেলহকে ধন্যবাদ

 void f(int[]a){int m,i,j,l=a.length;for(i=0;i<l;j=a[i],a[i]=a[m],a[m]=j,i++){for(int k:a)System.out.print(k+" ");System.out.println();for(j=i+1,m=i;j<l;m=a[j]<a[m]?j:m,j++);for(j=0;j<=m&i!=l-1;j++)System.out.print(j==i|j==m?a[j]+" ":"  ");System.out.println();}}

Ungolfed

 void f(int[]a){
    int m,i,j,l=a.length;
for(i=0;i<l;j=a[i],a[i]=a[m],a[m]=j,i++){
    for(int k:a)
        System.out.print(k+" ");
    System.out.println();
     for(j=i+1,m=i;j<l;m=a[j]<a[m]?j:m,j++);
      for(j=0;j<=m&i!=l-1;j++)
      System.out.print(j==i|j==m?a[j]+" ":"  ");
      System.out.println();        

}
}

আউটপুট

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

4
এটি এখনও ঘোষণার বাইরে রয়েছে out, PrintStream out=System.out;আপনার কোডে কোথাও এমন কিছু রাখার দরকার আছে ।
লুভজো

2
আমদানি / ঘোষণার স্থিরকরণের পরে out, আপনি if/elseউভয় শাখায় মুদ্রণ করতে যাচ্ছেন তার পরিবর্তে আপনার একটি তিন্নি ব্যবহার করা উচিত । out.print(a>b?a:b);পরিবর্তে এর মতো কিছুif(a>b)out.print(a);else out.print(b);
জিওবিটস

আপনি যদি অন্যটি এর মতো দেখতে চান তবে এটি হ্রাস করতে পারেন: if(j==i|j==m)out.print(a[j]);out.print(" ");বা আরও ভাল একটি টার্নারি দিয়ে out.print((j==i|j==m?a[j]:" ")+" ");এবং তারপরে আপনি লুপের {remove অপসারণ করতে পারেন: আমি
বাহ্যিক

হুম, পৃথক্ অন্যদের থেকে golfing টিপস থেকে আউটপুট ভুল .. এখানে আপনার কোড কপি-পেস্ট সঙ্গে একটি ideone হয় (এবং যোগ System.সামনে outগুলি), এবং এটি অনুপস্থিত 2এবং 3দুই গত swap 'র-লাইন।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন আমি এটিকে সংশোধন করেছি uallyআসলে আমি এই ভেরিয়েবলের সাথে জে ভেরিয়েবলের (আমি হওয়া উচিত) for(j=0;j<=m&i!=l-1;j++)
মিশ্রণ করব

0

জেলি , 36 বাইট

I;0CMḢ;L‘ṬCœṗ¹UF©µÐĿ,n+32Ọ$¥¥2\;/®ṭG

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

ব্যাখ্যা

I;0CMḢ;L‘ṬCœṗ¹UF©µÐĿ,n+32Ọ$¥¥2\;/®ṭG
                 µÐĿ                 Repeat until we see a previously seen value:
I;0                                    Take differences of adjacent inputs, and 0
   CM                                  Find the indices (M) of the smallest (C) 
           œṗ                          Split {the input} into pieces
        ‘Ṭ                               that end
      ;L  C                              everywhere except
     Ḣ                                 the first of the chosen deltas
             ¹                         Resolve parser ambiguity
              U                        Reverse each piece
               F                       Concatenate the pieces back into a list
                ©                      Store the value in a register
                                     Then, on the accumulated list of results:
                             2\        Look at each consecutive pair of results
                    ,       ¥  ;/      and return the first element, followed by
                      +32Ọ$            the character with code 32 plus
                     n     ¥           1 (if unequal), 0 (if equal)
                                 ®ṭ  Append the value of the register
                                   G Output in grid form

টিআইও লিঙ্কে প্রদর্শিত উদাহরণটি এই প্রোগ্রামের জন্য বিশেষত কঠোর; ;0শুরু কাছাকাছি তা নিশ্চিত করার জন্য লুপ ঠিক যেখানে ইনপুট সাজানো হয়ে এ সমাপ্ত প্রয়োজন। এটি সাধারণত প্রয়োজন হয় না (কারণ এটি আরও একটি পুনরাবৃত্তির পরে শেষ হবে), তবে শেষ সোয়াপটি যদি প্রথম দুটি উপাদানগুলির হয় (যেমন এখানে দেখা যায়) তবে একাধিক-পুনরাবৃত্তি ঘটবে না এবং এটি শেষ করা অসম্ভব করে তোলে ধারাবাহিকভাবে তালিকা। এর মতো, আমাদের নিশ্চিত করতে হবে যে আমরা শেষ লুপের পুনরাবৃত্তিতে কোনও কিছুকে অদলবদল করব না।

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