रॅपन्ज़ेल, रॅपन्ज़ेल, अपने बालों को नीचे छोड़ दो!


20

विवरण

मुझे लगता है कि हर कोई रॅपन्ज़ेल और राजकुमार की परी कथा जानता है। जो नहीं करते हैं उनके लिए: इसे यहां पढ़ें। हालाँकि, रॅपन्ज़ेल ने अभी-अभी अपने बाल कटवाए थे, इसलिए हो सकता है कि उसके राजकुमार को ऊपर चढ़ने में देर न लगे! वह बहुत दुखी हो सकती है ।।

चुनौती

आपका कार्य एक फ़ंक्शन लिखना है जो मूल्यांकन करता है कि रॅपन्ज़ेल क्या कह रहा होगा जब राजकुमार उसे अपने बालों को नीचे करने के लिए कहता है: जब उसके बाल टॉवर से अधिक या उसके बराबर लंबे होते हैं और एक अतिरिक्त मीटर (सुरक्षा दिशानिर्देश) होता है, तो वह बन जाती है veeeery खुश है और कहते हैं Aaaah!, की संख्या के साथ के aरूप में ही किया जा रहा है length of her hair - height of the tower। अन्यथा, उसके बालों की पर्याप्त लंबाई नहीं है, और वह रोना शुरू कर देती है: Booho!जहां बराबर दो तिहाई से oपहले एस , और एच बाकी होने के बाद एस। राउंड के बाद s की संख्या गोल होनी चाहिए, इसलिए यदि आप प्राप्त करते हैं , तो 3 s होंगे, और अन्य के बाद होना चाहिए ।hheight of the tower - length of her hairooB2.6oh

आई / ओ

आपको सकारात्मक पूर्णांक (शून्य सहित) एक तर्क के रूप में, एक सूची के रूप में या दो एकल संख्याओं के रूप में दिए गए हैं, इस क्रम में आप इसे सबसे सुविधाजनक पाते हैं, लेकिन आपको उन्हें किस क्रम में ले जाना चाहिए। आउटपुट के रूप में, प्रिंट करें जो रॅपन्ज़ेल कह रहा होगा।

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

परीक्षण मामलों में, पहली संख्या बालों की लंबाई होगी।

0, 0 -> 'Bh!' (probably a dry sob..)
2, 1 -> 'Aah!'
1, 2 -> 'Boh!'
1, 4 -> 'Booho!'
4, 1 -> 'Aaaah!'
2, 4 -> 'Boho!'

यह , इसलिए बाइट्स में सबसे कम जवाब जीतता है!


5
यदि टॉवर की ऊंचाई है तो वह नीचे नहीं जा सकता है 0? BTW, धनात्मक पूर्णांक (शून्य सहित) == _ ऋणात्मक पूर्णांक :)
Stewie Griffin

2
मैं यह आपके पहले पोस्ट पर करना चाहता था, लेकिन मैं आपको सैंडबॉक्स के बारे में बताना चाहूंगा , जहां आप मुख्य पोस्ट करने से पहले फीडबैक प्राप्त करने के लिए चुनौतियों का सामना कर सकते हैं। यह काफी रोचक चुनौती लगती है लेकिन लोग इसे दूर कर सकते हैं।
caird coinheringaahing

4
@StewieGriffin हां, यह मानते हुए कि उसके बालों की लंबाई 0बहुत है। फिर भी, उसे खिड़की से बाहर निकलना पड़ता है, और सुरक्षा के लिए प्रतिबंध यहां भी लागू होते हैं! कोई रास्ता नहीं है कि वह उससे शादी कर सकती है यदि वह खुद टूटी हुई गर्दन पाती है।
racer290

जवाबों:


5

जेली ,  43 41 40 38 34 33 32  31 बाइट्स

वहाँ शायद एक बहुत कुछ है, हालांकि एक छोटा रास्ता है ! ? ... यह काफी कुछ गोल्फ था!

‘:3;ạ¥⁸4ẋ+;€⁹¦7Ṛṭ;8ị“øŻPLC»
ạç>

एक पूर्ण कार्यक्रम परिणाम को प्रिंट करता है *।

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

कैसे?

