যে কোনও আকারের ডেকের পারফেক্ট শফলসের জন্য চক্রের দৈর্ঘ্য


10

চ্যালেঞ্জ

সংক্ষিপ্ত পরিমাণ কোডে:

  1. কোন আকারের তাসের তাড়ার উপর একটি নিখুঁত এলোমেলো এর বিন্যাস চক্রের দৈর্ঘ্য গণনা এন (যেখানে এন ≥ 2 এবং এমনকি)।
  2. সমস্ত চক্র দৈর্ঘ্যের একটি টেবিল 2 ≤ n ≤ 1000 ( n এমনকি) এর জন্য আউটপুট দিন ।

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

  • আউট-এলোমেলো 10-কার্ড ডেক: [1,2,3,4,5,6,7,8,9,10] ↦ [1,6,2,7,3,8,4,9,5, 10]।
  • 10-কার্ড ডেকে ইন- শিফাল: [1,2,3,4,5,6,7,8,9,10] ↦ [6,1,7,2,8,3,9,4,10, 5]।

গ্রাফিকাল উদাহরণ

এখানে, আমরা দেখতে পাই যে 20-কার্ড ডেকের একটি আউট- সাফল্যের চক্র দৈর্ঘ্য 18 টি পদক্ষেপ রয়েছে। (এটি কেবল উদাহরণের জন্য; আপনার সমাধানটি গ্রাফিকভাবে চক্রগুলি আউটপুট করার প্রয়োজন হয় না)) অন্যদিকে ক্লাসিক 52-কার্ড ডেকের কেবল 8 টি ধাপের আউট-সাফাল চক্রের দৈর্ঘ্য রয়েছে (দেখানো হয়নি)।

20-কার্ড ডেকের জন্য আউট-সাফাল চক্র

20-কার্ড ডেকের একটি ইন-শফলে চক্রের দৈর্ঘ্য কেবল 6 টি ধাপ।

20-কার্ড ডেকের জন্য ইন-সাফাল চক্র

আউটপুট এর সারণী উদাহরণ

আপনার প্রোগ্রামটির সাথে এর অনুরূপ কিছু আউটপুট করা উচিত, যদিও আপনি নিজের পছন্দ মতো কোনও ট্যাবুলার বিন্যাস চয়ন করতে পারেন। এটি একটি বহিঃপ্রকাশের জন্য:

2 1
4 2
6 4
8 3
10 6
12 10
14 12
16 4
18 8
20 18
22 6
24 11
26 20
28 18
30 28
32 5
34 10
36 12
38 36
40 12
...many lines omitted...
1000 36

প্রশ্নাবলি

  1. এন 2 এর শক্তি হ'ল এনপুট এন এবং এর চক্র গণনার মধ্যে কোনও সংযোগ আছে বলে মনে হচ্ছে ?
  2. কীভাবে যখন এন 2 এর শক্তি হয় না?
  3. কৌতূহলজনকভাবে, 1000-কার্ডের ডেকে কেবলমাত্র 36 টির আউট-শফল চক্রের গণনা রয়েছে, যখন 500 কার্ডের ডেকের 166 এর আউট-সাফাল চক্রের গণনা রয়েছে this এটি কেন হতে পারে?
  4. বৃহত্তম সংখ্যা আপনি যার চক্র গণনা জানতে পারেন কি চেয়ে অতি ছোট এন , যার মানে হল অনুপাত এন / বড় করা হয়?


হ্যাঁ, যদিও ফলাফল প্রদর্শন সম্পর্কে আরও। এই প্রশ্নটি এন এর যে কোনও মানের জন্য একটি টেবিল তৈরির বিষয়ে ; এটি প্রকৃতির আরও গাণিতিক।
টড লেহম্যান

বেশ কিছুক্ষণের জন্য বিক্ষোভের 6/8 চক্রের সাথে আমাকে সেখানে বিভ্রান্ত করলেন :) (আমি মনে করি আমার প্রয়োগটি ভুল ছিল)। অবশেষে আমি চিত্রটির দিকে তাকিয়ে দেখলাম এটি একটি 6 চক্র, তাই আমি এটি সম্পাদনা করেছি। মজার
গর্বিত হাসেলেলার

@ গর্বিত হাসেলেলার - আহ হ্যাঁ, ধন্যবাদ!
টড লেহম্যান

