9-होल मिनी-गोल्फ: पाठ हेरफेर [बंद]


26

9-होल मिनी-गोल्फ: विवरण

  • 9 (ज्यादातर काफी आसान) कोड गोल्फिंग चुनौतियों की बदलती कठिनाई
  • एक से अधिक बार एक ही भाषा का उपयोग करने पर जुर्माना
  • किसी विशिष्ट विषय के बारे में सभी चुनौतियाँ (इस विषय: पाठ में हेरफेर)
  • इनपुट और आउटपुट कहीं भी वाजिब हो सकते हैं (यानी STDIN और STDOUT, पढ़ना / लिखना किसी फ़ाइल से, फ़ंक्शन तर्क और वापसी मान, आदि) लेकिन कार्यक्रम में हार्डकोड नहीं किया जाना चाहिए
  • 9 होल चैलेंज और टेक्स्ट मैकेनिक से प्रेरित हैवीली

छेद

  1. कोड-गोल्फ बैग

    इनपुट के रूप में दो तार लें।
    दूसरी स्ट्रिंग में किसी भी चरित्र की किसी भी घटना को अनदेखा करते हुए, पहले स्ट्रिंग के चरित्र की गणना करें।
    उदाहरण: f("foobarbaz", "ao")=>5
  2. गोल्फिंग के लिए एक पूर्व-पाठ

    इनपुट के रूप में दो तार लें।
    पहले स्ट्रिंग को आउटपुट करें, हर लाइन दूसरी के साथ उपसर्ग के साथ।
    उदाहरण: f("foo\nbar\nbaz", "a")=>"a foo\na bar\na baz"
  3. टैब बनाम रिक्त स्थान का युद्ध

    इनपुट के रूप में एक स्ट्रिंग s, एक संख्या nऔर एक बूलियन b(जो आप चाहते हैं) निर्दिष्ट करें।
    यदि bयह सही है, तो sहर टैब के साथ आउटपुट nस्पेस में परिवर्तित हो जाता है।
    एल्स, आउटपुट, sहर nस्पेस के साथ टैब में कनवर्ट किए गए।
    उदाहरण: f("if (x) {\n\tdoStuff();\n}", 4, true)=> "if (x) {\n[sp][sp][sp][sp]doStuff();\n}"( [sp]स्थान का अर्थ है)
  4. गोल्फ के खंभे

    इनपुट के रूप में एक स्ट्रिंग s, एक संख्या nऔर दूसरी संख्या लें m। प्रत्येक कॉलम की लाइनों और वर्णों के कॉलम में
    आउटपुट । स्तंभों के बीच एक स्थान की पैडिंग भी है। उदाहरण: =>snm

    f("this is some placeholder text, foo bar baz...", 3, 5)

    this  aceho  foo 
    is so lder  bar b
    me pl text, az...
    
  5. दोस्ताना पत्र

    इनपुट के रूप में एक स्ट्रिंग sऔर एक संख्या लें n
    में nअक्षरों का सबसे आम समूह आउटपुट s
    यदि कोई टाई है, तो आउटपुट या उनमें से सभी।
    उदाहरण: f("abcdeabcfghiabc", 3)=>"abc"
  6. नाश्ते के लिए तले हुए अंडे पत्र

    इनपुट के रूप में एक स्ट्रिंग लें।
    अपने पहले और अंतिम अक्षरों को छोड़कर, इसके सभी शब्दों के साथ स्ट्रिंग का उत्पादन (पत्र क्रम यादृच्छिक)।
    सादगी के लिए, मान लें कि इनपुट "शब्द" की एक सूची होगी, अंतरिक्ष अलग (यानी @$&_():;" foo bar, @$&_():;"एक "शब्द" माना जाता है)
    उदाहरण: f("this is a sentence that will be scrambled")=>।"tihs is a stcneene that wlil be sclamrbed"
  7. ASCIIfy

    इनपुट के रूप में एक स्ट्रिंग लें।
    यदि स्ट्रिंग में केवल संख्याएँ और स्थान हैं, तो संख्याओं को उनके संबंधित ASCII वर्णों (रिक्त स्थान को हटाते हुए) के साथ बदलें।
    एल्स, रिवर्स (संख्याओं के वर्ण) करें।
    उदाहरण: f("ASCIIfy challenge")=> "65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101"
    उदाहरण 2: f("65 83 67 73 73 102 121 32 99 104 97 108 108 101 110 103 101")=>"ASCIIfy challenge"
  8. मिनी-मिनी-मार्कडाउन परिवर्तन

    इनपुट के रूप में एक स्ट्रिंग लें।
    स्टैक एक्सचेंज पर टिप्पणियों में इस्तेमाल के रूप में, मिनी-मार्कडाउन के साथ परिवर्तित स्ट्रिंग को आउटपुट करें।
    यह एक और भी मिनी एर संस्करण है: यदि आप केवल संभालने की ज़रूरत है **bold**, *italics*और `code`
    आपको अवैध घोंसले के शिकार को संभालने की आवश्यकता नहीं है, जैसे **foo *bar** baz*। यह भी मान लें कि जब आप एक सीमांकक ( *या `) देखते हैं , तो इसका मतलब हमेशा प्रारूप (यानी te**st**ing=> te<b>st</b>ing, और foo* bar *baz=> foo<i> bar </i>baz) होगा।
    उदाहरण: f("**foo** *bar **baz*** `qux`")=>"<b>foo</b> <i>bar <b>baz</b></i> <code>qux</code>"
  9. केवल बेहतरीन किरदार

    इनपुट के रूप में एक स्ट्रिंग s, संख्या nऔर स्ट्रिंग लें r। प्रत्येक शब्द
    के nवें वर्ण को आउटपुट करें s। (0-अनुक्रमित, शब्द अंतरिक्ष-पृथक हैं)।
    यदि शब्द की लंबाई से कम है n, तो rइसके बजाय उस शब्द का उपयोग करें।
    उदाहरण: f("this is a test sentence foo bar baz", 2, "-")=>"i--snorz"

स्कोरिंग

आपका स्कोर आपके कार्यक्रमों के चरित्र मायने रखता है। प्रत्येक दोहराया भाषा के लिए, 110% से गुणा करें। उदाहरण के लिए, यदि आपके पास तीन रूबी समाधान हैं, और आपके सभी समाधानों की कुल वर्ण संख्या 1000 है, तो आपका स्कोर 1000 * 1.1 * 1.1 = 1210 है। यदि आपके पास एक पूर्णांक स्कोर नहीं है, तो नीचे जाएं।

सौभाग्य!


1
चुनौती 8 मार्कडाउन के कम से कम अच्छी तरह से निर्दिष्ट पहलुओं में से एक को छूती है, और जो वास्तव में अच्छी तरह से करने के लिए सबसे कठिन है। अस्पष्टता और एक अच्छे परीक्षण सूट को कैसे संभालना है, इसकी स्पष्ट व्याख्या की आवश्यकता है। Mdtest सुइट से Emphasis.text देखें ।
पीटर टेलर

@PeterTaylor खैर, _इससे कोई फर्क नहीं पड़ता कि मैंने इसे शामिल नहीं करने के लिए निर्दिष्ट किया है। मैंने कुछ अन्य लोगों को स्पष्ट करने के लिए संपादन किया है।
दरवाज़े

किस बारे में **foo***bar**baz*?
पीटर टेलर

1
चुनौती 6 के समान है इस एक
डानिएरो

4
मैं इस विषय को ऑफ-टॉपिक के रूप में बंद करने के लिए मतदान कर रहा हूं क्योंकि यह भागों के बीच अपर्याप्त बातचीत के साथ एक बहु-भाग चुनौती है
1

जवाबों:


12

स्कोर: 382 * 1.1 2 = 462

भाषाएं बदल जाती हैं।

1. एपीएल, 8 4

थैंक्स फॉर @ शेर्मिनस फॉर शेविंग 4 चर्स ऑफ।

f←⍴~

तार को बाएं और दाएं तर्कों के साथ कहा जाता है, जैसे।

      'foobarbaz' f 'ao'
5

2. रूबी, 35 31

धन्यवाद @DoorknobofSnow 4 चार्ट शेविंग के लिए।

f=->s,r{s.gsub(/(?<=^)/,r+' ')}

3. पायथन, 48

f=lambda s,n,b:s.replace(*['\t',' '*n][::2*b-1])

4. गोल्फस्क्रिप्ट, 20

{@//zip{' '*}%n*}:f;

मान लेता है कि तर्क ढेर पर हैं। ऑनलाइन टेस्ट करें

5. जे, 50

f=:({~[:(i.>./)+/"1@=@(}.~0-1{$))@|:@([$~],1+[:$[)

स्ट्रिंग को बाएं तर्क के रूप में और दाईं ओर संख्या के रूप में कहा जाता है, जैसे।

   'abcdeabcfghiabc' f 3
abc

6. रूबी, 61

f=->s{s.gsub(/(?<!^| )[^ ]+(?!$| )/){[*$&.chars].shuffle*''}}

7. गोल्फस्क्रिप्ट, 39 35 34

{[.10,' '*-{{}/]' '*}{~]''+}if}:f;

फिर, मानता है कि तर्क ढेर पर है। ऑनलाइन टेस्ट करें

8. पर्ल, 98

sub f{$_=@_[0];s!\*\*(.+?)\*\*!<b>$1</b>!g;s!\*(.+?)\*!<i>$1</i>!g;s!`(.+?)`!<code>$1</code>!g;$_}

9. हास्केल, 36

f s n r=[(x++cycle r)!!n|x<-words s]

महान! आप f=->s,r{...}एक फ़ंक्शन के बजाय एक खरीद ( ) का उपयोग करके रूबी पर कुछ चार्ट बचा सकते हैं । मैं यह पूरा हो गया है जब तक वोट दें करने के लिए मना कर दिया, हालांकि: पी
दरवाज़े

@DoorknobofSnow आह, धन्यवाद। रूबी के साथ वह कुशल नहीं :)
अस्थिरता

हुर्रे, आप पहले एक :-D +1 खत्म करने के लिए कर रहे हैं
दरवाज़े

मुझे यह आभास होता है कि सभी कार्य एक स्ट्रिंग को लौटाने वाले हैं, इसलिए नंबर 4 के लिए मुझे लगता है कि आपको एक वर्ण का अधिक उपयोग करना होगा।
पीटर टेलर

@PeterTaylor तय :)
अस्थिरता

4

अजगर - 697 × 1.1 9 on 1644

जी, मुझे यकीन है कि लवदास से प्यार है।

नोट : 3 और 5 को बेशर्मी से अस्थिरता के जवाब से कॉपी किया गया था , क्योंकि मुझे एक बेहतर विकल्प नहीं मिला। इसके अलावा, यह सिर्फ मनोरंजन के लिए किया गया था ।

f=lambda a,b:sum([x not in b for x in a])        # 1, 41 chars
f=lambda a,b:b+' '+a.replace('\n','\n'+b+' ')    # 2, 43 chars
f=lambda s,n,b:s.replace(*['\t',' '*n][::b*2-1]) # 3, 47 chars
f=lambda s,n,m:'\n'.join([' '.join([s[x:x+m]for x in range(y*m,len(s),m*n)])for y in range(n)])
                                                 # 4, 94 chars
f=lambda s,n:max([s[x:x+n]for x in range(len(s)+1-n)],key=s.count)
                                                 # 5, 66 chars
import random;f=lambda s:' '.join([''.join(sorted(y,key=lambda*x:random.random()))for y in s.split()])
                                                 # 6, 102 chars
f=lambda s:s.replace(' ','').isdigit()and ''.join(map(chr,map(int,s.split())))or ' '.join(map(str,map(ord,s)))
                                                 # 7, 110 chars
import re;f=lambda s:re.sub('`(.*?)`','<code>\\1</code>',re.sub(r'\*(.*?)\*','<i>\\1</i>',re.sub(r'\*\*(.*?)\*\*','<b>\\1</b>',s)))
                                                 # 8, 128 chars
f=lambda s,n,r:''.join([len(x)>n and x[n]or r for x in s.split()])
                                                 # 9, 66 chars

संपादित करें : सुझावों के लिए अस्थिरता के लिए धन्यवाद।


आप उनमें से अधिकांश के लिए जनरेटर के भावों का उपयोग कर सकते हैं, जो आपको पात्रों का एक गुच्छा बचाएगा। इसके अलावा, 1 के लिए उपयोग करने की कोई आवश्यकता नहीं है int, क्योंकि बूलियन उनमें से एक उपवर्ग हैं, और 7. के all([...])लिए छोटा किया जा सकता हैx.replace(' ','').isdigit()
अस्थिरता

दूसरा उत्तर पहली पंक्ति का उपसर्ग नहीं करेगा a
डानिएरो

1

स्कोर 513 * 1.1 5 = 826 

समान-भाषा दंड द्वारा काफी पिटाई हुई। रूबी में इनमें से अधिकांश को बस उतना ही तेजी से खत्म करने के लिए जितना मैं कर सकता था। बाद में कुछ भाषाओं को बदल सकते हैं। प्रत्येक उत्तर पर एक छोटा सा पुनर्कथन / स्पष्टीकरण जोड़ा।

1: पायथन (46)

f=lambda a,b:len([x for x in a if not x in b])

रूबी 2.0 (30) में पहला, छोटा जवाब जो अधिक जुर्माना और उच्च समग्र स्कोर देता है:

p (gets.chars-gets.chars).size

2: रूबी 1.9+ (37)

के sसाथ उपसर्ग की प्रत्येक पंक्ति लौटाता है t:

f=->s,t{s.split(?\n).map{|x|t+x}*?\n}

3: रूबी 1.9+ (48)

स्थान के आधार पर या इसके विपरीत sबदले गए टैब के साथ रिटर्न :nb

f=->s,n,b{r=[" "*n,?\t];b||r.reverse!;s.gsub *r}

4: रूबी 1.9+ (95)

कोई मुझे गोली मार दे।

f=->s,n,m{[*s.chars.each_slice(m).map{|w|w*''}.each_slice(s.size/m/n)].transpose.map{|w|w*' '}}

5: रूबी 1.9+ (58)

nवर्णों के सबसे आम रन लौटाता है s:

f=->s,n{(a=s.chars.each_slice(n)).max_by{|v|a.count v}*''}

6: जे (47)

किसी भी तरह से हाथापाई करना; बेशर्मी से मारिनस से चुराया गया :

''[1!:2&4('\w(\w+)\w';,1)({~?~@#)rxapply 1!:1[3

7: रूबी (57 + 1)

प्रिंट इनपुट ASCIIfied या de-ASCIIfied। -pस्विच के साथ चलाएँ ।

~/\d/?gsub(/\d+\s*/){$&.to_i.chr}:gsub(/./){"#{$&.ord} "}

8: सेड (87)

प्रिंट्स (मिनी) मार्कडाउन से HTML में परिवर्तित इनपुट:

s:\*\*([^*]+)\*\*:<b>\1</b>:g;
s:\*([^*]+)\*:<i>\1</i>:g;
s:`([^`]+)`:<code>\1</code>:g

9 रूबी 1.9+ (37)

nप्रत्येक पहले शब्द के वें वर्णों की एक स्ट्रिंग लौटाता है s, या r:

f=->s,n,r{s.split.map{|w|w[n]||r}*''}

के <b>test** **test2</b>लिए अपने 8 उत्पादन नहीं होगा **test** **test2**?
दरवाज़े

@DoorknobofSnow हाँ यह होगा;) फिक्स्ड (sed में गैर-लालची दोहराव नहीं है)।
डेनियरो

इसके लिए क्या देना होगा **foo *bar* baz**?
अस्थिरता

@Volatility उफ़। मैंने प्रश्न को ठीक से नहीं पढ़ा, सोचा कि कोई घोंसला नहीं होगा, लेकिन इसने कहा कि कोई अवैध घोंसला नहीं है। मुझे यकीन नहीं है कि मैं इसे अभी ठीक करने में परेशान करूँगा।
डानिएरो

1 रूबी कोड -ऑपरेटर एन्यूमरेटर के साथ काम करता है?
शिव

1

कार्य प्रगति पर है

1. जावा - 66

int f(String s,String b){for(char c:b)s=s.replace(b,"");return s;}

2. जावा - 64

String f(String i,String r){return i.replaceAll("(?m)^",r+" ");}

3. पायथन - 58

def f(s,n,b):t=" "*n;a=t,'\t';print s.replace(a[b],a[b^1])

4. पायथन - 84

def f(s,n,m):
 a=['']*n;c=0
 while s:a[c%n]+=s[:m]+" ";s=s[m:];c+=1
 for i in a:print i

5।

6।

7. बीफगंज 98 - 9

&,5j3.~@#

8।

9।


पहले होल पर यह होना चाहिए for(char c:b.toCharArray())और replace(c+"","");और return s.length();(या ऐसा ही कुछ) यह काम पाने के लिए।
बोबेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.