কোড গল্ফ: বাদামগুলি এমনভাবে মিশ্রিত করুন যাতে একই ধরণের কোনওটি স্পর্শ না করে


16

ইনপুট:

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

সম্ভাব্য বাদাম:

Kola nut
Macadamia
Mamoncillo
Maya nut
Mongongo
Oak acorns
Ogbono nut
Paradise nut
Pili nut
Pistachio
Walnut

আউটপুট:

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

উদাহরণ ইনপুট (সরলীকৃত):

["walnut", "walnut", "pistachio"]

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

["walnut", "pistachio", "walnut"]

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

মিশ্রিত বাদাম?  দেখি দুটি বাদাম ছোঁয়াছে!


4
"আপনার প্রোগ্রামে অবশ্যই প্রতিটি ধরণের বাদামের প্রতিনিধিত্ব করার একটি উপায় থাকতে হবে, যেমন একটি পূর্ণসংখ্যা কোড" এটি কেন? - "যতক্ষণ না সুযোগটি অনন্য হয়ে ওঠে ততক্ষণ সহজে অ্যারে পরিবর্তন করতে পারে না employed আপনি কি কেবলমাত্র প্রোগ্রামের সময়ের জটিলতার উপর সীমাবদ্ধতা চাপিয়ে দেয়ার অর্থ দিচ্ছেন?
জবাব দেওয়া বন্ধ করে দিয়েছে

1
আমাকে @ বামপন্থীর সাথে একমত হতে হবে কোনও নির্দিষ্ট অ্যালগরিদম নিষিদ্ধ করা খুব ভাল কারণ ছাড়াই বোকা। এর মতো কোড গেম সম্পর্কে সর্বাধিক পুরষ্কারজনক বিষয় হ'ল হ'ল বিভিন্ন ধরণের পদ্ধতি যা নিযুক্ত হয়।
ডিএমকেই --- প্রাক্তন-মডারেটর বিড়ালছানা

@ ডিএমকেহে, আমি মনে করি যে অ্যালগোরিদমকে ডিটারিস্টিনিস্টিক হওয়ার প্রয়োজনীয়তা যুক্তিসঙ্গত - যদি আরএনজি ত্রুটিযুক্ত হয় বা ইনপুটটি বেশ দীর্ঘ হয়, তবে একটি নিরপেক্ষবাদী সমাধানটি শেষ করতে ব্যর্থ হতে পারে।
বুথবি

@boothby। সাধরণ। আমি কণা পদার্থবিদ। মন্টে কার্লো তার নিজস্ব একটি গুরুত্বপূর্ণ সরঞ্জাম। তদুপরি, আমি যদি একটি স্থির পিআরএনজি এবং একটি নির্দিষ্ট বীজ চয়ন করি তবে এটি নির্দোষ ।
ডিএমকেকে --- প্রাক্তন মডারেটর বিড়ালছানা

1
আমি মনে করি যে আমি একটি উদাহরণ পেয়েছি যার বেশ কয়েকটি সমাধান রয়েছে, তবে এর কিছু উত্তর খুঁজে পেতে ব্যর্থ হতে পারে। আমি কি এটি যুক্ত করতে পারি? (5,4,4,3,3,2) perl6 -e 'my @a="aaaaabbbbccccdddee".comb;my @b = @a.pick(*) while @b.squish !== @a;say [~] @b' baedcbdacdecbabaca(3,3,2) তাদের ব্যর্থ হতে পারে।
ব্র্যাড গিলবার্ট b2gills

উত্তর:


8

গল্ফস্ক্রিপ্ট, 42 41 37 38 টি অক্ষর

