म्यूजिकल कछुए के साथ खेलते हुए


20

मेरे दो बच्चे निम्नलिखित खिलौने के साथ खेलना पसंद करते हैं:

कछुए

अंदर की आकृतियों वाले रंगीन क्षेत्रों को स्पर्श किया जा सकता है और कछुए तब उस क्षेत्र को रोशन करते हैं और ध्वनि बजाते हैं या रंग या आकार के नाम को कहते हैं। बीच का बटन मोड बदल देता है। एक मोड है जिसमें क्षेत्रों को अलग-अलग संगीत नोटों को बजाया जाता है, जब एक मोड़ के साथ स्पर्श किया जाता है: यदि बच्चा तीन लगातार क्षेत्रों को दक्षिणावर्त छूता है, तो एक विशेष राग 1 खेला जाता है। यदि लगातार छुआ जाने वाले तीन क्षेत्रों को वामावर्त रखा जाता है, तो एक विशेष राग 2 बजाया जाता है।

चुनौती

चलो खिलौने के आंतरिक तर्क का अनुकरण करते हैं। बच्चे के 3 प्रेस के साथ एक स्ट्रिंग को देखते हुए, दो अलग-अलग, सुसंगत मूल्यों को लौटाएं यदि तीन प्रेस लगातार क्षेत्रों (घड़ी की दिशा या वामावर्त) और तीसरे विशिष्ट मान के लिए हैं यदि वे नहीं हैं।

विवरण

  • इनपुट क्षेत्रों को प्रत्येक वर्ण के साथ नामित किया जाएगा, जो उनका रंग हो सकता है: ROYGBलाल, नारंगी, पीला, हरा और नीला; या उनके आकार: HSRTCदिल, वर्ग, स्टार ( R), त्रिकोण और सर्कल के लिए। मामला मायने नहीं रखता है, आप सिर्फ अपरकेस या लोअरकेस में इनपुट और आउटपुट के साथ काम करना चुन सकते हैं।
  • कार्यक्रम को तीन प्रेस के साथ एक स्ट्रिंग (या चार सरणी या कुछ भी समतुल्य) प्राप्त होगा। उदाहरण (रंगों का उपयोग): RBO, GYO, BBR, YRG, YGB, ORB...
  • कार्यक्रम तीन संभावित परिणामों का प्रतिनिधित्व करने के लिए तीन अलग-अलग, सुसंगत मूल्यों का उत्पादन करेगा: एक पहला मान यदि संयोजन एक विशेष राग को ट्रिगर नहीं करता है, तो दूसरा मान यदि संयोजन दक्षिणावर्त विशेष राग को ट्रिगर करता है, और तीसरा मान यदि संयोजन चलाता है। वामावर्त विशेष राग। उदाहरण: 0बिना किसी विशेष संयोजन के, 1एक दक्षिणावर्त संयोजन -1द्वारा ट्रिगर किए गए माधुर्य के लिए और एक वामावर्त संयोजन द्वारा ट्रिगर किए गए माधुर्य के लिए।
  • आपको गलत इनपुट से निपटने के लिए चिंता करने की आवश्यकता नहीं है।

परीक्षण के मामलों

Input   Output      // Input based on colors
--------------
RBO     0           // No special combination
GYO     -1          // Counterclockwise melody triggered
BBR     0           // No special combination
YRG     0           // No special combination
YGB     1           // Clockwise melody triggered
ORB     -1          // Counterclockwise melody triggered
OOO     0           // No special combination
BRO     1           // Clockwise melody triggered

यह , इसलिए प्रत्येक भाषा की जीत के लिए सबसे छोटा कोड हो सकता है!


है [0,0], [1,0], [0,1]आउटपुट के रूप में अनुमति दी? मैं देख रहा हूँ कि गणितज्ञ उत्तर दे रहा है, और यह 05AB1E उत्तर में 3 बाइट बचा सकता है।
केविन क्रूजसेन

1
@ केविनक्रूजसेन आप कर सकते हैं। आउटपुट मान तब तक कुछ भी हो सकते हैं जब तक वे अलग और सुसंगत हैं।
चार्ली

जवाबों:


12

जावा 8, 48 39 33 बाइट्स

s->"ROYGBRO BGYORBG".indexOf(s)|7

