আপনি কি দয়া করে ডেকে বদলানো বন্ধ করে ইতিমধ্যে খেলতে পারেন?


31

চ্যালেঞ্জ:

ইনপুট: মধ্যে স্বতন্ত্র ধনাত্মক পূর্ণসংখ্যার একটি তালিকা ।[1,list-size]

আউটপুট: একটি পূর্ণসংখ্যা: তালিকার পরিমাণটি রিফল-শিফেল হয় । একটি তালিকার জন্য, এর অর্থ হল তালিকাটি দুটি ভাগে বিভক্ত, এবং এই অর্ধেকগুলি আন্তঃবিভক্ত হয় (অর্থাত্ তালিকাগুলি তালিকায় [1,2,3,4,5,6,7,8,9,10]একবারে পরিবর্তিত হবে [1,6,2,7,3,8,4,9,5,10], সুতরাং এই চ্যালেঞ্জের জন্য [1,6,2,7,3,8,4,9,5,10]ফলাফলটি ইনপুট তৈরি করে 1)।

চ্যালেঞ্জ বিধি:

  • আপনি ধরে নিতে পারেন তালিকায় কেবলমাত্র [1,list-size] (অথবা মধ্যে ইতিবাচক পূর্ণসংখ্যা থাকবে তবে যদি আপনি 0-ইনডেক্সড ইনপুট-তালিকাগুলি পছন্দ করেন)।[0,list-size1]
  • আপনি ধরে নিতে পারেন সমস্ত ইনপুট-তালিকা হয় বৈধ রিফল-শিফলেড তালিকা, বা একটি সাজানো তালিকা যা বদলে যাবে না (যার ক্ষেত্রে আউটপুটটি হবে 0)।
  • আপনি ধরে নিতে পারেন ইনপুট-তালিকায় অন্তত তিনটি মান থাকবে।

ধাপে ধাপে উদাহরণ:

ইনপুট: [1,3,5,7,9,2,4,6,8]

এটি আনসাফলিং একবার হয়ে যায়: [1,5,9,4,8,3,7,2,6]কারণ প্রতিটি এমনকি 0- সূচিযুক্ত আইটেমটি প্রথমে আসে [1, ,5, ,9, ,4, ,8]এবং তারপরে তার পরে সমস্ত বিজোড় 0- সূচিযুক্ত আইটেম আসে [ ,3, ,7, ,2, ,6, ]
তালিকাটি এখনও অর্ডার করা হয়নি, তাই আমরা চালিয়ে যাচ্ছি:

তালিকাটি আনসাফলিং আবার হয়ে যায়: [1,9,8,7,6,5,4,3,2]
আবার হয়ে যায়: [1,8,6,4,2,9,7,5,3]
তারপরে: [1,6,2,7,3,8,4,9,5]
এবং শেষ অবধি:, যা একটি আদেশযুক্ত [1,2,3,4,5,6,7,8,9]তালিকা, সুতরাং আমরা আনসাফালিং সম্পন্ন করেছি।

আমরা আসার জন্য মূলটি [1,3,5,7,9,2,4,6,8]পাঁচবার আনসফাল করেছি [1,2,3,4,5,6,7,8,9], সুতরাং আউটপুট 5এই ক্ষেত্রে।

সাধারাইওন রুল:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • আপনার উত্তরটির জন্য ডিফল্ট আই / ও বিধিগুলি সহ মানক বিধিগুলি প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং ফিরতি-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে দয়া করে আপনার কোডের (যেমন টিআইও ) একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন ।
  • এছাড়াও, আপনার উত্তরের জন্য একটি ব্যাখ্যা যুক্ত করা অত্যন্ত প্রস্তাবিত।

পরীক্ষার কেস:

Input                                                   Output