‘:3;ạ¥⁸4ẋ+;€⁹¦7Ṛṭ;8ị“øŻPLC» - Link 1: number, abs(hair-tower); number, (hair > tower)?
‘                           - increment -> abs(hair-tower)+1
 :3                         - integer divide by 3 -> (abs(hair-tower)+1)//3
                            -   ...the remainder amount after removing 2/3 rounded
      ⁸                     - chain's left argument, abs(hair-tower)
     ¥                      - last two links as a dyad:
    _                       -   subtract (yields the 2/3 rounded amount)
   ;                        - concatenate
       4ẋ                   - repeat 4 (vectorises) (i.e. [[4,4,...],[4,...]])
         +                  - add (hair > tower)? (vectorises) (i.e. 4s->5s if so)
             ¦              - sparse application:
          ;€  7             - of:  concatenate €ach with a 7
            ⁹               - to indexes: chain's right argument, (hair-tower)?
               Ṛ            - reverse the list
                ṭ           - tack (hair-tower)?
                 ;8         - concatenate an 8
                    “øŻPLC» - compression of the word "Abroach" & the string "!B"
                   ị        - index into "Abroach!B" (1-indexed & modular, so 0->B)
                            - implicit (smashed) print

ạç> - Main link: number, hair; number, tower
ạ   - absolute difference -> abs(hair-tower)
  > - greater than? -> (hair > tower)? (1 if so, else 0)
 ç  - call the last link (1) as a dyad

* एक विवादास्पद लिंक के रूप में यह पात्रों की सूची और पात्रों की सूची देता है जैसे ['B', [['o', 'o', 'h'], ['o']], '!'], एक पूर्ण कार्यक्रम के रूप में निहित प्रिंट इस तरह नष्ट कर देता हैBooho!



हाँ, मैंने AL€œs3शून्य त्रुटियों द्वारा डिव का उपयोग करने और पाया जाने के विचार के साथ शुरुआत की और फिर मैंने यह पाया कि अधिक लंबे कोड के साथ मुझे अभी भी समान लंबाई के मामले में विशेष मामले की आवश्यकता थी। मैंने सोचा था कि मैं आज एक अलग तरीके से कोशिश करूंगा और लागू करूंगा, लेकिन लगता है कि आपने पहले ही ऐसा कर लिया था।
जोनाथन एलन

... माइंड यू मैं सोच रहा था 25-30 बाइट्स :)
जोनाथन एलन


4

05AB1E , 38 35 32 बाइट्स

इनपुट आदेश: length of hair,height of tower

‹i¹α'a×"Aÿh!"ë¹-x‚>3÷R'o×'hý…Bÿ!

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

व्याख्या

‹i                                  # if h < l
  ¹α                                # push absolute difference of h and l
    'a×                             # repeat "a" that many times
       "Aÿh!"                       # interpolate between "A" and "h!"
 ë                                  # else 
  ¹-                                # push h-l
    x‚                              # pair with its double
      >3÷                           # increment and integer divide by 3
         R                          # reverse the list
          'o×                       # for each, repeat "o" that many times
             'hý                    # merge the o's on "h"
                …Bÿ!                # interpolate between "B" and "!"

आपको लगता 3है कि TIO पर दिखाया गया है जिसे आप भूल गए हैं ।
एर्ग आउटफोलर

@EriktheOutgolfer: सूचित करने के लिए धन्यवाद। मैंने स्पष्टीकरण को कोड के अनुरूप करने के लिए तय किया है :)
एमिगा जूल

ओह, और आपके पास अपने स्पष्टीकरण के साथ समस्याएं हैं।
एरिक आउटगॉल्फ जूल

@EriktheOutgolfer: मैं इसे नहीं देखता। यदि आप इस तथ्य से मतलब रखते हैं कि वे 2 विकर्ण लाइनों में हैं, तो यह एक जानबूझकर जुदाई है जिसका उपयोग किए जाने वाले क्षैतिज स्थान को कम करने के लिए किया जाता है। अगर कुछ और है तो मुझे अंधा होना चाहिए।
एमिगा जूल


4

जावास्क्रिप्ट, 105 97 बाइट्स

7 बाइट बचाने में मदद करने के लिए ओकी का धन्यवाद!

