कितने जिमी फिट हो सकते हैं?


29

में इस सरल लेकिन मज़ा चुनौती , आप यह निर्धारित करने के लिए करता है, तो जिमी उनके मंच के गिर जाएगा कहा गया था। जिमी तीन शरीर के अंगों है /, oऔर \इस तरह की व्यवस्था की

/o\

प्लेटफार्मों के साथ प्रतिनिधित्व कर रहे हैं -। जिमी उनके मंच से गिर जाएगा यदि उनके पास दो या अधिक शरीर के अंग हैं जो सीधे एक मंच से ऊपर नहीं हैं।

कुछ उदाहरण:

   /o\
- -------

जिमी अपने सभी शरीर के अंगों के ऊपर से संतुलन बनाएगा -

   /o\
    ------   ---

जिमी संतुलित होगा क्योंकि शरीर के दो हिस्से एस से ऊपर हैं -

 /o\
-- ----  --

भले ही वे दो प्लेटफार्मों के बीच विभाजित हैं, जिमी संतुलन बनाएंगे

  /o\
   -

जिमी संतुलित नहीं होगा क्योंकि शरीर के दो हिस्से एक मंच से ऊपर नहीं हैं।


आपका कार्य एक ऐसा प्रोग्राम लिखना है जो एक प्लेटेड कंटेनर के रूप में केवल -s और s (उदाहरण के लिए एक स्ट्रिंग) के रूप में लेता है और जिम्मीज़ की संख्या को आउटपुट करता है जिसे प्लेटफ़ॉर्म पर रखा जा सकता है जैसे कि उनमें से कोई भी गिर जाएगा और उनमें से कोई भी नहीं होगा ओवरलैप। एक जिमी में उनके शरीर के कुछ हिस्सों में स्ट्रिंग की शुरुआत के बाईं ओर या स्ट्रिंग के अंत के दाईं ओर हो सकता है।

यह इसलिए उत्तर बाइट्स में कम बाइट्स के साथ गोल किए जाते हैं।

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

इनपुट

-  -  -

- -
--
-- --
----
- -- --
------- -

प्रतिक्रियाशील आउटपुट

0
0
1
1
2
2
2
3

जवाबों:


15

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

@ बग्घी के लिए 4 बाइट्स को सहेजा गया

s=>(0+s+0).split(/.--|-.-|--./).length-1

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



7
@ शगुन थैंक्स! मुझे पता था कि वहां कुछ गलत था, लेकिन मुझे इस बीच मेरी पत्नी को कुछ सुपर मारियो गैलेक्सी स्तर पर मदद करनी थी ... और यह भी टूटे हुए प्लेटफार्मों के बारे में एक समस्या थी । : p
Arnauld

2
---मेरे साथ अच्छी तरह से बैठा नहीं किया गया था या तो, जब तक मैं अपने बंदरगाह पर काम कर रहा था और पता चला कि वे की जरूरत नहीं कर रहे थे। सोचें कि मैं इसे एक दिन यहां बुलाऊंगा, डिब्बे का एक बैग पकड़ूंगा और खुद एसएमजी पर फेंकूंगा - इसे एक उम्र में नहीं खेला है।
झबरा

और अब सभी अन्य उत्तर एक ही regex का उपयोग कर रहे हैं।
कूर

8

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

lambda s:len(re.findall('.--|-.-|--.',`s`))
import re

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

अर्नुल्ड के रेगेक्स पर आधारित । लालची दो या अधिक के साथ सभी गैर-अतिव्यापी लंबाई -3 सबस्ट्रिंग की खोज करता है -। एक तरकीब यह है कि `s`जिमी के कमरे छोड़ने के लिए पैडिंग के रूप में उद्धरण में इनपुट स्ट्रिंग को संलग्न करने के लिए या तो बंद करने के लिए ऐसा करना है जैसे

/o\/o\
'----'

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

f=lambda s:'--'in s[:3]*2and-~f(s[3:])or s>''and f(s[1:])

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

पहले से ही उद्धरणों में इनपुट के एक चीज़ I / O प्रारूप की आवश्यकता है। False0 के लिए आउटपुट ।

एक पुनरावर्ती कार्य जो प्रत्येक जिमी को बाईं ओर पहले स्थान पर रखता है, या तो जिमी को पहले तीन वर्णों पर रखकर यदि वे जिमी को पकड़ सकते हैं, या अन्यथा पहले वर्ण को हटा सकते हैं। एक प्यारा ट्रिक यह जाँचने के लिए है कि क्या s[:3]दो या अधिक -करने से है '--'in s[:3]*2, जो दो प्रतियों की दो प्रतियों s[:3]और समीपवर्ती की जाँच करता है -



3

जाप , 16 बाइट्स

अरनौलड के मूल जेएस समाधान पर आधारित है। मैंने इनपुट के दोनों ओर आवश्यक पैडिंग प्राप्त करने के लिए कुछ अलग तरीकों की कोशिश की, लेकिन सभी एक ही लंबाई में आए - अभी भी एक छोटे तरीके की खोज कर रहे हैं ...

ûUÊÄÄ è".--|-."ê

झसे आज़माओ

