* ভাষার নাম * দুর্দান্ত!


13

যে কোনও ভাষায় একটি প্রোগ্রাম লিখুন যা স্টিডিন থেকে ইনপুট পড়ে এবং স্টাডআউটে কিছুটা পরিবর্তিত আউটপুট আউটপুট করে। প্রোগ্রামটির *language-name* is awesome!একটি নতুন লাইনের পরে ইনপুট এবং আউটপুট থেকে যতটা সম্ভব একটি পূর্বরূপের বড় হিসাবে আউটপুট থেকে কিছু অক্ষর ধার করা উচিত এবং তারপরে ইনপুটটি কী বাকী থাকে।

  • ইনপুটটিতে কোনও বড় অক্ষর নেই।
  • ভাষার নামের প্রথম অক্ষরটি যদি স্ট্রিংয়ে উপস্থিত না থাকে তবে কেবলমাত্র নতুন লাইন চরিত্র ধার করা উচিত।
  • যদি ইনপুটটিতে কোনও নিউলাইন চরিত্র না থাকে তবে ইনপুটটি মোডবিহীন আউটপুট করুন।
  • আপনি যে কোনও উপলভ্য অক্ষর ধার নিয়েছেন তা বিবেচ্য নয়।

লেখার সময় স্থান বাঁচাতে আমি \nনিউলাইন চরিত্র ( 0x0a) হিসাবে ব্যবহার করছি । আসল প্রোগ্রামটি কেবল \nস্ট্রিং নয়, আসল নিউলাইন চরিত্র সম্পর্কে চিন্তা করা উচিত ।

উদাহরণ: অজগর।
ইনপুট: abcdefghijklmnopqrstuvwxyz\n0123456789
আউটপুট: python\nabcdefgijklmqrsuvwxz0123456789
যেহেতু ইনপুট কোনো শূণ্যস্থান নেই, আমরা চলতে পারে যদিও আমরা পরবর্তী শব্দের জন্য যথেষ্ট টি অক্ষর আছে: is

উদাহরণ: সি
ইনপুট: i don't see anything!
আউটপুট: i don't see anything!
সি স্ট্রিংটিতে পাওয়া যায় নি, সুতরাং কোনও পরিবর্তন সম্ভব হয়নি। এছাড়াও, কোনও নিউলাইন চরিত্র উপস্থিত নেই।

উদাহরণ: সি ++।
ইনপুট: 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!একটি পরীক্ষার কেস হিসাবে অন্তর্ভুক্ত করতে পারেন ?
ডেনিস

ভাল পরীক্ষার কেস! যোগ করা হয়েছে।
ফিলিপ হাগলুন্ড

পুনরাবৃত্ত অক্ষরগুলির সাথে কেসগুলি (নাম বা ইনপুটতে হয়) কীভাবে পরিচালনা করা উচিত? বাম-ওভারের অক্ষরের ক্রমটি কি আউটপুট বিষয়ে ব্যাপার?
পিটার টেলর

Woops! ঠিক কর. এছাড়াও স্পষ্ট করে দিয়েছিলেন যে কোনও চরিত্র ধার করা হতে পারে, কেবল প্রথম নয়।
ফিলিপ হাগলুন্ড

উত্তর:


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)

@ ডেনিস এটি ঠিক করেছেন -_-
থিওডাক্টর

ইনপুটটিতে নিউলাইনগুলি না থাকলে এখনও একটি নতুন লাইন খুব বেশি (দ্বিতীয় উদাহরণ)।
ডেনিস

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)

অনুরোধ করা আউটপুট ফিরিয়ে ফাংশন হিসাবে। 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))

নীচের স্নিপেটটি একটি ইকামাস্ক্রিপ্ট comp অনুবর্তী ব্রাউজারে চালনা পরীক্ষা করুন (স্প্রেড অপারেটর এবং তীর ফাংশন প্রয়োগ করে - আমি ফায়ারফক্স ব্যবহার করি)

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

জাভাস্ক্রিপ্ট (ES7), 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

@ এডসি 65 হ্যাঁ, পরীক্ষার কেসগুলি কেবলমাত্র প্রান্তের 75% কেস কভার করে। আমি এমনকি অপসারণ করতে পারি is awesomeএবং এটি এখনও তাদের চারটিটিরই সঠিকভাবে কাজ করবে। আমি এই ASAP ঠিক করব।
ইটিএইচ প্রডাকশনগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.