[1,2,3]                                                 0
[1,2,3,4,5]                                             0
[1,3,2]                                                 1
[1,6,2,7,3,8,4,9,5,10]                                  1
[1,3,5,7,2,4,6]                                         2
[1,8,6,4,2,9,7,5,3,10]                                  2
[1,9,8,7,6,5,4,3,2,10]                                  3
[1,5,9,4,8,3,7,2,6,10]                                  4
[1,3,5,7,9,2,4,6,8]                                     5
[1,6,11,5,10,4,9,3,8,2,7]                               6
[1,10,19,9,18,8,17,7,16,6,15,5,14,4,13,3,12,2,11,20]    10
[1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20]    17
[1,141,32,172,63,203,94,234,125,16,156,47,187,78,218,109,249,140,31,171,62,202,93,233,124,15,155,46,186,77,217,108,248,139,30,170,61,201,92,232,123,14,154,45,185,76,216,107,247,138,29,169,60,200,91,231,122,13,153,44,184,75,215,106,246,137,28,168,59,199,90,230,121,12,152,43,183,74,214,105,245,136,27,167,58,198,89,229,120,11,151,42,182,73,213,104,244,135,26,166,57,197,88,228,119,10,150,41,181,72,212,103,243,134,25,165,56,196,87,227,118,9,149,40,180,71,211,102,242,133,24,164,55,195,86,226,117,8,148,39,179,70,210,101,241,132,23,163,54,194,85,225,116,7,147,38,178,69,209,100,240,131,22,162,53,193,84,224,115,6,146,37,177,68,208,99,239,130,21,161,52,192,83,223,114,5,145,36,176,67,207,98,238,129,20,160,51,191,82,222,113,4,144,35,175,66,206,97,237,128,19,159,50,190,81,221,112,3,143,34,174,65,205,96,236,127,18,158,49,189,80,220,111,2,142,33,173,64,204,95,235,126,17,157,48,188,79,219,110,250]
                                                        45

বিজোড় দৈর্ঘ্য এবং 0 এর চেয়ে বড় আউটপুট সহ এক বা দুটি পরীক্ষার কেস ভাল হবে। আপনি যদি বিল্টিনের উপর নির্ভর না করে নিজেই রাইফেল কোডটি লিখতে হয় তবে এই জাতীয় ক্ষেত্রে রিফেলটি গোলমাল করা সহজ।
অলিভিয়ার গ্রাগোয়ার

@ অলিভিয়েরগ্রোওয়ের [1,3,5,7,9,2,4,6,8]দৈর্ঘ্য 9, তবে আমি সম্ভবত 7 এবং 11 এর দৈর্ঘ্যের জন্য আরও কয়েকটি যুক্ত করব। সম্পাদনা: পরীক্ষার কেসগুলি [1,3,5,7,2,4,6] = 2(দৈর্ঘ্য 7) এবং [1,6,11,5,10,4,9,3,8,2,7] = 6(দৈর্ঘ্য 11) যুক্ত করা হয়েছে। আশা করি এইটি কাজ করবে.
কেভিন ক্রুইজসেন

আমার খারাপ: আমি নিশ্চিত যে আপনি উল্লেখ করেছেন এমন পরীক্ষার কেসটি ৮ মাপের ছিল তবে অতিরিক্ত পরীক্ষার মামলার জন্য ধন্যবাদ।
অলিভিয়ের গ্রাগোয়ার

1
প্রশ্নটি যেমনটি প্রস্তুত করা হয়েছে "ভুল" বলে মনে হচ্ছে ... একক রাইফেল শফলের ফলে প্রথম এবং শেষ কার্ডগুলি পরিবর্তিত হওয়া উচিত, যদি না আপনি কোনও ধরণের কনক্রিটকে টানছেন! অর্থাত্ [6,1,7,2,8,3,9,4,10,5] 10 টি কার্ডের একক বদল পরে।
স্টিভ

