এলোমেলো কি?


19

গতকাল আমি এই প্রশ্নটি জিজ্ঞাসা করলাম riffle shuffles সম্পর্কে। দেখে মনে হচ্ছে গতকালের প্রশ্নটি কিছুটা শক্ত ছিল তাই এই প্রশ্নটি সম্পর্কিত তবে অনেক সহজ কাজ।

আজ আপনাকে নির্ধারণ করতে বলা হচ্ছে যদি কোনও আদেশটি আসলে রিফলের বদল হয়। রিফল শিফলে আমাদের সংজ্ঞাটি আমাদের শেষ প্রশ্ন থেকে অভিযোজিত:

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

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

প্রতিটি রিফেল শ্যাফেলকে তখন কার্ডের মূল ডেকের অনুক্রম হিসাবে দেখা যেতে পারে। উদাহরণস্বরূপ আদেশ

1,2,3 -> 1,3,2

একটি রিফাল পরিবর্তন আপনি ডেক বিভক্ত যদি

1, 2 | 3

আমরা দেখতে পাচ্ছি যে প্রতিটি কার্ডের 1,3,2বিভাজনে প্রতিটি অন্যান্য কার্ডের জন্য একই আপেক্ষিক ক্রম রয়েছে। 2এখনও পরে 1

অন্যদিকে নিম্নলিখিত অনুক্রমটি একটি রাইফেল বদল নয়

1,2,3 -> 3,2,1

আমরা এটি দেখতে পারি কারণ দুটি (অ-তুচ্ছ) পার্টিশনের জন্য

1, 2 | 3
1 | 2, 3 

কার্ডের একটি জুড়ি রয়েছে যা তাদের আপেক্ষিক ক্রমগুলি বজায় রাখে না। প্রথম পার্টিশনে উপস্থিত 1এবং 2তাদের ক্রম পরিবর্তন করেন, দ্বিতীয় পার্টিশন যখন 2এবং 3তাদের ক্রম পরিবর্তন করুন।

কার্য

যেকোন যুক্তিসঙ্গত পদ্ধতির মাধ্যমে ক্রমান্বয়ে প্রদত্ত, নির্ধারণ করুন যে এটি কোনও বৈধ রিফেল শফলের প্রতিনিধিত্ব করে কিনা। আপনার দুটি পৃথক ধ্রুবক মান আউটপুট করা উচিত "হ্যাঁ, এটি একটি রাইফেল শফল" এবং "হ্যাঁ, এটি একটি রিফলার বদল নয়" এর জন্য একটি।

এটি তাই কম বাইট ভাল হওয়ার সাথে উত্তরগুলি বাইটে স্কোর করা হবে।

পরীক্ষার মামলা

1,3,2 -> True
3,2,1 -> False
3,1,2,4 -> True
2,3,4,1 -> True
4,3,2,1 -> False
1,2,3,4,5 -> True
1,2,5,4,3 -> False
5,1,4,2,3 -> False
3,1,4,2,5 -> True
2,3,6,1,4,5 -> False

1
আউটপুটটি কি আমাদের ভাষায় বেমানান, তবে সত্য / মিথ্যা হতে পারে? (পাইথন, যেখানে পূর্ণসংখ্যার মধ্যে কেবল ০ টি মিথ্যা) 0তবে সত্যের পক্ষে কোন পূর্ণসংখ্যা রয়েছে [1, +∞)?
মিঃ এক্সকোডার

1
@ মিঃ এক্সকোডার আমি সত্যবাদী / মিথ্যা মানগুলি পছন্দ করি না কারণ সেগুলি ভালভাবে সংজ্ঞায়িত করা বরং শক্ত। উত্তরগুলি বর্তমানের বিধিগুলিতে আটকে থাকা উচিত।
গম উইজার্ড

প্রস্তাবিত পরীক্ষা মামলা: [3,1,4,2,5]
র্জন জোহানসেন

9
এই সম্পর্কে দুঃখিত, কিন্তু: [2,3,6,1,4,5]
র্জন জোহানসেন

1
আমরা কি ইনপুট [0, ..., n-1]পরিবর্তে এর অনুমতি নিতে পারি [1, ..., n]?
ডেনিস

উত্তর:


8

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

