Superpermutations


26

ভূমিকা

আপনি একজন নতুন অপরাধীর শুরু থেকে নতুন টেক স্টার্টআপ দেজাভু থেকে কিছু গোপন পরিকল্পনা চুরি করার দায়িত্ব পেয়েছেন। আপনি পিছনের প্রাচীরের দিকে ঝুঁকছেন, কিন্তু একটি দরজা এটি খোলার জন্য একটি পিন প্রয়োজন find আপনি লকটির মেকিংটি স্বীকার করেছেন এবং জানেন যে এটি 0 থেকে 4 পর্যন্ত সমস্ত সংখ্যা ব্যবহার করে 5 ডিজিটের পিন নেয় each প্রতিটি অঙ্ক প্রবেশ করার পরে, লকটি প্রবেশ করা শেষ 5 টি সংখ্যা পরীক্ষা করে এবং কোডটি সঠিক হলে খোলে if আপনাকে এই লকটি পেরিয়ে যেতে হবে এবং দ্রুত।

সংক্ষেপে সুপারমুটেশন

একটি নির্গমন হ'ল নির্দিষ্ট সংখ্যার সমস্ত সেট সংমিশ্রণ। উদাহরণস্বরূপ, 0, 1, 2 সংখ্যার সমস্ত ক্রমবিন্যাস হ'ল:

012, 021, 102, 120, 201, এবং 210।

যদি আমরা এই সমস্ত অনুমতি একসাথে একত্রিত করি, তবে আমরা একটি সুপারপ্যামিউশন পাই:

012021102120201210

এই অতিপরিচয়টিতে 0, 1, 2 এর সমস্ত অনুমতি রয়েছে তবে এটির চেয়ে একটি আরও ছোট করা সম্ভব। আমি এখানে কিছুটা এড়িয়ে যাচ্ছি, তবে এই সংখ্যার সংক্ষিপ্ততর অতি উচ্চমানের হ'ল:

012010210

আমাদের উদ্দেশ্য এবং উদ্দেশ্যে, এটি মূলত সেই সংখ্যার সংক্ষিপ্ততম স্ট্রিং যাতে সেই অঙ্কগুলির সমস্ত সম্ভাব্য ক্রমগুলি থাকে, অর্থাত একটি অতিপরিবর্তন।

কার্য

আপনার টাস্কটি উপরে বর্ণিত সুপারেরমুটেশন উদাহরণের চেয়ে কিছুটা শক্ত, কারণ আপনার দুশ্চিন্তার জন্য আরও দুটি সংখ্যা রয়েছে। - আপনি যদি অতি উচ্চারণ সম্পর্কে না পড়ে থাকেন বা আমার উপরের উদাহরণটি কিছুটা অস্পষ্ট ছিল, আমি আপনাকে পরামর্শ দিচ্ছি যে আপনি এই বিষয়ে প্যাট্রিক হোনারের এই দুর্দান্ত নিবন্ধটি পড়বেন (এই চ্যালেঞ্জটি তাঁর নিবন্ধটি দ্বারা বেশ ভারীভাবে অনুপ্রাণিত হয়েছিল, তাই তাঁর কাছে কুডোস): https://www.quantamagazine.org/unscrambling-the-hided-secrets-of-superpermutations-20190116/ । আপনার লক্ষ্যটি হ'ল সংক্ষিপ্ততম প্রোগ্রামটি লিখুন যা 0 থেকে 4 সংখ্যার একটি অতিপরিচয় তৈরি করে।

স্কোরিং

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

ফাইলের আকার (বাইট) * উত্পন্ন অতি উচ্চতর দৈর্ঘ্য (অঙ্ক)

উদাহরণস্বরূপ, যদি আমার একটি 40 বাইট প্রোগ্রাম থাকে, এবং আমার সুপারপারমেশনটি 153 ডিজিট দীর্ঘ, আমার স্কোরটি হবে:

40 * 153 = 6120

সর্বদা হিসাবে, লক্ষ্যটি এই স্কোরটি যতটা সম্ভব কম করা।