2
@ স্টিভ আমি অনুমান করি আপনি ঠিক ঠিক আছেন। তাস শাফল-অদলবদল সাধারণভাবে কেবল দুই অর্ধেক interleaves, তাই উভয় [1,6,2,7,3,8,4,9,5,10]বা [6,1,7,2,8,3,9,4,10,5]সম্ভব। আমার চ্যালেঞ্জের মধ্যে এর অর্থ এই নয় যে শীর্ষস্থানীয় কার্ডটি সর্বদা শীর্ষস্থানীয় কার্ডে থাকবে, সুতরাং এটি সত্যিই কিছুটা কৌশল অবলম্বন করে .. তবে আমি কখনও কখনও কাউকে দেখিনি কার্ডটি ডেকে ডুবিয়ে দেওয়ার জন্য কেবল কোনও রাইফেল-শ্যাফেল ব্যবহার করেন না । সাধারণত তারা মাঝে মধ্যে অন্যান্য ধরণের শ্যাফেলও ব্যবহার করে। যাইহোক, এখনই চ্যালেঞ্জটি পরিবর্তন করতে খুব দেরি হয়েছে, সুতরাং এই চ্যালেঞ্জের জন্য শীর্ষ কার্ডটি একটি রাইফেল-শ্যাফলের পরে সর্বদা শীর্ষ কার্ডে থাকবে।
কেভিন ক্রুইজসেন

উত্তর:


6

জেলি , 8 বাইট

ŒœẎ$ƬiṢ’

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

কিভাবে?

ŒœẎ$ƬiṢ’ - Link: list of integers A
    Ƭ    - collect up until results are no longer unique...
   $     -   last two links as a monad:
Œœ       -     odds & evens i.e. [a,b,c,d,...] -> [[a,c,...],[b,d,...]]
  Ẏ      -     tighten                         -> [a,c,...,b,d,...]
     Ṣ   - sort A
    i    - first (1-indexed) index of sorted A in collected shuffles
      ’  - decrement

25

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

সংক্ষিপ্ত সংস্করণ @nwellnhof দ্বারা প্রস্তাবিত

ইনপুট হিসাবে 1-ইনডেক্স কার্ডের ডেক আশা করে।

f=(a,x=1)=>a[x]-2&&1+f(a,x*2%(a.length-1|1))

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

দৈর্ঘ্যের L এর একটি ডেক [c0,,cL1] , আমরা সংজ্ঞায়িত করি:L