~.`{\`{=}+%1-,}+$.,)2//zip[]*.2<..&=*p

কোডটি STDIN এ ইনপুট প্রত্যাশা করে এবং ফলাফল STDOUT- এ মুদ্রণ করে, যেমন:

> ["walnut" "walnut" "walnut" "macadamia" "pistachio"]
["walnut" "macadamia" "walnut" "pistachio" "walnut"]

> ["walnut" "walnut" "walnut" "macadamia" "walnut"]
[]

স্ক্রিপ্টটি প্রত্যাশার চেয়ে দীর্ঘ হয়ে গেছে তবে আমি মনে করি উন্নতির কোনও জায়গা আছে।

সম্পাদনা: একক আইটেমের সাথে তালিকার ক্ষেত্রে আমার 1 টি চরিত্রের দাম পড়তে পারে (আমি যে সেরা তুলনাটি সামনে আসতে পারলাম তা পিটারের মতোই)।


1
আমি এখনও এটি বাস্তবায়নের জন্য বসে ছিলাম না, তবে $.,)2//zipআমি যা মনে রেখেছিলাম ঠিক তা-ই। আমার অনুমানের ব্যাখ্যাটি হ'ল এটি স্ট্যাকের ইনপুট নিতে পারে এবং স্ট্যাকের উপরে রেখে দিতে পারে, তাই সম্ভবত আমাদের স্পষ্টতার জন্য চাপ দেওয়া উচিত।
পিটার টেলর

@ পিটারটেলর, দুর্দান্ত আমার জন্য কাজ কর.
বুথবি

এই ["walnut"]তুলনা-প্রথম-দুই বিভাগে ইনপুট উপর ক্রাশ ।
পিটার টেলর

@ পিটারটেলর আপনি ঠিক বলেছেন আমাকে ওই কর্নারের ক্ষেত্রে কাজ করতে হবে।
হাওয়ার্ড

6

গল্ফস্ক্রিপ্ট, 32 টি অক্ষর

~:x{]x\-,}$.,)2//zip[]*.2<..&=*`

হাওয়ার্ডের সমাধান হিসাবে একই ইনপুট এবং আউটপুট ফর্ম্যাট।


আমি সাজানোর অংশে একই ধারণা পেয়েছিলাম তবে এখনও এটি কোড আপ করি নি :-) ভাল কাজ!
হাওয়ার্ড

6

ব্র্যাচল্যাগ ভি 2, 10 বাইট

p.¬{s₂=}∨Ė

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

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

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

ব্যাখ্যা

p.¬{s₂=}∨Ė
p            Find a permutation of {the input}
  ¬{   }     which does not have the following property:
    s₂         it contains a pair of adjacent elements
      =        that are equal
        ∨    {no constraint on what value the equal elements can have}
 .           If you find such a permutation, output it.
        ∨    If no permutation is found, ignore the input and
         Ė     {output} an empty list

1

জে, 80 টি অক্ষর

]`_:@.(0<2&([:+/=/\))({.~-:@#),((],.|.)~>.@-:@#)<"1;(\:#&.>)(</.])[;.1' ',1!:1[1

গল্ফস্ক্রিপ্টের মতো একই লিগে নেই। আমি সন্দেহ করি যে এখানে কিছু লাভ আছে, তবে 14 টি অক্ষর কেবল প্রোগ্রামে তালিকা পেতে প্রয়োজন [;.1' ',1!:1[1হ'ল একটি বড় প্রতিবন্ধকতা।

মূলত প্রোগ্রামটি তালিকার মধ্যে নিয়ে আসে, একই ধরণের আইটেমগুলিকে একসাথে গোষ্ঠীভূত করে, প্রতিটি গ্রুপের নীচে নামার আইটেমের সংখ্যা অনুসারে বাছাই করে এবং প্রথমার্ধ এবং তালিকার দ্বিতীয়ার্ধের মধ্যে আউটপুটকে বিকল্প রূপ দেয়। বাকী কোডটি বহির্মুখী আইটেমগুলি থেকে মুক্তি পেয়ে তালিকাটি বৈধ আউটপুট _কিনা তা স্থির করে ( যদি তা না হয় তবে অনন্তর আউটপুট )।

উদাহরণ:

macadamia walnut walnut pistachio walnut

গ্রুপ (</.]):

macadamia walnut walnut walnut pistachio

বাছাই করুন (\:#&.>):

walnut walnut walnut macadamia pistachio

অভ্যাস ((],.|.)~>.@-:@#):

walnut macadamia walnut pistachio walnut


0

স্ট্যাক্স , 10 বাইট

│éÿ∞å[zàL⌂

এটি চালান এবং এটি ডিবাগ করুন

এখানে একই প্রোগ্রামটি আনপ্যাকড, অবরুদ্ধ এবং মন্তব্য করা হয়েছে।

|T      get all permutations
{       block to filter by
  :g_=  after dropping repeated elements, it's still equal
f       execute filter
|c      terminate and pop if falsy (no match)
hJ      take the first permutation, and join with spaces

এটি চালান

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