টেমপ্লেট

আপনার উত্তরটি কীভাবে পোস্ট করা উচিত তা এখানে:

ভাষা | স্কোর

কাজের পরিবেশে কোডের লিঙ্ক (যদি সম্ভব হয়)

code snippet

কোড ব্যাখ্যা, ইত্যাদি

Finalities

এটি এই সাইটে আমার প্রথম প্রশ্ন। সুতরাং দয়া করে আমাকে বলুন যে আমি কিছু অনুপস্থিত বা আমার চ্যালেঞ্জের একটি অংশ অস্পষ্ট। আপনাকে ধন্যবাদ, এবং মজা গল্ফিং!


সর্বনিম্ন স্কোর সম্পর্কে ধারণা পেতে আমরা কি সংক্ষিপ্ত সুপার সুপারিশনের দৈর্ঘ্য জানতে পারি?
8

1
@ ফ্যাটালাইজ 153 সংক্ষিপ্ততম
টিফিল্ড

1
@ ফ্যাটালাইজ দেখুন এ 180632
আরনাউল্ড

1
প্রথম নজরে, দেখে মনে হচ্ছে এটি কেবলমাত্র ডি ব্রুইজন ক্রম চাইছে; তবে স্কোরিং মানদণ্ড এই চ্যালেঞ্জটিকে আকর্ষণীয় করে তুলেছে। সাবাশ!
এরিক আউটগল্ফার

3
@ এরিকথ আউটগলফার এটি কেবল একটি স্কোরিং পার্থক্য নয়: একটি সুপারপার্মিউশন কিছু দৈর্ঘ্যের সমস্ত ক্রমকে অন্তর্ভুক্ত করে , যখন ডি ব্রুইজন ক্রমটিতে কিছু দৈর্ঘ্যের সমস্ত স্ট্রিং অন্তর্ভুক্ত থাকে।
অ্যান্ডারস কাসের্গ

উত্তর:


6

05AB1E , স্কোর = 1673 (7 বাইট · 239)

