कोड गोल्फ: नट्स को मिलाएं ताकि एक ही तरह का कोई भी स्पर्श न हो


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
"आपके कार्यक्रम में प्रत्येक प्रकार के अखरोट का प्रतिनिधित्व करने का एक तरीका होना चाहिए, जैसे कि पूर्णांक कोड" ऐसा क्यों है? - "यह केवल सरणी को फेरबदल नहीं कर सकता है जब तक कि यह संयोग से अद्वितीय न हो जाए। नियोजित प्रकार एक नियतकालिक होना चाहिए" फेरबदल अभी भी निर्धारक हो सकता है। क्या आप सिर्फ कार्यक्रम की समय जटिलता पर एक सीमा लगाने का मतलब है?
को बंद करना

1
मुझे @leftaroundabout से सहमत होना होगा एक विशेष एल्गोरिथ्म को मना करना बहुत अच्छे कारण के बिना मूर्खतापूर्ण है। कोड गेम्स के बारे में सबसे पुरस्कृत चीजों में से एक यह है कि वास्तव में विभिन्न प्रकार के तरीके हैं जो रोजगार प्राप्त करते हैं।
dmckee --- पूर्व-संचालक ने

@ डिकी, मुझे लगता है कि एल्गोरिथ्म नियतात्मक होने की आवश्यकता उचित है - यदि आरएनजी दोषपूर्ण है या इनपुट काफी लंबा है, तो एक nondeterministic समाधान समाप्त करने में विफल हो सकता है।
बूथ

@boothby। भावहीन। मैं एक कण भौतिकवादी हूं। मोंटे कार्लो अपने आप में एक महत्वपूर्ण उपकरण है। इसके अलावा, अगर मैं एक निश्चित PRNG और एक निश्चित बीज चुनता हूं तो यह नियतात्मक है।
dmckee --- पूर्व-मध्यस्थ ने

1
मुझे लगता है कि मुझे एक उदाहरण मिला जिसमें कई समाधान हैं, लेकिन उनमें से किसी को खोजने में विफल रहने के लिए कुछ उत्तर हो सकते हैं। क्या मैं इसे जोड़ सकता हूं? (५,४,४,३,३,२) perl6 -e 'my @a="aaaaabbbbccccdddee".comb;my @b = @a.pick(*) while @b.squish !== @a;say [~] @b' baedcbdacdecbabaca(३,३,२) के कारण उन्हें असफल भी होना पड़ सकता है।
ब्रैड गिल्बर्ट 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वास्तव में मेरे मन में यही था। कल्पना की मेरी व्याख्या यह थी कि यह स्टैक पर इनपुट ले सकता है और इसे स्टैक पर छोड़ सकता है, इसलिए शायद हमें स्पष्टीकरण के लिए धक्का देना चाहिए।
पीटर टेलर

@PeterTaylor, अच्छा है। मेरे लिये कार्य करता है।
बूथ

यह ["walnut"]तुलना-पहले-दो खंड में इनपुट पर क्रैश होता है ।
पीटर टेलर

@PeterTaylor आप सही हैं। मुझे उस कोने के मामले पर काम करना होगा।
हॉवर्ड

6

GolfScript, 32 वर्ण

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

हॉवर्ड के समाधान के रूप में एक ही इनपुट और आउटपुट प्रारूप।


मुझे सॉर्ट भाग पर एक ही विचार था लेकिन इसे अभी तक कोड नहीं किया था :-) अच्छा काम!
हॉवर्ड

6

Brachylog v2, 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⌂

इसे चलाएं और डीबग करें

यहाँ एक ही कार्यक्रम को अनपैक किया गया है, ungolfed, और टिप्पणी की गई है।

|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

इसको चलाओ

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.