1
এটি ক্রম A002326
orlp

উত্তর:


6

হাস্কেল, 47 46 44 (এলোমেলোভাবে)

[[i|i<-[1..],mod(2^i)n<2]!!0|n<-[3,5..1001]]

মৌলিক উপলব্ধি হ'ল এটি হল মডুলাসের গুণক গোষ্ঠীতে 2 ক্রম n+1


1
আপনি মুছে ফেলতে পারেন l=- প্রকাশটি নিজেই যথেষ্ট। ইন্টারেক্টিভ কমান্ড লাইনে রান করার সময় এটি একটি বৈধ প্রোগ্রাম।
orlp


2

পাইথ, 22 বাইট

V500,JyhNl{.u.iFc2NJUJ

অনলাইনে চেষ্টা করুন: বিক্ষোভ । 500 টি প্রতিস্থাপন করুন যদি এটি খুব ধীর হয় তবে কম সংখ্যার সাথে।

ব্যাখ্যা:

V500                     for N in [0, 1, ..., 499]:
      yhN                   (N + 1) * 2
     J                      assign to J
           .u      JUJ      apply the following expression J times
                            to N, starting with N = [0, 1, ..., J - 1],
                            and return all intermediate results:
                c2N            split N into 2 halfs
             .iF               and interleave them
         l{                 remove duplicates and give length
    ,                       make a pair and print

1
এটি এক ধরণের পাগল যে একটি অদৃশ্য সমাধান যা ডেকগুলি বদলানো এবং গণনা করার প্রকৃত কাজ করে কেবলমাত্র অর্ধেক দীর্ঘ হ্যাস্কেল সলিউশন যা তাত্ক্ষণিকভাবে ফলাফলটির পূর্বাভাস দেয়
ফ্যালকো

@ ফ্যালকো আমি সঠিকভাবে জানি
গর্বিত হাসেলেলার

1
@ ফ্যালকো আমি আসলে আমার উত্তরটির জন্য একটি পাইথ পোর্ট করার চেষ্টা করেছি কিন্তু কীভাবে করব তা আমি বুঝতে পারি না। তাই আমি ঠিক আধ ঘন্টার জন্য পাইথের সাথে খেলা শেষ করেছি
গর্বিত হাসেলেলার

আনন্দিত আপনি <> <চেষ্টা করলেন না করা
Falco

2

ম্যাথমেটিকা, 53 (শিফট)

Grid[{2#,MultiplicativeOrder[2,2#+1]}&/@Range[1,500]]

বা, বৈরীভাবে ব্যবধানযুক্ত নয়

Grid[{2 #, MultiplicativeOrder[2, 2 # + 1]} & /@ Range[1, 501]]

আউটপুট:

   2    2
   4    4
   6    3
   8    6
  10   10
  12   12
  14    4
  16    8
  18   18
  20    6
 (* digits, digits, bo bidgits, banana fana, ... *)
  498  166
  500  166
 (* skip a bit, brother ...  *)
  998   36
 1000   60

উভয় কলামের প্রতিটি এন্ট্রি অনুভূমিকভাবে তাদের কলামগুলিতে কেন্দ্রীভূত, তবে আমার এখানে ভগ্নাংশ স্পেস নেই &#8194;... &#8202;এটির প্রতিলিপি দিতে এখানে।

পর্যবেক্ষণ:

  • আউট-শ্যাফেল দুটি ডেক কার্ডের চেয়ে ছোট ছোট ডেকে in (দ্রষ্টব্য যে প্রথম এবং শেষ কার্ডগুলি আউট-শ্যাফেল বিক্ষোভ জুড়ে স্থির স্থানে রয়েছে)) ফলস্বরূপ, দুটি পছন্দ একই ধরণের আউটপুট তালিকার দিকে নিয়ে যাবে - দ্বিতীয় কলামটি একটি সারি দ্বারা স্থানান্তরিত হবে। ইঙ্গিতটি "দুই ক্ষমতা" সংক্রান্ত, ইন এলোমেলো দুই ডেকে শক্তি প্যাটার্ন রয়েছে {2^n - 2, n}, {2^n, 2n}। (আউট-অদলবদল জোড়া 2^nদিয়ে n।)
  • শিফল উদাহরণটিতে পর্যবেক্ষণ করুন যে 2ডেকের নিকটতম প্রান্ত থেকে দূরত্বের প্রতিটি ধাপে দ্বিগুণ হয়ে যায়। {2, 4, 8, 15 = -5, -10, -20}। আসলে, প্রতিটি কার্ডের ক্ষেত্রে এটি সত্য । তাই আমাদের কেবল এটি জানতে হবে যে কার্ডের সংখ্যাটি কোথায় কোথায় শক্তির মোডে 2একত্রিত । (দ্রষ্টব্য, উদাহরণস্বরূপ, শেষ কলাম, কলামের কার্ডগুলি দ্বিখণ্ডিত কলামে দ্বিগুণ হয়ে গেছে , যার অর্থ ডেকের তুলনায় আরও একটি কার্ডের সাথে একমত, সুতরাং "মোড ")) সুতরাং, গুণক অর্ডার [] ফাংশন হ'ল উপায় (ম্যাথমেটিকায়)।1n+1n-1-20n+1
  • ডিফল্টরূপে, একটি গ্রিডের পরিবর্তে টেবিলফর্ম [] চেষ্টা করবে [], তবে আউটপুট একই similar

আপনার উদাহরণ আউটপুটটি ভুল বলে মনে হচ্ছে
গর্বিত হাস্কেলর

@ প্রফেসহেস্কিলার: ইন-শফল বা আউট-শ্যাফেলের জন্য? হয় অনুমতি দেওয়া হয়। (এবং যেমনটি উল্লেখ করা হয়েছে, এটি অন্যটির ডান কলামে কেবল একটি সারি শিফট))
এরিক টাওয়ার্স

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

গর্বিতস্কেলার: আমি মনে করি আমার উদাহরণটি "8" এ টাইপ করেছি। অন্তত: একবার এবং গলিত। সম্পাদনা করা। অবিচল থাকার জন্য ধন্যবাদ। :-)
এরিক টাওয়ার

0

সি, 86 (বা 84)

স্কোর স্বচ্ছতার জন্য অন্তর্ভুক্ত অপ্রয়োজনীয় সাদা স্থান বাদ দেয়।

i,j,n;
main(){
  for(;n<1002;printf("%d %d\n",n,j),n+=2)
    for(i=n,j=1;i=i*2%(n+1),i-n;)j++;
}

এটি একটি ইন-শ্যাফেল, যা অন্যদের দ্বারা নির্দেশিত, কেবল উভয় প্রান্তে স্থির কার্ডগুলির সাথে আউট অফ শ্যাফেল।

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

কোডটি iমানটির সূচনা করে n। তারপর দ্বিগুণ 2 দ্বারা, ফলে গেলিক ভাষার লাগে (n+1)দেখতে যদি এবং চেক iতার প্রারম্ভিক মান ফিরে এসেছে ( i-nশূন্য হয়।) এটা বৃদ্ধি jপ্রতিটি পুনরাবৃত্তির জন্য, গত এক (অত: পর প্রয়োজন ইনিশিয়ালাইজ ব্যতীত j1. পর্যন্ত)

নীতিগতভাবে, iপরিসরের যে কোনও মানের সাথে থাকতে পারে 1..n, শেষের তুলনা যতক্ষণ না এটি একই সংখ্যায় অন্তর্নিহিত ছিল কিনা তা পরীক্ষা করা হয়েছে। বাছাইয়ের কারণটি nছিল প্রোগ্রামটি কেসের জন্য কাজ করে তা নিশ্চিত করা n==0। সমস্যাটি হ'ল যে কোনও সংখ্যার মডুলো (0+1)শূন্য, সুতরাং i1 এর মতো ধ্রুবককে আরম্ভ করা হলে লুপটি এই ক্ষেত্রে কখনই শেষ হয় না ।

প্রশ্নের উদাহরণগুলিতে n==2আউট শ্যাফলের সমতুল্য কেস অন্তর্ভুক্ত রয়েছে , সুতরাং এটি ব্যাখ্যা করা হয়েছিল যে এই কেসটি প্রয়োজনীয়। যদি তা না হয় তবে দুটি বাইট 1 দিয়ে n,শুরু iকরে সংরক্ষণ করা যেতে পারে , একই মান j

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