žBœ∊{3ý

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

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

žB          push 1024
  œ         permutations: ["1024", "1042", …, "4201"]
   ∊        vertically mirror: ["1024", "1042", …, "4201", "4201", …, "1042", "1024"]
    {       sort: ["0124", "0124", "0142", "0142", …, "4210", "4210"]
     3      push 3
      ý     join: "01243012430142301423…3421034210"

পাইথ , স্কোর = 1944 (9 বাইট · 216)

s+R+4d.p4

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

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

 +R   .p4   append to each permutation d of [0, 1, 2, 3]:
   +4d        [4] + d
s           concatenate

1
vy3yJএকটি বাইট সংরক্ষণ করুন
এমিগিনা

1
পাইথ কোডে, m+d-> +Rএকটি বাইট সংরক্ষণ করে।
isaacg

8
এটিকে দুটি পৃথক উত্তর হিসাবে পোস্ট করা ভাল না, যেহেতু পদ্ধতির এবং প্রোগ্রামিংয়ের ভাষা উভয়ই আলাদা?
কেভিন ক্রুইজসেন

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

3

ব্র্যাচিয়েলগ , স্কোর = 2907 (19 বাইট × 153)

4⟦pᶠP∧~l.g;Pz{sᵈ}ᵐ∧

খুব ধীর কিছু দেখতে, কিন্তু যদি আপনি পরিবর্তন 4দ্বারা 2আপনি এটি পরীক্ষা করতে পারেন: অনলাইনে চেষ্টা করুন!

এটি সংক্ষিপ্ততম অতি উচ্চমানের রূপটি আবিষ্কার করে:

4⟦                   The range [0,1,2,3,4]
  pᶠP                P is the list of all permutations of this range
     ∧
      ~l.            Try increasing lengths for the output
         g;Pz        Zip the output with P
             {sᵈ}ᵐ   For each permutation, it must be a substring of the output
                  ∧

2

জাভাস্ক্রিপ্ট (ES6), 26975 (325 * 83 বাইট)

এই স্কোরিং সিস্টেমের সাথে, 'হার্ডকোড সর্বোত্তম সুপারমুটেশন' এবং ' কমপক্ষে নন-এসওল্যাংগুলিতে ' সমস্ত আদেশের সাথে সংক্ষিপ্ততর করার জন্য কেবল একটি সংক্ষিপ্ত বিল্ট-ইন ব্যবহার করুন ' something

যাইহোক এখানে একটি প্রচেষ্টা।

f=(a=[0,1,2,3,4],p=r='')=>a.map((v,i)=>f(a.filter(_=>i--),p+v))|~r.search(p)?r:r+=p

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

এটি 325 বাইটের একটি স্ট্রিং উত্পন্ন করে:

012340124301324013420142301432021340214302314023410241302431031240314203214032410341203421
041230413204213042310431204321102341024310324103421042310432201342014320314203412041320431
210342104330124301423021430241304123042131024310423201432041321044012340132402134023140312
4032141023410324201342031421034301243021431024320143210

আপনার একটি বৈধ পয়েন্ট আছে, আমি বলব আমি স্কোরিং সিস্টেমটি সম্পর্কে কিছুটা চিন্তিত ছিলাম। ভবিষ্যতে, আমি আরও বিবেচ্য এবং এমনভাবে স্কোর করার চেষ্টা করব যা বিভিন্ন ধরণের পদ্ধতির সুযোগ দেয়। : ডি
আইজ্যাক সি

আপনি যদি 23 বাইটের কম বয়লারপ্লেটের জন্য কোনও স্ট্রিং ফিরে করতে পারেন তবে হার্ডকোডিং স্কোরগুলি এই সমাধানের চেয়ে ভাল ( 26975/153-153>23)
সানচাইসেস

@ সাঞ্চাইজস আমাদের স্ট্রিংয়ের জন্য 5 বাইট বা বিগইন্টের জন্য 4 বয়লারপ্লেট লাগবে
আরনাউল্ড

@ সাঞ্চাইজস আমরা স্ট্রিংটি সামান্য সংকোচিত করতে পারি: এটি অনলাইনে চেষ্টা করুন! (অথবা আপনি যদি ফলাফলটি পূর্ববর্তী nপ্রত্যয়টি গণনা না করেন তবে এর চেয়ে কম console.log)
নিল


2

05AB1E , স্কোর: 5355 2160 (216 * 10 বাইট )

3ÝœJε4yJ}J

পোর্ট অফ @AndersKaseorg এর Pyth উত্তর , তাই নিশ্চিত তাকে ভোট দিন করতে!

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

ব্যাখ্যা:

3Ý           # Push a list in the range [0,3]: [0,1,2,3]
  œ          # Get all possible permutations of this list
   J         # Join each inner list together to a single string
    ε        # Map each string `y` to:
             #  (Push string `y` implicitly)
     4       #  Push 4
      y      #  Push string `y` again
       J     #  Join all three together
        }J   # After the map: Join all strings together to a single string
             # (and output it implicitly as result)

2

অক্টাভা , 27 x 442 = 11934