ûUÊÄÄ è".--|-."ê     :Implicit input of string U
û                    :Centre pad with spaces to length
 UÊ                  :  Length of U
   ÄÄ                :  Add 1, twice
      è              :Count the occurrences of
       ".--|-."ê     :  ".--|-." palindromised, resulting in the RegEx /.--|-.-|--./g

3

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

A1= मंच। सरणी सूत्र Ctrl+ Shift+ के रूप में दर्ज किया गयाEnter

=SUM(IF(LEN(TRIM(MID(IF(MOD(LEN(A1),3)=1," ","")&A1,3*ROW(INDIRECT("A1:A"&LEN(A1)))-2,3)))>1,1))

3

05AB1E , 16 बाइट्स

ðì‚ε3ôʒ'-¢2@}g}à

निश्चित रूप से गोल्फ हो सकता है .. कभी-कभी 05AB1E का उपयोग करते समय एक चुनौती में इन सभी regex उत्तरों को देखना कष्टप्रद होता है, जिसमें किसी भी प्रकार के regex की कमी होती है। ;)

इसे ऑनलाइन आज़माएं या सभी परीक्षण मामलों को सत्यापित करें

स्पष्टीकरण:

ðì            # Prepend a space before the (implicit) input
             # Pair it with the unmodified (implicit) input
   ε          # Map both to:
    3ô        #  Split them into parts of size 3
      ʒ       #  Filter these parts by:
       '-¢   '#   Where the amount of "-"
          2@  #   Is larger than or equal to 2
      }g      #  After the filter: take the length to get the amount of items left
            # After the map: get the maximum of the two
              # (which is output implicitly as result)



2

जावा 8, 41 बाइट्स

s->(0+s+10).split(".--|--.|-.-").length-1

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

पोर्ट ऑफ @Arnauld के जावास्क्रिप्ट जवाब , सिवाय इसके कि +0है +10की तरह ठीक परीक्षण मामलों के लिए ----। यह आवश्यक है क्योंकि String#splitजावा में बिलिन डिफ़ॉल्ट रूप से रिक्त स्ट्रिंग्स को पीछे हटा देगा। यह एक जोड़कर बदला जा सकता है के लिए अतिरिक्त पैरामीटर splitनिर्मित (जो 0में डिफ़ॉल्ट रूप से splitएक भी स्ट्रिंग तर्क के साथ -builtin)। डॉक्स से इस अतिरिक्त पैरामीटर के उपयोग को उद्धृत करने के लिए:


nn1n
n
nऔर खाली तारों को पीछे छोड़ दिया जाएगा

इस वजह से, आमतौर पर सभी अनुगामी खाली स्ट्रिंग्स .split("...",-1)को बनाए रखने के लिए उपयोग किया जाता है , और मैं इसे इस उत्तर के लिए भी इस्तेमाल कर सकता था ( ऑनलाइन इसे आज़माएं )। इस मामले में , हालांकि, दो बाइट्स को सहेजने के लिए बदल रहा है । :)+0+10,-1



0

चारकोल , 25 बाइट्स

Pθ↖Fθ¿›№KM-¹«⊞υωM³→»→⎚ILυ

इसे ऑनलाइन आज़माएं! लिंक कोड के वर्बोज़ संस्करण के लिए है। स्पष्टीकरण:

Pθ↖

कर्सर को स्थानांतरित किए बिना प्लेटफ़ॉर्म को प्रिंट करें, फिर कर्सर को ऊपर ले जाएं और छोड़ दें क्योंकि यह पहली संभावित जिमी स्थिति है।

Fθ

प्लेटफ़ॉर्म पोज़िशन में जितने भी जिमी हैं, उन्हें देखें।

¿›№KM-¹

यह देखने के लिए जांचें कि क्या इस स्थिति में प्लेटफ़ॉर्म का एक से अधिक टुकड़ा है या नहीं।

«⊞υω

यदि ऐसा है तो एक वैध जिमी स्थिति पर ध्यान दें ...

M³→»

... और तीन पात्रों को दाईं ओर ले जाएं ताकि जिमी ओवरलैप न करें।

अन्यथा अगली संभावित जिमी स्थिति दाईं ओर एक वर्ण है।

⎚ILυ

प्लेटफ़ॉर्म को साफ़ करें और खोजे गए पदों की संख्या को आउटपुट करें।



0

एल्म 0.19, 108 बाइट्स

import Regex as R
f p=List.length<|R.find(Maybe.withDefault R.never<|R.fromString".--|-.-|--.")(" "++p++" ")

Arnauld के जावास्क्रिप्ट जवाब में regex के आधार पर । सभी परीक्षण मामलों को यहां सत्यापित करें

रेगेक्स के बिना वैकल्पिक समाधान, 171 बाइट्स पर लंबे समय तक :

f p=(String.foldl(\z{x,y,s,c}->let(t,d)=if s<1&&List.length(List.filter((==)'-')[x,y,z])>1 then(2,c+1)else(max 0 s-1,c)in{x=y,y=z,s=t,c=d}){x=' ',y=' ',s=0,c=0}(p++" ")).c

सभी परीक्षण मामलों को यहां सत्यापित करें

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