xn={2nmodLif L is odd2nmod(L1)if L is even

এবং আমরা জন্য চেহারা n যেমন যে cxn=2


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

ইনপুট হিসাবে 0-সূচিযুক্ত কার্ডের সাথে একটি ডেক আশা করে।

f=(a,x=1,k=a.length-1|1)=>a[1]-x%k&&1+f(a,x*-~k/2)

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

কিভাবে?

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

দৈর্ঘ্যের L ডেকে দেওয়া , এই কোডটি n মতো দেখায় :

c2(k+12)n(modk)

যেখানে c2 দ্বিতীয় কার্ড এবং হিসাবে সংজ্ঞায়িত করা হয়েছে:

k={Lif L is oddL1if L is even


12

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

f=lambda x:x[1]-2and-~f(x[::2]+x[1::2])

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

-4 জনাথন অ্যালানকে ধন্যবাদ ।


এর সাথে চারটি বাইট সংরক্ষণ করুনf=lambda x:2!=x[1]and-~f(x[::2]+x[1::2])
জোনাথন অ্যালান

@ জোনাথন অ্যালান ওহ, অবশ্যই! ভাল ... !=হতে পারে -। ;-)
এরিক দি আউটগলফার

আহ, হ্যাঁ গুপ্তচর সম্রাট: ডি (বা কেবল x[1]>2আমার অনুমান)
জোনাথন অ্যালান

5

আর , 58 55 45 বাইট

a=scan();while(a[2]>2)a=matrix(a,,2,F<-F+1);F

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

বাছাই প্রক্রিয়া সিমুলেট করে। ইনপুটটি 1-ইনডেক্সড হয়, FALSE0 এর জন্য ফিরে আসে ।


খুব সুন্দর! আমি একই ধরণের পদ্ধতির উপর কাজ করছি তবে একটি পুনরাবৃত্ত ফাংশন ব্যবহার করছি, যা গোলাপী হিসাবে কাজ করে না।
ব্যবহারকারী 2390246

5

পার্ল 6 , 34 32 বাইট

-2 বাইট জো কিংকে ধন্যবাদ জানায়

{(.[(2 X**^$_)X%$_-1+|1]...2)-1}

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

আরনাউল্ডের পদ্ধতির অনুরূপ । এন শফলেসের পরে দ্বিতীয় কার্ডের সূচকটি 2**n % kআরনাউল্ডের উত্তরের হিসাবে সংজ্ঞায়িত k সহ।


5

এপিএল (ডায়ালগ ইউনিকোড) , 35 26 23 22 বাইট এসবিসিএস

{⍵≡⍳≢⍵:01+∇⍵[⍒2|⍳⍴⍵]}

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

সহায়তার জন্য অ্যাডমকে ধন্যবাদ, -৩-এর জন্য এরিক আউটগল্ফার এবং -১ এর জন্য এনএনজি।

টিআইও লিঙ্কটিতে দুটি পরীক্ষার মামলা রয়েছে।

ব্যাখ্যা:

{⍵≡⍳≢⍵:01+∇⍵[⍒2|⍳⍴⍵]}
{⍵≡⍳≢⍵:01+∇⍵[⍒2|⍳⍴⍵]}  function takes one argument: ⍵, the array
 ⍵≡⍳≢⍵                  if the array is sorted:
 ⍵≡⍳≢⍵                  array = 1..length(array)
      :0                then return 0
                       otherwise
         1+             increment
                       the value of the recursive call with this argument:
            ⍵[      ]   index into the argument with these indexes:
                 ⍳⍴⍵    - generate a range from 1 up to the size of 
               2|       - %2: generate a binary mask like [1 0 1 0 1 0]
                       - grade (sorts but returns indexes instead of values), so we have the indexes of all the 1s first, then the 0s.

¹



@ এরিকথ আউটগল্ফার আরও অনেক ভাল, ধন্যবাদ!
ভেন

1
∧/2≤/⍵->⍵≡⍳≢⍵
এনজিএন

@ জিএন বুঝতে পারল না অ্যারের কোনও গর্ত নেই had ধন্যবাদ!
ভেন

4

পার্ল 6 , 36 34 32 বাইট

-২ বাইটস নোহেলহোফকে ধন্যবাদ

$!={.[1]-2&&$!(.sort:{$++%2})+1}

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

তালিকাটি বাছাই না হওয়া অবধি সূচি মোডোলো 2 অনুসারে বাছাই করে রিফাল শফলগুলি সিকোয়েন্সের দৈর্ঘ্য প্রদান করে।

এটি মজার, আমি সাধারণত পার্ল 6 এর জন্য পুনরাবৃত্ত পদ্ধতির চেষ্টা করি না, তবে এবার এটি আসলটির চেয়ে ছোট হয়ে গেল।

ব্যাখ্যা:

$!={.[1]-2&&$!(.sort:{$++%2})+1}
$!={                           }   # Assign the anonymous code block to $!
    .[1]-2&&                       # While the list is not sorted
            $!(             )      # Recursively call the function on
               .sort:{$++%2}       # It sorted by the parity of each index
                             +1    # And return the number of shuffles

3

05 এ বি 1 ই (উত্তরাধিকার) , 9 বাইট

[DāQ#ι˜]N

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

ব্যাখ্যা

[   #  ]     # loop until
  ā          # the 1-indexed enumeration of the current list
 D Q         # equals a copy of the current list
     ι˜      # while false, uninterleave the current list and flatten
        N    # push the iteration index N as output

আমি এমনকি জানতাম না যে উত্তরাধিকারের লুপের বাইরে সূচকটি আউটপুট করা সম্ভব। আমি ভেবেছিলাম নতুন 0 এএবি 1 ই সংস্করণটির মতো এটি আবার 0 হবে। চমৎকার উত্তর! এই চ্যালেঞ্জকে অনুপ্রাণিত করে এমন আনস্ফাল-বিল্টিন ব্যবহার করে আমার 10-বাইটারের চেয়ে কম Å≠। :)
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: আকর্ষণীয়। আমি জানতাম না যে সেখানে কোনও ঝামেলা নেই। এই উদাহরণে এটি আমার সংস্করণের মতো, তবে আনডফ্লাল 2 ডি অ্যারেতে মাত্রা বজায় রাখে।
এমিগিনা

3

জাভা (জেডিকে) , 59 বাইট

a->{int c=0;for(;a[(1<<c)%(a.length-1|1)]>2;)c++;return c;}

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

কেবলমাত্র 31 এর চেয়ে কম আকারের বা 31 টিরও কম পুনরাবৃত্তির সাথে সমাধানযুক্ত অ্যারেগুলির জন্য নির্ভরযোগ্যভাবে কাজ করে। আরও সাধারণ সমাধানের জন্য, 63 বাইট সহ নিম্নলিখিত সমাধানটি দেখুন:

a->{int i=1,c=0;for(;a[i]>2;c++)i=i*2%(a.length-1|1);return c;}

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

ব্যাখ্যা

একটি রিফলে, পরবর্তী অবস্থানটি পূর্ববর্তী একগুণ দুটি মডুলোর হয় দৈর্ঘ্যটি বিজোড় হয় বা দৈর্ঘ্য - 1 এমনকি যদি এটি হয়।

সুতরাং আমি এই সূত্রটি ব্যবহার করে সমস্ত সূচকগুলিতে পুনরাবৃত্তি করছি যতক্ষণ না আমি অ্যারেতে 2 মান খুঁজে পাই।

ক্রেডিট


এরx.clone() পরিবর্তে দু'বার ব্যবহার করে 163 বাইটA.copyOf(x,l)
কেভিন ক্রুইজসেন


@ আরনাউল্ড ধন্যবাদ! সেই "দৈর্ঘ্যটি যদি বিজোড় অন্য দৈর্ঘ্যে - 1" কীভাবে সহজ করা যায় তা বুঝতে আমার খুব কষ্ট হয়েছিল
অলিভিয়ার গ্রাগোয়ার

@ আরনল্ড ওহ! আমার নতুন অ্যালগরিদম আসলে আপনার মতই ... এবং আমি নিজে নিজে এটি আবিষ্কার করতে আধ ঘন্টা ব্যয় করেছি ...
অলিভিয়ার গ্রাগোয়ার

আরও স্পষ্টতই, এটি আমার মূল অ্যালগরিদমটির চেয়ে উন্নতির সমতুল্য যা @ নেলহ্নহফ দ্বারা পাওয়া।
আর্নৌল্ড

3

জে , 28 26 বাইট

-2 বাইট জোনাকে ধন্যবাদ!

 1#@}.(\:2|#\)^:(2<1{])^:a:

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

ভেনের এপিএল সমাধান হতে অনুপ্রাণিত হন।

ব্যাখ্যা:

               ^:       ^:a:   while 
                 (2<1{])       the 1-st (zero-indexed) element is greater than 2   
     (        )                do the following and keep the intermediate results
          i.@#                 make a list form 0 to len-1
        2|                     find modulo 2 of each element
      /:                       sort the argument according the list of 0's and 1's
1  }.                          drop the first row of the result
 #@                            and take the length (how many rows -> steps)     

কে (এনএনজি / কে) , 25 বাইট

পরামর্শ এবং তাঁর কে অনুবাদকের জন্য এনএনজি ধন্যবাদ!

{#1_{~2=x@1}{x@<2!!#x}\x}

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


রূপান্তর-পুনরাবৃত্তি করুন , তারপরে একটি ড্রপ করুন এবং গণনা করুন - এটি সংক্ষিপ্ত কোডের দিকে নিয়ে যায়
এনজিএন

@ngn। সুতরাং, আমার জে সমাধানের অনুরূপ - আমি এটি পরে চেষ্টা করব, ধন্যবাদ!
গ্যালেন ইভানভ

1
1#@}.(\:2|#\)^:(2<1{])^:a:26 বাইটের জন্য
জোনা

@ জোনাঃ আপনাকে ধন্যবাদ!
গ্যালেন ইভানভ

2

এপিএল (এনএআরএস), চর ৪৯, বাইট ৯৮

{0{∧/¯1↓⍵≤1⌽⍵:⍺⋄(⍺+1)∇⍵[d],⍵[i∼d←↑¨i⊂⍨2∣i←⍳≢⍵]}⍵}

কেন আমরা গভীর লুপটি ব্যবহার করব, একটি আলগো যা এনলগ (এন) হওয়া উচিত, যখন আমরা একটি লিনিয়ার এন ব্যবহার করতে পারি? আরও কিছু বাইটের জন্য? [⍵≡⍵ [⍋⍵] ও (এনলগ এন) এবং দেখার জন্য প্রতিটি উপাদানগুলির মুখোমুখি ∧ / ¯1 ↓ ⍵≤1⌽⍵ ও (এন)] পরীক্ষাটি ব্যবহার করে ক্রম হয়:

  f←{0{∧/¯1↓⍵≤1⌽⍵:⍺⋄(⍺+1)∇⍵[d],⍵[i∼d←↑¨i⊂⍨2∣i←⍳≢⍵]}⍵}
  f ,1
0
  f 1 2 3
0
  f 1,9,8,7,6,5,4,3,2,10
3
  f 1,3,5,7,9,11,13,15,17,19,2,4,6,8,10,12,14,16,18,20
17

এই প্রথম আমি কাউকে চরিত্র এবং বাইটের মধ্যে পার্থক্য করতে দেখেছি 👍 আমি যখন ইউনিকোডের অক্ষরগুলি দেখি তখন সর্বদা এটি আমাকে জাগ্রত করে এবং তারা দাবি করে যে এটি চরিত্র প্রতি এক বাইট। এই one এক বাইট না!
কেরেন্ডোগ 73

@ কেরেন্ডোগ 73৩ সবই সংখ্যা, তবে এপিএলে মনে হয় অক্ষরগুলি সংখ্যা নয় ... (এভি অ্যারেতে
এগুলিকে

2

রুবি , 42 বাইট

f=->d,r=1{d[r]<3?0:1+f[d,r*2%(1|~-d.max)]}

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

কিভাবে:

অ্যারের ভিতরে 2 নম্বর সন্ধান করুন: এটি দ্বিতীয় অবস্থানে থাকলে, ডেকটি বদলানো হয়নি, অন্যথায় ক্রমবর্ধমান স্থান পরিবর্তনগুলি যে অবস্থানগুলি রাখবে সেগুলি পরীক্ষা করুন।


2

আর , 70 72 বাইট

x=scan();i=0;while(any(x>sort(x))){x=c(x[y<-seq(x)%%2>0],x[!y]);i=i+1};i

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

এখন জিরো শ্যাফেল কেস পরিচালনা করে।


1
@ ব্যবহারকারী 2390246 ফেয়ার পয়েন্ট। সেই অনুযায়ী সামঞ্জস্য করা হয়েছে
নিক কেনেডি

2

সি (জিসিসি) 64 63 বাইট

নওহেলহোফ থেকে -1 বাইট

i,r;f(c,v)int*v;{for(i=r=1;v[i]>2;++r)i=i*2%(c-1|1);return~-r;}

এটি আর্নাউল্ড এবং অলিভিয়ের গ্রাওগায়ারের উত্তরগুলির ভিত্তিতে একটি গুরুতর সংক্ষিপ্ত উত্তর। আমি নীচে আমার পুরানো সমাধানটি ছেড়ে যাব কারণ এটি সংযুক্ত নয় এমন কার্ডগুলির সাথে ডেকের সামান্য সাধারণ সমস্যা সমাধান করে।

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


সি (জিসিসি) 162 বাইট

a[999],b[999],i,r,o;f(c,v)int*v;{for(r=0;o=1;++r){for(i=c;i--;(i&1?b:a)[i/2]=v[i])o=(v[i]>v[i-1]|!i)&o;if(o)return r;for(i+=o=c+1;i--;)v[i]=i<o/2?a[i]:b[i-o/2];}}

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

a[999],b[999],i,r,o; //pre-declare variables
f(c,v)int*v;{ //argument list
    for(r=0;o=1;++r){ //major loop, reset o (ordered) to true at beginning, increment number of shuffles at end
        for(i=c;i--;(i&1?b:a)[i/2]=v[i]) //loop through v, split into halves a/b as we go
            o=(v[i]>v[i-1]|!i)&o; //if out of order set o (ordered) to false
        if(o) //if ordered
            return r; //return number of shuffles
        //note that i==-1 at this point
        for(i+=o=c+1;i--;)//set i=c and o=c+1, loop through v
            v[i]=i<o/2?a[i]:b[i-o/2];//set first half of v to a, second half to b
    }
}

2

আর, 85 বাইট

s=scan();u=sort(s);k=0;while(any(u[seq(s)]!=s)){k=k+1;u=as.vector(t(matrix(u,,2)))};k

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

ব্যাখ্যা

বোকা (বর্বর শক্তি) পদ্ধতি, কার্ড # 2 অনুসরণ করার চেয়ে অনেক কম মার্জিত।

ইনপুটটি আনসফালিংয়ের পরিবর্তে sআমরা একটি সাজানো ভেক্টর দিয়ে শুরু uকরি যা আমরা ধীরে ধীরে পরিবর্তন করি যতক্ষণ না এটির সাথে অভিন্ন হয়s । বিজোড় দৈর্ঘ্যের ভেক্টরটিকে 2-কলামের ম্যাট্রিক্সে ভাঁজ করার কারণে বিজোড় দৈর্ঘ্যের ইনপুটটির জন্য এটি সতর্কতা দেয় (তবে বদলের সংখ্যা এখনও সঠিক); সেক্ষেত্রে আর-তে, হারিয়ে যাওয়া ডেটা পয়েন্টটি ইনপুটটির প্রথম উপাদানটির পুনর্ব্যবহার করে পূরণ করা হয়।

লুপ কখনই শেষ হবে না যদি আমরা কোনও ভেক্টর সরবরাহ করি যা আনসাফাল করা যায় না।

সংযোজন: পরিবর্তে আনসাফালিং করা হলে আপনি একটি বাইট সংরক্ষণ করেন। উত্তর উপরে ভিন্ন, সঙ্গে স্থানান্তর করা হয় কোন প্রয়োজন নেই t(), তবে, ক্রম হয় byrow=TRUEসেই জন্য এটি Tদেখা matrix()

আর , 84 বাইট

s=scan();u=sort(s);k=0;while(any(s[seq(u)]!=u)){k=k+1;s=as.vector(matrix(s,,2,T))};k

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


আমি আপনার শিরোনাম ঠিক করার এবং পরীক্ষার কেসগুলির জন্য একটি টিআইও-লিংক যুক্ত করার স্বাধীনতা নিয়েছি ( অন্য আর উত্তরের উপর ভিত্তি করে ), এবং আপনার উত্তরটি যা ইচ্ছা অনুসারে কাজ করেছে তাও আমার কাছ থেকে +1 করে পিপিসিজিতে স্বাগতম! :)
কেভিন ক্রুইজসেন

2

পাওয়ারশেল , 116 114 108 84 78 বাইট

-24 ধন্যবাদ বাইট এরিক Outgolfer এর সমাধান

-6 বাইট মজির ধন্যবাদ ।

param($a)for(;$a[1]-2){$n++;$t=@{};$a|%{$t[$j++%2]+=,$_};$a=$t.0+$t.1;$j=0}+$n

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


আপনি আরও কিছুটা বাঁচাতে পারেন: অনলাইনে চেষ্টা করে দেখুন!
mazzy

@ মুজি, আপনি ঠিক আবার :) ধন্যবাদ
আন্দ্রে ওদেগোভ

1

ওল্ফ্রাম ভাষা (গণিত) , 62 বাইট matic

c=0;While[Sort[a]!=a,a=a[[1;;-1;;2]]~Join~a[[2;;-1;;2]];c++];c

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

ব্যাখ্যা

ইনপুট তালিকাটি হ'ল a। এটি মিলহীন না হওয়া পর্যন্ত সাজানো তালিকার সাথে এটি নিষিদ্ধ এবং তুলনা করা হয়।




1

পাইথ , 18 বাইট

L?SIb0hys%L2>Bb1
y

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

-2 ধন্যবাদ এরিক আউটগোল্ফারকে।

স্ক্রিপ্টের দুটি লাইন রয়েছে: প্রথমটি একটি ফাংশন সংজ্ঞায়িত করে y, দ্বিতীয় লাইনটি yঅন্তর্নিহিত Q(মূল্যায়নকৃত স্টিডিন) যুক্তি দিয়ে কল করে ।

L?SIb0hys%L2>Bb1
L                function y(b)
 ?               if...
  SIb            the Invariant b == sort(b) holds
     0           return 0
      h          otherwise increment...
       y         ...the return of a recursive call with:
             B   the current argument "bifurcated", an array of:
              b   - the original argument
            >  1  - same with the head popped off
          L      map...
         % 2     ...take only every 2nd value in each array
        s         and concat them back together

¹


1

পাওয়ারশেল , 62 71 70 66 বাইট

+9 বাইটস যখন পরীক্ষার কেসগুলিতে সংখ্যক উপাদান যুক্ত হয়।

স্প্লেটিং সহ -1 বাইট।

-4 বাইট: সঙ্গে অভিব্যক্তি মোড়ানো $i, $jএকটি নতুন সুযোগ হবে।

for($a=$args;$a[1]-2;$a=&{($a|?{++$j%2})+($a|?{$i++%2})}){$n++}+$n

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


1

জাপট , 13 11 10 বাইট

একটি পরীক্ষা ড্রাইভের জন্য আমার চকচকে, নতুন , খুব -কার্য-প্রগতিতে অনুবাদক নিচ্ছেন

ÅÎÍ©ÒßUñÏu

চেষ্টা করে দেখুন বা সমস্ত পরীক্ষার কেস চালান

ÅÎÍ©ÒßUñÏu     :Implicit input of integer array U
Å              :Slice the first element off U
 Î             :Get the first element
  Í            :Subtract from 2
   ©           :Logical AND with
    Ò          :  Negation of bitwise NOT of
     ß         :  A recursive call to the programme with input
      Uñ       :    U sorted
        Ï      :    By 0-based indices
         u     :    Modulo 2

1
এই দোভাষী খুব দুর্দান্ত দেখাচ্ছে looks
রিকার্সিভ

0

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

f=lambda x:x[1]-2and 1+f(x[::2]+x[1::2])  # 1-based
f=lambda x:x[1]-1and 1+f(x[::2]+x[1::2])  # 0-based

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

আমাকে পৃষ্ঠাটি আরও ঘন ঘন রিফ্রেশ করতে হবে: এরিক আউটগল্ফার সম্পাদনাটি একই ধরণের কৌশল থেকে মিস করেছেন =)

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