-6 बाइट्स @RickHitchcock के लिए धन्यवाद , इसलिए उसे भी उभारना सुनिश्चित करें !

इनपुट-स्ट्रिंग के रूप में अपरकेस रंग लेता है। -1कोई नहीं, 7दक्षिणावर्त और 15वामावर्त के लिए आउटपुट ।

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

s->      // Method with String parameter and integer return-type
   "ROYGBRO BGYORBG".indexOf(s)
         //  Get the index of the input in the String "ROYGBRO BGYORBG",
         //  which will result in -1 if the input is not a substring of this String
    |7   //  Then take a bitwise-OR 7 of this index, and return it as result

पुराने 39 बाइट्स उत्तर:

s->(char)"ROYGBRO BGYORBG".indexOf(s)/7

इनपुट-स्ट्रिंग के रूप में अपरकेस रंग लेता है। 9362कोई नहीं, 0दक्षिणावर्त और 1वामावर्त के लिए आउटपुट ।

इसे ऑनलाइन आज़माएं।

स्पष्टीकरण:

s->      // Method with String parameter and integer return-type
   (char)"ROYGBRO BGYORBG".indexOf(s)
         //  Get the index of the input in the String "ROYGBRO BGYORBG",
         //  which will result in -1 if the input is not a substring of this String
         //  And cast it to a char (-1 becomes character with unicode value 65535)
    /7   //  Integer-divide it by 7 (the char is implicitly converted to int doing so)

2
मुझे लगता है कि 9632 सबसे अच्छा अलग और सुसंगत मूल्य है जो मैंने अब तक इन उत्तरों में देखा है :)
मिशा लावरोव

@MishaLavrov यह 10922(पूर्णांक-विभाजन /6) या 8191(पूर्णांक-विभाजन द्वारा /8) भी हो सकता है , लेकिन मैं चुनता हूं /7क्योंकि यह स्ट्रिंग में स्थान का सूचकांक है। :)
केविन क्रूज़सेन

1
@RickHitchcock धन्यवाद! मुझे लगा कि मैंने कुछ बिटवाइज़ ऑपरेशंस की कोशिश की है, लेकिन जाहिर है कि यह ठीक से पर्याप्त नहीं है ..
केविन क्रूज़सेन

6

जावास्क्रिप्ट (ईएस 6), 41 बाइट्स

इनपुट के रूप में रंग के आद्याक्षर लेता है। क्लॉकवाइज़ के 2लिए trueया falseवामावर्त के लिए कोई भी नहीं लौटाता है ।

s=>~(x='ROYGBRO_ORBGYOR'.search(s))?x<5:2

इसे ऑनलाइन आज़माएं!


3
कम से कम अरनौल्ड से एक उत्तर मैं समझ सकता हूँ !! :)
चार्ली

3
@ चेरली मुझे लगता है कि अरनुल बीमार है या कुछ और है .. न केवल उसका जवाब पठनीय और समझने में आसान है, यह मेरे जावा उत्तर से भी अधिक लंबा है! o. o यहाँ कुछ स्पष्ट रूप से गलत है। ; पी
केविन क्रूज़सेन

s=>('ROYGBRO_ORBGYOR'.search(s)+8)/8|0
l4m2

1
क्या आप भी रॉग करते हैं, भाई?
क्वेंटिन

6

पायथन 2 , 36 बाइट्स

lambda i:'ROYGBRO ORBGYOR'.find(i)/7

-1- कोई नहीं
0- दक्षिणावर्त
1- वामावर्त

इसे ऑनलाइन आज़माएं!


हे, महान दिमाग (या कुछ) ... codegolf.stackexchange.com/a/174635/53748 (यदि मैंने खुद सामान खरीदने से पहले इसे देखा है, तो मैंने आपको बस बाइट बचा लिया है: p)
जोनाथन एलन

@JonathanAllan चिंता न करें, सामान होता है: D मैंने आपके उत्तर को रद्द कर दिया है, क्योंकि मैं इसे नापसंद नहीं कर सकता!
डेड पोसुम

5

एक्सेल, 29 बाइट्स

=FIND(A1,"ROYGBRO_RBGYORB")<6

इनपुट के रूप में बड़े रंग।

क्लॉकवाइज़ के #VALUE!लिए TRUE, FALSEएंटी-क्लॉकवाइज़ के लिए कोई पैटर्न नहीं है ।