p=(t,s)=>(s||"o").repeat(t)
l=>h=>(d=l-h,o=d/3-.5|0,l>h?`A${p(d,"a")}h`:`B${p(o-d)}h`+p(-o))+"!"

एक अनाम करी फ़ंक्शन को परिभाषित करता है। का उपयोग करेंf(length)(height)

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


के लिए काम करने लगता नहीं है f(1)(4)। के p(o+d)साथ प्रतिस्थापित p(-o-d)यह ठीक कर सकता है। इसके अलावा आप o=-d*2/3+.5|07 बाइट को बचाने के लिए उपयोग कर सकते हैं ।
ओकी

@ ओकी उस त्रुटि को इंगित करने के लिए धन्यवाद और मुझे छोटी गोलाई दिखा रहा है!
डैनमैन मैन

p=(t,s='o')=>s.repeat(t)
tsh


2

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

_‘”aẋŒt;⁾h!ɓ_÷1.,3+.”oẋ“Bh!”żð>?

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

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

केवल पूर्ण कार्यक्रम के रूप में काम करता है।

तर्क क्रम में हैं: बाल, टॉवर


की जगह एक बाइट सहेजें ær0के साथ+.
जोनाथन एलन

@JonathanAllan ऊह यह वास्तव में काम करता है। (लानत दो बाइट
बिलिन

0

जूलिया, 101 बाइट्स

g(h,t)=h>t?string("A","a"^(h-t),"h!"):string("B","o"^round(Int,(t-h)*2/3),"h","o"^round(Int,(t-h)/3))

कार्य करने के लिए तर्क क्रम में लिया जाता है length of Hair, height of Tower


टाइपो: हियर ऑफ़ हीर
रेसर 290

0

जैली , 84 76 बाइट्स

यह वास्तव में लंबा है, लेकिन मैंने इसे पोस्ट न करने के लिए बहुत समय बिताया है। दो पूर्णांक तर्क देता है:

  1. बालों की लंबाई
  2. टॉवर की लंबाई

गोल्फिंग के किसी भी सुझाव की सराहना की जाएगी।

³>⁴×111ð;ø³>⁴¬×97
97ðxø³ạ⁴
111ðxø¢L÷3×⁸ær0:1
2Çṭ2£“h”ṭµ1ÇṭµFḟ1£
>¬+65¥;¢;33Ọ

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


ठीक है, पहले से ही बहुत कम जेली का जवाब है
कूर 5

0

आर, 117 बाइट्स

x=diff(scan());cat(`if`(x>0,paste0("A",rep("a",x),"h!"),paste0("B",rep("o",F<-round(-2*x/3)),"h",rep("o",-x-F),"!")))

थोड़ा लंबा, बहुत यकीन है कि यह नीचे गोल्फ हो सकता है। क्रम में STDIN से इनपुट लेता है Tower, Hair


उह ओह; यह वास्तव में इनपुट के लिए काम नहीं करता है1 4
Giuseppe


0

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

lambda h,t:("BA"+(abs(h-t)*2+1)/3*"oa"+"h"+(abs(h-t)+1)/3*"ao"+"h!!")[h>t::2]

एक अनाम फ़ंक्शन बालों की लंबाई, hऔर टॉवर की ऊंचाई t, और एक स्ट्रिंग लौटाता है।

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

एक स्ट्रिंग के साथ शुरू होता है BA, जिसके बाद oaदोहराए गए स्ट्रिंग के अंतर के दो तिहाई हिस्से को दोहराया जाता है, उसके बाद एक एकल h, फिर शेष राशि को aoदोहराया जाता है, और अंत में h!!। वापसी का मूल्य तब Bया तो या Aस्लाइस अंकन के माध्यम से शुरू होने वाला हर दूसरा वर्ण होता है [h>t::2]


0

पर्ल, 107 बाइट्स

बालों की लंबाई पहले, टॉवर की लंबाई दूसरी।

sub b{(($c=$_[0]-$_[1])>0?'A'.'a'x--$c.'h':do{$o=int(2/3*($c*=-1)+.5);'B'.('o'x$o).'h'.('o'x($c-$o))}).'!'}

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