পূর্ণসংখ্যার অ্যারের হিসাবে ইনপুট নেয়। একটি বুলিয়ান ফেরত দেয়।

([x,...a],y)=>a.every(z=>z+~x?y?z==++y:y=z:++x)

পরীক্ষার মামলা

কিভাবে?

ইনপুট অ্যারে A একটি বৈধ রাইফেল শফল যদি এটিতে পরপর পূর্ণসংখ্যার সর্বাধিক দুটি স্বতন্ত্র ইন্টারলেড সিকোয়েন্স থাকে।

চ্যালেঞ্জের নিয়মগুলি উল্লেখ করে যে আমাদের [1 ... এন] এর একটি অনুমান দেওয়া হয়েছে । সুতরাং আমাদের অতিরিক্ত ক্রমগুলি পরীক্ষা করার দরকার নেই যে এই সিকোয়েন্সগুলির সাজানো ইউনিয়ন আসলে এরকম পরিসরে ফলাফল দেয়।

আমরা ব্যবহার একটি পাল্টা x সক্রিয়া একটি [0] এবং একটি পাল্টা Y প্রাথমিকভাবে undefined।

প্রতিটি এন্ট্রির জন্য z- র মধ্যে একটি , 2nd এক সঙ্গে শুরু:

  • Z টি x + 1 বা y + 1 এর সমান কিনা তা আমরা পরীক্ষা করি । যদি হ্যাঁ, আমরা সংশ্লিষ্ট কাউন্টারটিকে বাড়িয়ে দিই।
  • অন্য: যদি y এখনও অপরিজ্ঞাত থাকে তবে আমরা এটিকে z এ শুরু করি ।
  • অন্যথায়: আমরা পরীক্ষাটি ব্যর্থ করে ফেলি।


5

হাস্কেল , 43 বাইট

sওপি উদাহরণগুলির মতো পূর্ণসংখ্যার একটি তালিকা গ্রহণ করে এবং a Bool

s p=or[f(<x)p++f(>=x)p<[1..]|x<-p]
f=filter

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

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

  • তালিকা ধী প্রতিটি উপাদান চেষ্টা করে xএর pমধ্যে পালা এবং চেক এটি এলোমেলো দ্বিতীয় পার্টিশন প্রথম উপাদান হতে পারে। তারপরে যদি কোনও চেক থাকে তবে orফেরত দেয় ।TrueTrue
  • বোধগম্যতাটি (সহ filter) এর pচেয়ে ছোট এবং বৃহত্তর (বা সমান ) উপাদানগুলিতে বিভাজন করে x, সমবেতকরণ করে এবং ফলাফলের তালিকাটি [1..length p], যাতে উপাদানগুলি ক্রমযুক্ত হয় তা পরীক্ষা করে does
  • [1..length p]ফলাফল অসীম তালিকার চেয়ে কঠোরভাবে ছোট কিনা তা দেখে ফলাফলের তালিকাটি করা হচ্ছে কিনা তা যাচাই করুন [1..] == [1,2,3,etc.], যা কোনও ক্রম ছাড়ার জন্য একই ফলাফল দেয়।

5

জেলি , 13 6 বাইট

ỤIṢḊRẠ

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

বিকল্প সংস্করণ, পোস্টডেটস চ্যালেঞ্জ, 5 বাইট

Ụ>ƝSỊ

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

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

ỤIṢḊRẠ  Main link. Argument: A (permutation of [1, ..., n])

Ụ       Grade up; sort the indices of A by their respective values.
        For shuffles, the result is the concatenation of up to two increasing
        sequences of indices.
 I      Compute the forward differences.
        In a shuffle, only one difference may be negative.
  Ṣ     Sort the differences.
   Ḋ    Dequeue; remove the first (smallest) difference.
    R   Range; map each k to [1, ..., k].
        This yields an empty array for non-positive values of k.
     Ạ  All; check if all resulting ranges are non-empty.


4

ব্র্যাচল্যাগ , 9 বাইট

o~cĊ⟨⊆⊇⟩?

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