अपवाद को संभालने के IFERROR( ,0)लिए लपेट सकते +11 bytesहैं, और इसके बजाय बिना पैटर्न के मामलों के लिए '0' लौटा सकते हैं।


5

05AB1E , 15 11 बाइट्स

केविन क्रूज़सेन और मैजिक ऑक्टोपस यूरन की बदौलत 4 बाइट्स बचाए

आकृतियों का उपयोग करता है।
आउटपुट [0, 0]के लिए कोई भी , [1, 0]के लिए दक्षिणावर्त और [0, 1]के लिए वामावर्त

‚.•ÌöJη•så

इसे ऑनलाइन आज़माएं! या टेस्ट सूट के रूप में

व्याख्या

‚            # pair the input with its reverse
  .•ÌöJη•     # push the string "hsrtchs"
         så   # check if the input or its reverse is in this string

1
: मेरे 15-बाइट जवाब है कि मैं पोस्ट करने के लिए के बारे में था के रूप में बहुत समान .•1´₃éC•Â‚εXå}¥है, जिसके परिणामस्वरूप [0], [1]या [-1], मुझ से तो +1। Btw, मुझे लगता है कि (नहीं यकीन है कि) आप पिछले तीन हटाने, outputting द्वारा तीन बाइट्स बचा सकता है [0, 0], [1, 0]और [0, 1]अलग-अलग मान के रूप में। मैं देखता हूं कि गणितज्ञ उत्तर भी यही करता है। सत्यापन के लिए ओपी से पूछेंगे।
केविन क्रूजसेन

बस ओपी से पूछा, और आपको वास्तव में अंतिम तीन बाइट्स छोड़ने की अनुमति है। जब तक तीन आउटपुट सुसंगत और विशिष्ट हैं यह ठीक है जो भी है।
केविन क्रूजसेन

2
‚.•ÌöJη•såक्या 11 बाइट्स [1,0], [0,1] and [0,0]को अद्वितीय माना जाता है (जब तक कि मैं यहां कुछ स्पष्ट याद नहीं कर रहा हूं, ƶOउस 11-बटर के अंत को जोड़ना अभी भी 13 है 0, 1, 2 उत्तर के लिए आपके पास अभी भी है)। परीक्षण के मामलेटेस्ट केस २ । आदेश उलट लूप की आवश्यकता को हटा देता है।
मैजिक ऑक्टोपस Urn

मूल धागे पर टिप्पणी के अनुसार 11-बेटर ठीक होना चाहिए, क्योंकि यह 3 अलग-अलग मूल्यों का उपयोग करता है, आप जेली को एक :) के साथ हरा सकते हैं।
मैजिक ऑक्टोपस Urn

@KevinCruijssen धन्यवाद! मैं हमेशा बिना किसी कारण के "एकल अंक" के रूप में अद्वितीय के बारे में सोचता हूं :)
एमिग्ना

4

जावास्क्रिप्ट (ईएस 6), 32 बाइट्स

s=>'ROYGBRO_ORBGYOR'.search(s)|7

रिटर्न -1 अगर कोई संयोजन नहीं, 15 अगर वामावर्त, 7 अगर दक्षिणावर्त।


4

वोल्फ्राम लैंग्वेज (गणितज्ञ) , 42 36 बाइट्स

{"ROYGBRO","ORBGYOR"}~StringCount~#&

इसे ऑनलाइन आज़माएं!

गिनता समय की संख्या इनपुट दोनों में प्रकट होता है "ROYGBRO"और "ORBGYOR"। क्लॉकवाइज के {1,0}लिए, {0,1}वामावर्त के लिए, और {0,0}बिना किसी विशेष संयोजन के लिए रिटर्न ।

केवल एक और बाइट की कीमत पर, हम घड़ी के लिए, और वामावर्त के 0लिए कुछ नहीं के लिए आउटपुट प्राप्त कर सकते हैं ।12"ROYGBRO.ORBGYORBGYOR"~StringCount~#&


4

x86 मशीन कोड, 39 36 बाइट्स

00000000: f30f 6f11 b800 0000 0066 0f3a 6310 0c89  ..o......f.:c...
00000010: c883 c807 c352 4f59 4742 524f 2042 4759  .....ROYGBRO BGY
00000020: 4f52 4247                                ORBG

सभा:

section .text
	global func
func:					;the function uses fastcall conventions
					;no stack setup needed because we don't need to use stack
	movdqu xmm2,[ecx]		;Move DQword (16 bytes) from 1st arg to func(ecx) to SSE reg
	mov eax, msg			;Load address of constant str 'msg' into eax
	PcmpIstrI xmm2, [eax], 1100b	;Packed Compare String Return Index, get idx of [eax] in xmm2
	mov eax, ecx			;Move returned result into reg eax
	or eax, 7			;Bitwise OR eax with 7 to get consistent values
	ret				;return to caller, eax is the return register
section .data
	msg db 'ROYGBRO BGYORBG'

इसे ऑनलाइन आज़माएं!

आउटपुट दक्षिणावर्त और काउंटर-क्लॉकवाइज के 23लिए कोई भी नहीं है । @RickHitchcock के उत्तर के आधार पर।715

SSE स्ट्रिंग तुलना निर्देश का उपयोग करके 3 बाइट्स सहेजे जाते हैं बजाय libc का उपयोग करने के।


1
क्या आप मशीन कोड बाइट्स की गणना यहां कर सकते हैं, क्योंकि वे बाइट्स बाइनरी में स्ट्रैस के वर्गीकरण पर भरोसा करते हैं? आप बस उन्हीं बाइट्स को दूसरे संदर्भ में नहीं ले सकते हैं और उनसे वही काम करने की उम्मीद कर सकते हैं।
रॉबर्ट फ्रेजर

शुद्ध मशीन कोड प्रतिस्थापन हैं जो मानक पुस्तकालय strchr.com/strcmp_and_strlen_use_sse_4.2
रॉबर्ट फ्रेजर

@RobertFraser फ़ंक्शन का प्लेसमेंट लिंकिंग के दौरान हल हो गया है, बाइट काउंट हमेशा समान रहेगा क्योंकि फ़ंक्शन का strstrपता हमेशा 32-बिट (4 बाइट) पता होगा। मेरे पोस्ट में मशीन कोड अनलिंक है।
लोगन

1
मुझे लगता है कि यह एक ग्रे क्षेत्र की तरह है। फ़ंक्शन का उपयोग किए जाने से पहले ऑब्जेक्ट फ़ाइल (लिंकर मैप) में डेटा पर निर्भर करता है। लेकिन आप यह तर्क दे सकते हैं कि जावा लैम्ब्डा से अलग कोई प्रकार की घोषणा की आवश्यकता नहीं है।
रॉबर्ट फ्रेजर

ABI पर पूरी तरह से ध्यान देने के लिए ध्यान दें कि आपको xmm5 या xmm6 का उपयोग करना होगा, जो कॉलर-सेव रजिस्टर हैं, xmm2 के बजाय जो कैली-सेव है (लेकिन जो किसी भी बाइट का खर्च नहीं करेगा)।
रॉबर्ट फ्रेजर


3

एपीएल (डायलॉग), 22 18 बाइट्स

+/(⍷-⍷∘⌽)∘'ROYGBRO'

-4 बाइट्स @ धन्यवाद का धन्यवाद

रंग आद्याक्षर की एक स्ट्रिंग लेता है। कोई विशेष पैटर्न के लिए आउटपुट 0, वामावर्त के लिए -1, वामावर्त के लिए 1।

इसे ऑनलाइन आज़माएं!


3

पायथन 2 , 45 43 बाइट्स

lambda i,a='ROYGBRO':(i in a)-(i[::-1]in a)

इसे ऑनलाइन आज़माएं!

@DeadPossum से विचारों और गंभीर क्रेडिट के साथ

-2 @JoKing के साथ धन्यवाद। अब आउटपुट -1 = वामावर्त, 0 = कोई नहीं, 1 = दक्षिणावर्त।

मेरा मूल प्रयास ऐतिहासिक उद्देश्यों के लिए नीचे है।

पायथन 2 , 52 51 बाइट्स

lambda i,a='ROYGBRO':((0,1)[i[::-1]in a],2)[i in a]

इसे ऑनलाइन आज़माएं!

0 = कोई नहीं, 1 = वामावर्त, 2 = दक्षिणावर्त



@DeadPossum आपके जवाब के रूप में पोस्ट करने के लिए आपके लिए पोस्ट से गंभीरता से ठंडा और अलग है। मैं उत्थान करूंगा।
एलपेड्रो

