* भाषा का नाम * कमाल है!


13

किसी भी भाषा में एक प्रोग्राम लिखें जो स्टड से इनपुट को पढ़ता है और स्टैडआउट को थोड़ा संशोधित आउटपुट देता है। कार्यक्रम को इनपुट और आउटपुट से कुछ वर्णों को उधार लेना चाहिए जितना कि एक उपसर्ग के रूप में बड़ा हो सकता है, *language-name* is awesome!उसके बाद एक नई पंक्ति और उसके बाद इनपुट से क्या बचा है।

  • इनपुट में कोई बड़ा अक्षर नहीं है।
  • यदि भाषा नाम का पहला वर्ण स्ट्रिंग में मौजूद नहीं है, तो केवल नई पंक्ति वर्ण उधार लिया जाना चाहिए।
  • यदि इनपुट में कोई नई लाइन वर्ण नहीं है, तो इनपुट को अनमॉडिफ़ाइड आउटपुट करें।
  • इससे कोई फर्क नहीं पड़ता कि आप कौन से उपलब्ध पात्रों को उधार लेते हैं।

लिखते समय अंतरिक्ष को बचाने के लिए मैं \nnewline वर्ण ( 0x0a) के रूप में उपयोग कर रहा हूं । वास्तविक कार्यक्रम को केवल वास्तविक न्यूलाइन वर्ण की परवाह करनी चाहिए, न कि \nस्ट्रिंग की।

उदाहरण: अजगर
इनपुट: abcdefghijklmnopqrstuvwxyz\n0123456789
आउटपुट: python\nabcdefgijklmqrsuvwxz0123456789
चूंकि इनपुट में कोई स्थान नहीं है, इसलिए हम तब भी जारी नहीं रख सकते हैं जब हमारे पास अगले शब्द के लिए पर्याप्त वर्ण हों is:।

उदाहरण: C.
इनपुट: i don't see anything!
आउटपुट: i don't see anything!
C स्ट्रिंग में नहीं मिला था, इसलिए कोई संशोधन संभव नहीं था। साथ ही, कोई भी नया चरित्र मौजूद नहीं है।

उदाहरण: C ++।
इनपुट: i don't\nsee anything!
आउटपुट: \ni don'tsee anything!
सी स्ट्रिंग में नहीं मिला था, इसलिए कोई संशोधन संभव नहीं था।

उदाहरण: ओब्ज-सी।
इनपुट: objectively, clojure is amazing.\nq.e.d.
आउटपुट: obj\nectively, clojure is amazing.q.e.d.
इनपुट में लिखने के लिए पर्याप्त वर्ण हैं, objलेकिन -गायब है।

आपके स्रोत कोड की बाइट गिनती, आपकी भाषाओं के नाम की बाइट गिनती, utf-8 एन्कोडेड (यदि संभव हो), आपका स्कोर है; सबसे कम जीत!


3
चलिए उम्मीद करते हैं कि किसी को नकारात्मक स्कोर के लिए नाम में बहुत अधिक दोहराव वाली भाषा मिल जाए :)
फिलीप हगलुंड

क्या आप i don't\nsee anything!एक परीक्षण मामले के रूप में शामिल कर सकते हैं ?
डेनिस

अच्छा टेस्ट केस! जोड़ा गया।
फिलिप हगलुंड

दोहराए जाने वाले वर्णों (या तो नाम या इनपुट में) के साथ मामलों को कैसे संभाला जाना चाहिए? क्या आउटपुट मामले में बाएं अक्षरों के क्रम का आदेश है?
पीटर टेलर

ओह! ठीक कर दिया। यह भी स्पष्ट किया कि किसी भी चरित्र को उधार लिया जा सकता है, न कि केवल पहले।
फिलीप हगलुंड

जवाबों:


4

पायथ, 37 बाइट्स

.-Jjb.zpef!.-TJ+,kb+Rb._"pyth is awesome!

स्रोत कोड 41 बाइट्स लंबा है। इसे ऑनलाइन आज़माएं।

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

  Jjb.z                                      Save all user input in J.
                      ._"pyth is awesome!    Compute all prefixes that string:
                                               ["p", "py", ... ]
                   +Rb                       Append a linefeed to each prefix.
               +,kb                          Concatenate ["", "\n"] with the result.
         f                                   Filter the resulting array; for each T:
           .-TJ                                Perform bagwise difference between T
                                               and J (respects multiplicities).
         !                                     Take the logical NOT.
                                             Keep T if ! returned True, i.e., if J
                                             contains all of T's characters.
        e                                    Retrieve the last, longest match.
       p                                     Print it.
.-J                                          Remove its characters from J.
                                             (implicit) Print the result.

2

पायथन, 186 - 6 = 180

import sys
a=sys.stdin.read()
s="python is awesome!"
r=''
if'\n'not in a:print a;exit()
a=a.replace('\n','',1)
for c in s:
 if c in a:a,r=a.replace(c,'',1),r+c
 else:break
print r+'\n'+a

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


यह केवल पात्रों को उधार लेना चाहिए, इसलिए यदि इनपुट में कई नए समाचार मौजूद हैं, तो आप उनमें से केवल एक को उधार लेते हैं। सभी वर्ण अभी भी आउटपुट में होने चाहिए, लेकिन जरूरी नहीं कि उसी क्रम में हों।
फिलिप हगलुंड

1

पायथन, 146 बाइट्स

import sys
r=sys.stdin.read();y='\npython is awesome!';a=''
for i in y:
    if i in r:a+=i
    else:break
print a[1:]+'\n'+''.join(b for b in r if not b in a)

@Dennis यह -_- तय
TheDoctor