ইনপুটটি যদি একটি রাইফেল বদলের প্রতিনিধিত্ব করে এবং ব্যর্থ না হয় তবে ব্যর্থ হয়, প্রিডিকেট সফল হয়, অর্থাত্ অন্যান্য বিষয়গুলির মধ্যে অর্থ হ'ল প্রিডিকেটটি যদি পুরো প্রোগ্রাম হিসাবে চালিত হয় তবে মুদ্রণ হবে true.এবং ব্যর্থতা মুদ্রণ করবে false.। ইনপুটটি যেকোন ধরণের আইটেমের তালিকা হিসাবে নেওয়া হয় এবং এটিকে নিজের অনুসারে বাছাইয়ের ক্রমবিন্যাসের প্রতিনিধিত্ব করে।

   Ċ         Some length-two list
 ~c          which concatenated
o            is the input sorted
    ⟨        satisfies the condition that its first element
     ⊆       is an ordered not-necessarily-contiguous sublist
        ?    of the input
      ⊇      which is an ordered superlist of
       ⟩     the list's second element.

আমার মনে হচ্ছে আত্মার মধ্যে এমন কিছু রয়েছে ⊆ᵐযার চার-বাইট "স্যান্ডউইচ" নির্মাণের জায়গায় কাজ করা উচিত ⟨⊆⊇⟩


1
আমি মনে করি আপনি প্রথম ব্যক্তি যিনি পিপিসিজি উত্তরে স্যান্ডউইচ ব্যবহার করেছেন (এবং এটি একটি সুন্দর প্রতিসামগ্রী :))
ফ্যাটালাইজ করুন


2

রুবি , 35 বাইট

->l{l.any?{|a|l&[*1..a]|l==l.sort}}

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

কিভাবে?

  • l & [*1..a] | lএকটি সংযোগস্থলে এবং তারপর ইউনিয়ন প্রযোজ্য: প্রথম উপাদানের পেতে lআছে <=aএবং তারপর অবশিষ্ট উপাদান যোগl অর্ডার পরিবর্তন না করে। যদি একটি সংখ্যা আমরা কি খুঁজছি হয়, তাহলে এই অপারেশন বাছাই হিসাবে একই l


2

পাইথ, 5 বাইট

}SQy+

পরীক্ষা স্যুট

}SQy+

    +QQ  concatenated two copies of the (implicit) input
   y     all subsequences of it
}        contain an element equaling
 SQ      the input list sorted 

দ্বিগুণ ইনপুট তালিকায় একটি সাবকোয়েন্স হিসাবে নিজের একটি সাজানো সংস্করণ রয়েছে কিনা তা পরীক্ষা করে।

এর +QQচেয়ে আরও বেশি ইনপিলিট ইনপুটের আরও ভাল সুবিধা নিয়ে 1 বাইটের জন্য এরিক আউটগলফারকে ধন্যবাদ *2Q


5 বাইট: }SQy+। এটি প্রসারিত হয় }SQy+QQ
এরিক আউটগলফার

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

1

পাইথ , 9 বাইট

!t-.+xLQS

পরীক্ষা স্যুট.

Isaacg ধন্যবাদ 3 বাইট সংরক্ষণ করা

পাইথ , 14 বাইট

}SQm.nS.Tcd2./

এখানে চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন।

আউটপুটস Trueএবং Falseযথাক্রমে রিফল-শিফেল এবং নন-রিফল-শিফেলের জন্য।

কিভাবে?

} SQm.nS.Tcd2./ ~ সম্পূর্ণ প্রোগ্রাম। STDIN এবং আউটপুট থেকে STDOUT এ ইনপুট পড়ে।

            /
   m a উপরের মানটি ভেরিয়েবল ব্যবহার করে d।
         সিডি 2 two দ্বি উপাদানগুলির তালিকায় ডি কেটে।
       .T ~ অনুপস্থিতি উপেক্ষা করে ন্যায়সঙ্গত স্থানান্তর ose
      এস ~ বাছাই করুন (অভিধানে)
    .n ~ গভীর সমতল।
~ ~ উপরেরটি রয়েছে কিনা তা পরীক্ষা করুন ...
 SQ ~ সাজানো ইনপুট।

তদ্ব্যতীত, আরও 2 বাইট <#0দ্বারা প্রতিস্থাপন করা যেতে পারে -
isaacg

@ আইসাকগ ওহ হ্যাঁ ফেসপাম ধন্যবাদ সম্পাদনা করা হয়েছে। সম্পাদনা করা হয়েছে।
মিঃ এক্সকোডার



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