एडवाकाडो के बारे में चुनौती


16

से प्रेरित होकर इस । इस चुनौती को बनाने में किसी भी एवोकैडो को नुकसान नहीं पहुंचाया गया।

हैलो, मुझे चुनौती है कि मुझे जूस एवोकाडो की मदद चाहिए, इसलिए मुझे यह बताने के लिए कार्यक्रम की आवश्यकता है कि मुझे कितने समय तक जूस अवोकेड करना है

इस ASCII कला एवोकैडो का निरीक्षण करें:

    ###### 
   #      #
   # #### #
  #  # p# #
  ## #### #
   #      #
    ######

इस एवोकैडो में एस के एक बाहरी #(विशेष रूप से #प्रत्येक पंक्ति पर एस के पहले और अंतिम क्रम ) होते हैं और एक गड्ढे ( #एवोकाडो में एस का एक आकार जो एवोकैडो बाहरी को नहीं छूता है)।

इन ASCII कला avocados पर कठोर प्रयोगों के माध्यम से मैंने निम्नलिखित की खोज की है:

avocado juice in fluid ounces = number of spaces inside avocado but outside pit (the pit is marked with a p in the example) + 2 * number of spaces inside pit

time to juice avocado in minutes = 13 * number of spaces inside pit

उदाहरण के लिए, यह एवोकैडो 26 (रस के अंदर 2 रिक्त स्थान * 13) मिनटों में रस लेगा और 23 (19 स्थानों को एवोकैडो के अंदर देगा लेकिन गड्ढे के बाहर + 2 * 2 रिक्त स्थान गड्ढे के अंदर) रस का प्रवाह करेगा।

चुनौती

ठीक एक ASCII आर्ट एवोकैडो के इनपुट को देखते हुए, जैसे कि ऊपर जो केवल #और व्हॉट्सएप के होते हैं , मिनटों में समय की मात्रा का उत्पादन करते हैं इसे रस करने के लिए और रस की मात्रा इसे किसी भी क्रम में उत्पन्न करेगी।

आप मान सकते हैं कि इनपुट एवोकैडो में हमेशा एक ही गड्ढे होंगे और एवोकैडो और गड्ढे दोनों हमेशा बंद रहेंगे। गड्ढे और एवोकैडो हमेशा जुड़े रहेंगे, और गड्ढे के किसी सबसेट को भी जोड़ा जाएगा। एवोकैडो और गड्ढे हमेशा उत्तल होंगे। ध्यान दें कि एवोकैडो बाहरी मनमाने ढंग से मोटा हो सकता है।

नमूना इनपुट और आउटपुट

    ###### 
   #      #
   # #### #
  #  #  # # -> 26 23
  ## #### #
   #      #
    ######


   #######
  #       #
  #  ###   ##
  #  #  #   # -> 26 35
  #   ##   #
  #        #
  ##########

यह , इसलिए बाइट्स जीत में सबसे छोटा कोड है।



3
@ मेगो मैंने चैट में लोगों के साथ बात की और हमने तय किया कि एवोकाडो गड्ढे के कारण यह पर्याप्त रूप से अलग है।
एक स्पेगेटो

3
मुझे अभी भी लगता है कि यह एक धोखा है।
मेगो

1
@DigitalTrauma फिक्स्ड।
एक स्पेगेटो

1
अभी भी काफी अस्पष्ट लगता है कि वैध इनपुट का सेट क्या है।
feersum

जवाबों:


6

पायथ, 59 51 बाइट्स

*Ksm/.s.s.sd\ \#\ \ fq4l:T"#+"4.z13+-/s.sR\ .zdK*2K

यहाँ यह कोशिश करो!

एडवाकाडो (पूरी तरह से सही अंग्रेजी) को रस करने के लिए समय का उत्पादन करता है और अगली पंक्ति में रस की मात्रा।

व्याख्या

कोड - अवलोकन

* Ksm / .sssd \ \ # \ \ fq4l: T "# +" 4.z13 + - / s.sR \ .zdK * 2K # .z = सभी इनपुट लाइनों की सूची।

                    fq4l: T "# +" 4.z # गड्ढे-लाइनें प्राप्त करें
   m / .sssd \ \ # \ \ # व्हाट्सएप राशि के लिए गड्ढे लाइनों को मैप करें
 Ks # गड्ढे-स्थानों की राशि का योग करें और K को असाइन करें
* 13 # जूसी समय प्रिंट करें
                                     #s.sR \ .zd # advacado में सभी व्हाट्सएप को गिनें
                                    - K # इससे गड्ढे का आकार घटाएं
                                   + * 2K # बाकी राशि को कैलक्लाइज करें और प्रिंट करें


आकार गणना भागों की विस्तृत व्याख्या नीचे दी गई है।

एडवाकाडो का आकार प्राप्त करना

आइए इस पर नजर डालते हैं:

    ###### 
   # #
   # #### #
  # # # #
  ## #### #
   # #
    ######

पहले अग्रणी और पीछे वाले व्हाट्सएप को हटा दिया जाता है। उसके बाद हम सब कुछ एक पंक्ति में लपेटते हैं, जिसके परिणामस्वरूप यह स्ट्रिंग होती है:

#######      ## #### ##  #  # ### #### ##      #######

इसमें एडवाकाडो में सभी व्हाट्सएप शामिल हैं, इसलिए हमें बस उन्हें गिनना होगा (एडवाकाडो हमेशा उत्तल होगा, इसलिए यह सभी मान्य इनपुट के लिए काम करता है)। इस संख्या में अभी भी गड्ढे में रिक्त स्थान हैं, लेकिन रस राशि गणना के लिए हमें केवल गड्ढे वाले स्थानों के बिना फलों में रिक्त स्थान की आवश्यकता है। इसलिए हमें उनकी भी गणना करने की आवश्यकता है।

उस कोड के बारे में विस्तार से बताया गया है:

/s.sR \ .zd # .z = सभी इनपुट लाइनों की सूची

  .sR \ .z # हर इनपुट लाइन से स्ट्रिप स्पेस
 s # सभी रेखाओं को समेटना
/ d # सभी रिक्त स्थान की गणना करें

गड्ढे का आकार प्राप्त करना

यह थोड़ा पेचीदा मामला है। पहले हम उन लाइनों को हटाते हैं जो गड्ढे के आकार में योगदान नहीं करती हैं। यह उन सभी लाइनों को फ़िल्टर करके किया जाता है, जिनमें 4 से कम हैश के समूह होते हैं (रेगेक्स का उपयोग करते हुए #+और इसके मैचों की गिनती)। केवल एक पंक्ति के ऊपर के उदाहरण में यह प्रक्रिया बच जाएगी:

  #  #--# #

जिन रिक्त स्थानों को मैंने यहां चिह्नित किया -है, वे हैं जिन्हें हमें गिनने की आवश्यकता है। तो हम सिर्फ स्ट्रिप स्पेस, फिर हैश और फिर स्पेस फिर से छोड़ते हैं जो हमें इसके साथ छोड़ देता है:

#  #

वहां हमें केवल रिक्त स्थान गिनना है। हम उस हर लाइन के लिए करते हैं जो फ़िल्टरिंग प्रक्रिया से बची हुई है, सब कुछ और हम कर रहे हैं। बाकी तुच्छ गणित है।

उस कोड के बारे में विस्तार से बताया गया है:

sm / .sssd \ \ # \ \ fq4l: T "# +" 4.z # .z = सभी सहायक लाइनों की सूची

                  f .z # इनपुट को फ़िल्टर करें
                     l: रेगेक्स `# + 'के लिए मैचों की लंबाई" टी # # + "4 #
                   q4 # यदि हैश के 4 समूह इसकी पिट लाइन है
 मीटर # गड्ढे लाइनों का नक्शा ...
  / \ # रिक्त स्थान की घटनाएँ ।।
   .sssd \ \ # # # ... छीन गड्ढे लाइन (ऊपर स्पष्टीकरण देखें)
गड्ढों में सभी स्थानों की # राशि


5

रेटिना , 70

  • 25 बाइट्स ने @FryAmTheEggman और @randomra को धन्यवाद दिया
T `` i` (<! # = # + +) * (? = # + + #)
T `` f` # + #
मैं
$ 13 * iff
((I) | (च) | \ डब्ल्यू) +
$ # 2 $ # 3

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


1
डनो अगर यह मदद करेगा, लेकिन मैं 90 बाइट्स का उपयोग करके मिला $*... अभी भी वास्तव में गोल्फ का अनुभव करता है ...
FryAmTheEggman 14

2
@FryAmTheEggman ओह, आप के साथ शाब्दिक उपयोग कर सकते हैं $*_? यह अच्छा है। मैं 70 बाइट पाने में कामयाब रहा ।
15

1
@randomra हाँ, यह वास्तव में किसी भी "टोकन" का उपयोग करेगा, और बहुत अच्छा! मैंने इसी तरह की योजना के साथ आने की कोशिश की थी, लेकिन मैं अतिरिक्त पार्सिंग करने के साथ फंस गया, पुन: उपयोग fबहुत चालाक है! हालांकि यह बहुत बुरा है कि सही "तर्क" $*केवल एक चरित्र हो सकता है और टोकन नहीं हो सकता है ... शायद भविष्य के लिए एक और तरह का प्रतिस्थापन? : 0
FryAmTheEggman

@randomra बहुत अच्छा - धन्यवाद!
डिजिटल ट्रामा

3

अजगर, 141 119 बाइट्स

import sys
s=str.strip;l=len;o=i=0
for x in sys.stdin:x=s(s(x),'#');y=s(x);o+=l(x)-l(y);i+=l(s(y,'#'))
print o+2*i,13*i

1
प्रोग्रामिंग पहेलियाँ और कोड गोल्फ में आपका स्वागत है! यदि आप परिभाषित sकरते हैं s=str.strip, तो लूप बॉडी बन सकती है x=s(s(x),'#');y=s(x);o+=l(x)-l(y);i+=l(s(y,'#'))। इसके अलावा, अंतिम पंक्ति पर एक गैर-कार्यात्मक स्थान है।
डेनिस

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