3

पायथन 2 ,  35  36 बाइट्स

+1 - किसी कारण से मुझे लगा कि सभी बटन अलग होंगे> _ <

डेड पोसम द्वारा स्वतंत्र रूप से विकसित जो मैंने अभी (और अब अप-वोट किया है) देखा है

lambda s:'ORBGYO.BROYGBR'.find(s)/7

इसे ऑनलाइन आज़माएं!


मुझे लगता है कि आपको पात्रों के तार अलग करने की आवश्यकता है। यह "RBR" के लिए 0 (एंटी-क्लॉकवाइज़) देता है, जो आपके संयोजन की सूची में नहीं है।
रिक हिचकॉक

@ रिक्शेकॉक आह मैंने 3 अलग-अलग प्रेस को मान लिया था जो निश्चित रूप से गलत है। वह इसे प्रभावी रूप से डेड पोसुम के समान ही बना देगा!
जोनाथन एलन

मोबाइल से डिलीट नहीं कर सकते ... बाद में डिलीट या एड्रेस करेंगे
जोनाथन एलन

हाँ, यह अस्पष्ट हो सकता है, लेकिन परीक्षण मामलों ("OOO") में से एक यह दर्शाता है कि वे दोहरा सकते हैं।
रिक हिचकॉक

@RickHitchcock हाँ, जो मैंने आपकी टिप्पणी के बाद देखा - धन्यवाद!
जोनाथन एलन


2

पिप , 19 बाइट्स

Y"ROYGBRO"OaNyaNRVy

10दक्षिणावर्त के लिए आउटपुट , 01वामावर्त के लिए, 00न तो के लिए। इसे ऑनलाइन आज़माएं!

व्याख्या

                     a is 1st cmdline argument
Y"ROYGBRO"           Yank that string into y variable
           aNy       Count of occurrences of a in y
          O          Output without newline
                RVy  y reversed
              aN     Count of occurrences of a in that string
                     Print (implicit)

2

जे , 21 बाइट्स

-&(OR@E.&'ROYGBRO')|.

इसे ऑनलाइन आज़माएं!

यह काम किस प्रकार करता है

-&(OR@E.&'ROYGBRO')|.  Monadic 2-verb hook. Input: a string.

                   |.  Map over [input string, input string reversed]:
      E.&'ROYGBRO'     Find exact matches of input in 'ROYGBRO'
  (OR@            )    Reduce with OR; is it a substring of 'ROYGBRO'?
-&                     Reduce with -; result is 1 for CW, -1 for CCW, 0 otherwise

फ़ंक्शन पुन: उपयोग की अधिकतम मात्रा प्राप्त करता है।


2

जेली , 12 बाइट्स

,Ṛẇ€“¤ƈẎṬ%Ȥ»

इसे ऑनलाइन आज़माएं!

-4 जोनाथन एलन को धन्यवाद ।

क्लॉकवाइज: [1, 0]
काउंटर-क्लॉकवाइज: [0, 1]
अन्य:[0, 0]


@JonathanAllan पे, धन्यवाद। बस फिर से देखा मैंने क्या किया, तुम सिर्फ 15 घंटे तेज थे। : P
आउटगॉल्फ





0

जाप, 17 14 बाइट्स

रंगों को इनपुट के रूप में, लोअरकेस में ले जाता है। 0वामावर्त के लिए वापसी , 1वामावर्त के लिए या -1यदि कोई कॉम्बो नहीं है।

`ygß`ê qÔbøU

कोशिश करो


Expanation

`...`            :Compressed string "roygbrow"
     ê           :Palindromise
       qÔ        :Split on "w"
         b       :Index of the first element
          ø      : That contains
           U     :  The input string

0

रूबी , 53 36 बाइट्स

->n{"\a\fDch+".index(""<<n%111)&./3}

इसे ऑनलाइन आज़माएं!

इनपुट: एक 3-अंकीय पूर्णांक, जहां अंक रंगों का प्रतिनिधित्व करते हैं:

  • 1 - लाल
  • 2 - नारंगी
  • 3 - पीला
  • 4 - हरा
  • 5 - नीला

आउटपुट: क्लॉकवाइज के लिए 0, वामावर्त के लिए 1, nilअन्यथा।


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