'01234'(perms(1:5)'(4:445))

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

সুতরাং, দেখা যাচ্ছে যে নির্মমভাবে সমস্ত ক্রম উত্পন্ন করে এবং তারপরে সংক্ষিপ্ততম নিম্নতম স্ট্রিংয়ে কাটা যা এখনও একটি বৈধ সুপারপারমুটেশন সবচেয়ে সংক্ষিপ্ত সুপারপারমিটেশন তৈরির চেয়ে কম। দুঃখের বিষয়, এবার স্কোরটি প্যালিনড্রোম নয়।

অক্টেভ , 97 এক্স 153 = 14841

a=sym(9);while i<120
i=0;a+=1;q='01234';for t=q(perms(1:5))'
i+=any(regexp(char(a),t'));end
end
a

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

এন্ট্রি কয়েকটি জিনিসের জন্য আপডেট হয়েছে

  • a++ প্রতীকী সংখ্যার জন্য প্রয়োগ করা হয় না।
  • contains()অষ্টাভে প্রয়োগ করা হয় না। সঙ্গে প্রতিস্থাপন any(regexp())
  • অনলাইন লিঙ্কে, আমি ম্যানুয়ালি a153 দৈর্ঘ্যের সুপারপারমুটেশনের খুব কাছাকাছি প্রবেশ করলাম। এটি সমাধান যাচাই করার অনুমতি দেয়।

2

সিজেএম (6 * 240 = 1440)

5e!72>

অনলাইন ডেমো , যাচাইকরণ (সূচকটি আউটপুট করে যার প্রতিটি ক্রমীকরণ 0..4পাওয়া যায়; এটি আউটপুট সমতল করতে হবে কারণ মূল প্রোগ্রামটি স্টাডাউটকে উপযুক্ত আউটপুট দেয় তবে এটি স্ট্যাকের মধ্যে যা রাখে তা সরাসরি ব্যবহারযোগ্য নয়)।

সানচাইসেস থেকে চুরি হওয়া পদ্ধতির , যদিও সিজেমের পারমুয়েশন অর্ডার আলাদা, একটি পৃথক স্ট্রিং দেয়।


সিজেএম (22 * 207 = 4554)

0a4{)W@+W+1$)ew\a*W-}/

অনলাইন ডেমো , বৈধতা

ব্যবচ্ছেদ

এটি একটি সাধারণ পুনরাবৃত্তি নির্মাণ ব্যবহার করে।

0a       e# Start with a superpermutation of one element, [0]
4{       e# for x = 0 to 3:
  )      e#   increment it: n = x+1
  W@+W+  e#   wrap the smaller superpermutation in [-1 ... -1]
  1$)ew  e#   split into chunks of length n+1
  \a*    e#   insert an n between each chunk
  W-     e#   remove the -1s from the ends
}/


1

কাঠকয়লা , 29 বাইট, আউটপুট দৈর্ঘ্য 153, স্কোর 4437

”)⊞⧴�r3⁼H⁴↓¦σ✳LïpWS [T↑ZωÞ”‖O

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা: @ টিফিল্ডের মতো, আমি কেবলমাত্র একটি সুপার সুপারিশনের অর্ধেক মুদ্রণ করি এবং এটি মিরর করি। নিম্নলিখিত কোডগুলি ব্যবহার করে আমি সুপারেরমিটেশন গণনা করেছি:

Push(u, w);
for (u) {
    Assign(Plus(Plus(i, Length(i)), i), h);
    Assign(Ternary(i, Join(Split(w, i), h), h), w);
    Assign(Incremented(Length(i)), z);
    if (Less(z, 5)) for (z) Push(u, Slice(h, k, Plus(k, z));
}
Print(w);

এটি কাঠকয়ালে একটি 45-বাইট প্রোগ্রামে অনুবাদ করে তাই 6885 রান করে।




0

পার্ল 6 , 7191 (153 * 47 বাইট)

say first *.comb(permutations(5).all.join),0..*

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

অনুসন্ধান করা প্রথম সংখ্যা ডিজিটের সব একাধিক বিন্যাসন রয়েছে 0 4. এই একটি নিতে হবে দীর্ঘ সময় চালানো, কিন্তু আপনি প্রথম দুই permutations সাথে এটি পরীক্ষা করতে 0এবং0,1


0

ওল্ফ্রাম ভাষা (গণিত) , 153 * 95 বাইট, 14535

Nest[Flatten[Join[#,{Max@#+1},#]&/@Partition[#,Max@#+1,1]]//.{b__,a__,a__,c__}:>{b,a,c}&,{0},4]

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





নিস! আমি কেবল একটি 153-সমাধান পোস্ট করতে চেয়েছিলাম। আপনি যদি চান তবে একটি নতুন উত্তর পোস্ট করতে পারেন
J42161217

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