यदि इनपुट में नईलाइन (दूसरा उदाहरण) नहीं है, तो भी एक नई पंक्ति।
डेनिस

1

सीलोन, 235 - 6 = 229

void a(){variable value i="";variable value r="\nceylon is awesome!";while(exists l=process.readLine()){i=i+"\n"+l;}i=i.rest;for(j->c in r.indexed){if(c in i){i=i.replaceLast(c.string,"");}else{r=r[0:j];break;}}print(r.rest+r[0:1]+i);}

यहाँ एक स्वरूपित और टिप्पणी संस्करण है:

void a() {
    // our target string, with the \n shuffled to the start.
    variable value r = "\nceylon is awesome!";

    // read the whole input line by line
    // (there doesn't seem a way to do this shorter :-/)
    variable value i = "";
    while (exists l = process.readLine()) {
        i = i + "\n" + l;
    }
    // remove first \n:
    i = i.rest;
    for (j->c in r.indexed) {
        if (c in i) {
            // remove some occurence of c
            i = i.replaceLast(c.string, "");
        } else {
            // stop the loop, and take the part of `r` processed so far.
            r = r[0:j];
            break;
        }
    }
    // reshuffle first \n in r to its end.
    // This will result in the empty string if r is empty, i.e. no \n was found.
    print(r.rest + r[0:1] + i);
}

यह कम होने के replaceLastबजाय उपयोग करता replaceFirstहै।

कुछ उदाहरण इनपुट और आउटपुट प्रश्न में उसी प्रारूप में हैं:

  • abcdefghijklmnopqrstuvwxyz\n0123456789ceylon\nabdfghijkmpqrstuvwxz0123456789
  • i don't see anything!i don't see anything!
  • i don't\nsee anything!\ni don't see anything!
  • objectively, closure is amazing.\nq.e.d.ceylon is a\nobjectivel, sureiamzng.\q..d.

0

जावास्क्रिप्ट (ES6) 90 (100-10)

अनुरोधित ouput को लौटाने वाले एक समारोह के रूप में। I / O के साथ लागू करना मुश्किल है, क्योंकि STDIN के लिए सामान्य विकल्प है prompt(), कि इनपुट स्ट्रिंग के अंदर एक नई लाइन स्वीकार नहीं करता है।

वास्तविक आउटपुट के साथ एक फ़ंक्शन के रूप alertमें बाइट की संख्या 107 है

f=s=>alert(([...`
javascript is awesome`].every(c=>(z=s.replace(c,''))!=s&&(s=z,q?o+=c:q=c),q=o=''),o+q+z))

EcmaScript 6 अनुरूप ब्राउज़र (स्प्रेड ऑपरेटर और एरो फंक्शन को लागू करते हुए - मैं फ़ायरफ़ॉक्स का उपयोग करता हूं) में नीचे दिए गए स्निपेट का परीक्षण करें

f=s=>([...`
javascript is awesome`].every(c=>(z=s.replace(c,''))!=s&&(s=z,q?o+=c:q=c),q=o=''),o+q+z)

function test()
{
  O.innerHTML=f(I.value)
}

test()
#I {width: 80%}
<textarea id=I>
objectively, clojure is amazing.
q.e.d.</textarea><button onclick="test()">-></button>
<pre id=O></pre>


0

पर्ल, 72 - 4 = 68 बाइट्स

2 स्विच शामिल हैं।

perl -0pe 'for$c("\nperl is awesome!"=~/./gs){s/$c//?$p.=$c:last}s/^/$p\n/;s/\n//'

स्पष्टीकरण : स्ट्रिंग में प्रत्येक वर्ण के लिए "\nperl is awesome", इनपुट स्ट्रिंग ( $_) से संबंधित वर्ण को तब तक हटा दें, जब तक कि हम एक ऐसा पात्र न खोज लें जिसमें मौजूद नहीं है $_। मिलान वाले पात्र संग्रहीत होते हैं, $pजिनमें पहले से उपसर्ग $_होता है, फिर मुद्रित किया जाता है।

-0स्विच पंक्ति-दर-पंक्ति के बजाय पूरा इनपुट में पढ़ता है और -pस्विच पढ़ने इनपुट बनाता है और उत्पादन निहित मुद्रित करें।


0

जावास्क्रिप्ट (ईएस 7), 101 107 - 10 = 97

यह पहले छोटा था, और यहां तक ​​कि सभी चार परीक्षण मामलों पर भी काम किया था, लेकिन जाहिर है मैं एक नियम से चूक गया था, इसलिए ...।

x=>(i=r=q='',[for(c of`
javascript is awesome`)(y=x.replace(c,''),i||y==x?i=1:(c<' '?q=c:r+=c,x=y))],r+q+x)

फ़ायरफ़ॉक्स 42 में ठीक से काम करता है। यह मूल रूप से 119 बाइट्स पर शुरू हुआ था, लेकिन @ edc65 के जवाब से एक चाल ने इसे एक महान सौदा बनाने में मदद की। मुझे लगता है कि अभी भी कुछ सुधार की गुंजाइश है। हमेशा की तरह, सुझावों का स्वागत है!


इनपुट में न्यूलाइन गायब होने पर विफल रहता है। टेस्ट obj-> job, संशोधित नहीं किया जाना चाहिए (नियम 3)
edc65

@ edc65 आह, हाँ, परीक्षण मामले केवल किनारे के मामलों का 75% कवर करते हैं। मैं भी निकाल सकता था is awesomeऔर यह अभी भी उन चारों पर ठीक से काम करेगा। मैं इस ASAP को ठीक करूंगा।
ETHproductions
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.