ইংরেজি বিরাম বিধান প্রয়োগ করুন


11

ডিকশন-টেকিং অ্যাপ্লিকেশানের জন্য আপনাকে কিছু কোড লেখার জন্য নিয়োগ দেওয়া হয়েছে, যা কোনও কথ্য উত্স থেকে ভয়েস ইনপুট নেয়, শব্দ হিসাবে পার্স করে এবং একটি স্ক্রিনে লিখে রাখে।

প্রকল্পটি এতটা পাওয়ারিনে আসলেই আপনাকে বিশ্বাস করে না - দুর্ভাগ্যক্রমে - আপনি আপনার কাজটি না করে সারাদিন বসে এবং গল্ফ কোডের জন্য পরিচিত, তাই তারা আপনাকে সম্পাদন করার জন্য সত্যিই একটি সহজ টাস্ক দেয়: একটি ঘুরুন ছেদযুক্ত বিরামচিহ্নের সাথে বাক্যগুলি একটি যথাযথ বিন্যাসযুক্ত বাক্যে পরিণত হয়েছে, যেখানে 'সঠিকভাবে বিন্যাসিত' নীচে সংজ্ঞায়িত হয়েছে।

  1. বাক্যটি ইনপুটটির স্ট্রিং। একটি শব্দ সংক্রামক অ-স্থানের অক্ষরের একটি গ্রুপ। একটি বিরামচিহ্ন এমন একটি শব্দ যার প্রথম চরিত্রটি ^

  2. শব্দের প্রথম অক্ষর যদি ছোট হাতের অক্ষর না হয় তবে একটি শব্দকে মূলধন করা হয় (মূল বর্ণিত শব্দগুলি রেজেক্সের সাথে মেলে /[^a-z].*/)।

  3. বাক্যটির প্রথম শব্দটি অবশ্যই মূলধন হবে।

  4. ^COMMAকমা চরিত্র ,এবং এর একটি স্থান অনুসরণ করে তবে পূর্ববর্তী নয়। aaa ^COMMA bbbহয়ে aaa, bbb

  5. ^COLONহ'ল একটি কমা যা দেখতে ভাল লাগে :

  6. ^SEMICOLONহ'ল একটি কমা যা দেখতে ভাল লাগে ;

  7. ^PERIODহ'ল একটি কমা যা দেখতে ভাল লাগে .। নিম্নলিখিত একটি শব্দ ^PERIODঅবশ্যই মূলধন করা উচিত।

  8. ^BANGএমন একটি পিরিয়ড যা দেখে মনে হয় !

  9. ^DASHহ'ল ড্যাশ অক্ষর -এবং এর পূর্ববর্তী এবং অনুসরণ উভয় স্থান রয়েছে।

  10. ^HYPHENহ'ল ড্যাশ চরিত্র -তবে এর অনুসরণ বা পূর্ববর্তী কোনও স্থান নেই।

  11. একটি ^EMDASHএকটি হাইফেন (একটি ড্যাশ!) যে বানান হয় --

  12. একটি ^OPENQUOTEএমন একটি উদ্ধৃতি চরিত্র "যা এর আগে একটি স্থান রয়েছে তবে অনুসরণ করছে না। নিম্নলিখিত একটি শব্দ ^OPENQUOTEঅবশ্যই মূলধন করা উচিত। যদি এর ^OPENQUOTEআগে কোনও শব্দের দ্বারা বিরামচিহ্ন নয়, তবে ^COMMAশব্দ এবং শব্দটির মধ্যে একটি যোগ করুন ^OPENQUOTE। যদি একটি ^OPENQUOTEবিরামচিহ্নের আগে থাকে যা পরবর্তী শব্দটিকে মূলধন করে তোলে, এটি পরবর্তী শব্দটির উপরে চলে যায় ^OPENQUOTE

  13. ^CLOSEQUOTEহ'ল ডিগ্রাফ ,"যা একটি স্থান অনুসরণ করে তবে পূর্ববর্তী নয়। যদি একটি ^CLOSEQUOTEএকটি পূর্বে হয় ^COMMA, ^PERIODঅথবা ^BANG, যে বিরাম চিহ্ন disappears এবং ^CLOSEQUOTEবানান করা হয় ,", ."অথবা !"যথাক্রমে। অদৃশ্য হয়ে যাওয়া বিরামচিহ্নগুলি যদি একটি মূলধন নির্দিষ্ট করে, তবে সেই মূলধনটি অবশ্যই পরবর্তী উপলভ্য শব্দের উপরে ঘটতে হবে।

  14. সম্পূর্ণ চূড়ান্ত ফলাফলের প্রাথমিক বা পিছনের স্থানগুলি অবশ্যই সরিয়ে ফেলতে হবে এবং একটি সারিতে দুটি বা ততোধিক স্পেসের যে কোনও স্ট্রিং সমস্ত একটি একক স্থানের অক্ষরে ভেঙে ফেলতে হবে।

  15. যে কোন ক্ষেত্রে উপরে আবৃত নয় (যেমন ^COMMA ^COMMAঅথবা ^SEMICOLON ^CLOSEQUOTEবা ^UNDEFINEDPUNCTUATION) সুগঠিত ইনপুটে সৃষ্টি হবে না এবং এইভাবে অনির্ধারিত আচরণ।

উন্নয়ন দল আপনাকে নিম্নলিখিত সম্পর্কে অবহিত করে:

  • প্রকল্পটি [আপনার ভাষা এখানে] ভাষায় লেখা হচ্ছে , এবং যতটা সম্ভব সংক্ষিপ্ত হওয়া উচিত যাতে এটি অ্যান্ড্রয়েড / আইফোনের অ্যাপ্লিকেশন হওয়ার সময় যতটা সম্ভব কম জায়গা নেয়। আপনি ব্যাখ্যা করার চেষ্টা করেছেন যে অ্যাপ্লিকেশন বিকাশ কীভাবে তা করে না, তবে তারা কান দেয় না। তবে ওহে কাকতালীয় ঘটনা! আপনি [এখানে আপনার ভাষা] একটি আশ্চর্যজনক গল্ফার !

  • অ্যাপ্লিকেশনটির কোনও ওয়েব অ্যাক্সেস অনুমতি থাকবে না এবং এমন কোনও লাইব্রেরি ইনস্টল হবে না যা আপনার জন্য এই ফর্ম্যাটিং করে। আপনার ভাষার জন্য যদি কোনও উপস্থিত থাকে তবে আপনি সম্ভবত দলকে নেতৃত্ব দেওয়ার জন্য আপনাকে একটি রেইজেক্স লাইব্রেরির অনুমতি দিতে পারেন, যদিও আপনি যদি মনে করেন যে আপনার কোনও প্রয়োজন আছে।

  • নেস্টেড কোটেশনগুলির জন্য সমর্থন যা ডাবল / সিঙ্গল কোটগুলি সঠিকভাবে ব্যবহার করে অ্যাপ্লিকেশনটির পরবর্তী সংস্করণের জন্য পরিকল্পনা করা হয়েছে তবে আপনি যে সংস্করণে এখন কাজ করছেন তা নয়, তাই এটি নিয়ে চিন্তা করবেন না।

  • পরিচালনাটি পরীক্ষা-চালিত বিকাশের একটি বিশাল অনুরাগী, এবং তাই ডেভ টিম ইতিমধ্যে কিছু অনর্থক কীবোর্ড বানর প্রোগ্রামটির অংশের জন্য কিছু পরীক্ষা লিখেছিল: (পঠনযোগ্যতার জন্য নতুন লাইনে যুক্ত হয়েছে, এগুলি স্থান হিসাবে বিবেচনা করবে)

    ইনপুট:

    hello ^COMMA   world ^BANG
    

    আউটপুট:

    Hello, world!
    

    ইনপুট:

    once upon a time ^COMMA there was a horse ^PERIOD that horse cost me $50
    ^PERIOD ^OPENQUOTE eat your stupid oats ^COMMA already ^BANG ^CLOSEQUOTE
    I told the horse ^PERIOD the horse neighed back ^OPENQUOTE no ^CLOSEQUOTE
    and died ^PERIOD THE END
    

    আউটপুট:

    Once upon a time, there was a horse. That horse cost me $50. "Eat your
    stupid oats, already!" I told the horse. The horse neighed back, "No,"
    and died. THE END
    

    ইনপুট:

    begin a ^PERIOD b ^COMMA c ^COLON d ^SEMICOLON e ^BANG f ^HYPHEN g ^DASH h
    ^EMDASH i ^OPENQUOTE j ^PERIOD ^OPENQUOTE k ^SEMICOLON ^OPENQUOTE l
    ^CLOSEQUOTE m ^BANG ^CLOSEQUOTE n ^PERIOD 0x6C6F6C end
    

    আউটপুট:

    Begin a. B, c: d; e! F-g - h--i, "j. "K; "l," m!" N. 0x6C6F6C end
    

এটি একটি কোড গল্ফ: সর্বনিম্ন স্কোর জয়। আপনি একটি স্ট্রিং আর্গুমেন্টের একটি ফাংশন, বা একটি প্রোগ্রাম STDIN থেকে পড়া এবং STDOUT এ লিখতে পারেন।


আমি যদি জাভাস্ক্রিপ্ট ব্যবহার করতে চাই? এটিতে কোনও স্ট্যান্ডার্ড ইনপুট নেই। আমি কি ব্যবহার করতে পারি prompt()?
নিকেল

@ নিকেল ওপিতে একটি স্ট্রিং আর্গুমেন্ট ব্যবহার করে উল্লেখ করা হয়েছে, সুতরাং আমার জেএস উদাহরণের জন্য আমি কেবল একটি ফাংশন তৈরি করেছি যা একটি যুক্তি নিয়েছে এবং ধরে নিয়েছে যে যুক্তিটি STDIN- এর মতো শব্দগুলির স্ট্রিং ছিল
এরিক লেগারগ্রেন

1
আমি ভাবছি যদি "[এখানে আপনার ভাষা]" এর নামকরণ করা হয়
আকাংকা

উত্তর:


4

জাভাস্ক্রিপ্ট: 653 611 547 514 487 বাইট

ওহ আমার গোশ ব্রেন্ডন আইচ আমি এর জন্য খুব দুঃখিত।

পিএস: আমি পঠনযোগ্যতার জন্য সাদা স্থান যুক্ত করেছি, তবে বাইট গণনা তালিকাভুক্ত সমস্ত অনুমতিযোগ্য সাদা স্থানের ফলাফলকে সরিয়ে রেখেছি।

তাত্ত্বিকভাবে আমি কিছু অংশের মতো বা -e-কিছুতে ছোট করে দিতে পারি , তবে এটি পূর্ববর্তী শব্দটির সাথে শেষ হয়ে গেলে বা নিম্নলিখিত শব্দটি 'ই' অক্ষর দিয়ে শুরু হয় (বা আমি যে কোনও শব্দটি ব্যবহার করার সিদ্ধান্ত নিই) দিয়ে শুরু করতে পারে। আমি মনে করি আমি একটি ASCII অক্ষর ব্যবহার করতে পারি। আমি এটি খতিয়ে দেখব।-e-e

487 FF22 + কেবল

R = "replace", C = "charAt", U = "toUpperCase";
alert(a[R](/\^((COMMA)|(SEMICOLON)|(COLON)|(PERIOD)|(BANG)|(DASH)|(HYPHEN)|(EMDASH)|(OPENQUOTE)|(CLOSEQUOTE))/g, ((m, _, a, b, c, d, e, f, g, h, i, j) => a ? "," : b ? ";" : c ? ":" : d ? "." : e ? "!" : f ? "-" : g ? "-h-" : h ? "-e-" : i ? ' "' : '" '))[R](/\s((\.)|(\!)|(\,)|(\;)|(\:)|(\-\h\-\s)|(\-\e\-\s))/g, ((k, l, v, n, o, p, q, r, s) => v ? "." : n ? "!" : o ? "," : p ? ";" : q ? ":" : r ? "-" : "--"))[R](/[^!,"'.]\"\s/g, '"')[R](/.+?[\.\?\!](\s|$)/g, (t => t[C](0)[U]() + t.substr(1)))[R](/\"[a-z]/g, (u => u[C](0) + u[C](1)[U]())))

514 FF22 + কেবল

alert(function(z) {
    R = "replace", C = "charAt", U = "toUpperCase";
    return z[R](/\^((COMMA)|(SEMICOLON)|(COLON)|(PERIOD)|(BANG)|(DASH)|(HYPHEN)|(EMDASH)|(OPENQUOTE)|(CLOSEQUOTE))/g, ((m, _, a, b, c, d, e, f, g, h, i, j) => a ? "," : b ? ";" : c ? ":" : d ? "." : e ? "!" : f ? "-" : g ? "-h-" : h ? "-e-" : i ? ' "' : '" '))[R](/\s+((\.)|(\!)|(\,)|(\;)|(\:)|(\-\h\-\s+)|(\-\e\-\s+))/g, ((k, l, v, n, o, p, q, r, s) => v ? "." : n ? "!" : o ? "," : p ? ";" : q ? ":" : r ? "-" : "--"))[R](/[^!,"'.]\"\s/g, '"')[R](/.+?[\.\?\!](\s+|$)/g, (t => t[C](0)[U]() + t.substr(1)))[R](/\"[a-z]/g, (u => u[C](0) + u[C](1)[U]()))
}(a))

547 FF22 + কেবল

alert(function(z) {
    R = "replace", C = "charAt", U = "toUpperCase";
    return z[R](/\^((COMMA)|(SEMICOLON)|(COLON)|(PERIOD)|(BANG)|(DASH)|(HYPHEN)|(EMDASH)|(OPENQUOTE)|(CLOSEQUOTE))/g, ((m, _, a, b, c, d, e, f, g, h, i, j) => a ? "," : b ? ";" : c ? ":" : d ? "." : e ? "!" : f ? "-" : g ? "-h-" : h ? "-e-" : i ? ' "' : '" '))[R](/\s+((\.)|(\!)|(\,)|(\;)|(\:)|(\-\h\-\s+)|(\-\e\-\s+))/g, ((xx, __, k, l, m, n, o, p, q) => k ? "." : l ? "!" : m ? "," : n ? ";" : o ? ":" : p ? "-" : "--"))[R](/[^!,"'.]\"\s/g, '"')[R](/.+?[\.\?\!](\s+|$)/g, function(r) {
        return r[C](0)[U]() + r.substr(1)
    })[R](/\"[a-z]/g, function(s) {
        return s[C](0) + s[C](1)[U]()
    })
}(a))

611 এফএফ 22+ কেবলমাত্র

alert(function(c) {
    return c.replace(/\^((COMMA)|(SEMICOLON)|(COLON)|(PERIOD)|(BANG)|(DASH)|(HYPHEN)|(EMDASH)|(OPENQUOTE)|(CLOSEQUOTE))/g, ((x, _, a, b, c, d, e, f, g, h, i) = > a ? "," : b ? ";" : c ? ":" : d ? "." : e ? "!" : f ? "-" : g ? "-h-" : h ? "-e-" : i ? ' "' : '" ')).replace(/\s+\./g, ".").replace(/\s+\!/g, "!").replace(/\s+\,/g, ",").replace(/\s+\;/g, ";").replace(/\s+\:/g, ":").replace(/\s\-\h\-\s/g, "-").replace(/[^!,"'.]\"\s/g, '"').replace(/\s+\-\e-\s+/g, "--").replace(/.+?[\.\?\!](\s+|$)/g, function(b) {
        return b.charAt(0).toUpperCase() + b.substr(1)
    }).replace(/\"[a-z]/g, function(b) {
        return b.charAt(0) + b.charAt(1).toUpperCase()
    })
}(a))

653 ক্রস ব্রাউজার

alert(function(c) {
    return c.replace(/\^COMMA/g, ",").replace(/\^SEMICOLON/g, ";").replace(/\^COLON/g, ":").replace(/\^PERIOD/g, ".").replace(/\^BANG/g, "!").replace(/\^DASH/g, "-").replace(/\^HYPHEN/g, "h-h").replace(/\^EMDASH/g, "-e-").replace(/\^OPENQUOTE/g, ' "').replace(/\^CLOSEQUOTE/g, '" ').replace(/\s+\./g, ".").replace(/\s+\!/g, "!").replace(/\s+\,/g, ",").replace(/\s+\;/g, ";").replace(/\s+\:/g, ":").replace(/\s\h\-\h\s/g, "-").replace(/[^!,"'.]\"\s/g, '"').replace(/\s+\-\e-\s+/g, "--").replace(/.+?[\.\?\!](\s|$)/g, function(b) {
        return b.charAt(0).toUpperCase() + b.substr(1)
    }).replace(/\"[a-z]/g, function(b) {
        return b.charAt(0) + b.charAt(1).toUpperCase()
    })
}(a))

কিভাবে এটা কাজ করে:

https://gist.github.com/ericlagergren/1a61b5d772ae49ab3aea

জেএসফিডেল (653 বাইট ক্রস ব্রাউজার সমাধানের জন্য)

জেএসফিডেল ( কেবলমাত্র 595 এফএফ 22+ সমাধানের জন্য)

জেএসফিডেল ( কেবলমাত্র 547 এফএফ 22+ সমাধানের জন্য)

জেএসফিডেল (514 এফএফ 22+ কেবলমাত্র সমাধানের জন্য)

জেএসফিডেল ( কেবলমাত্র 487 এফএফ 22+ সমাধানের জন্য)

এই প্রথম আমি জেএস লিখতে হয়েছিল যা একাধিক রেগেক্স ব্যবহার করে এবং সাধারণত আমার রেজেক্স পূর্বনির্ধারিত হয়।

আমি যতটা পারি বাইট শেভ করতে থাকব।


আপনি নিজের প্রথম প্রতিস্থাপনগুলি এটির মতো সংক্ষিপ্ত করতে পারেন: c.replace(/\^((COMMA)|(SEMICOLON)|(COLON)|(PERIOD)|(BANG))/g,(m,_,a,b,c,d,e)=>a?',':b?';':c?':':d?'.':'!'))... ইত্যাদি। তীর সিনট্যাক্স সংক্ষিপ্ত, তবে এমনকি '
ফাংশন'-এ

তুমি ঠিক বলছো. আমি ক্রোম দিয়ে আমার রেজিএক্সপ পরীক্ষা করেছি এবং এটি চর্বিযুক্ত তীরগুলি সমর্থন করে না। আমি এখনই এফএফ দিয়ে এটি সোজা করার জন্য কাজ করছি, তবে আমি ঘৃণা করি কীভাবে সত্যিকার অর্থে রেগেক্সপসে "এবং" অপারেটর যেমন তারা "বা" করেন না। @ edc65
এরিক লেগারগ্রেন

@ edc65 সুতরাং আমি অনুভব করেছি যে =>এটির কাজ পেতে আমাকে দুটি টি ব্যবহার করতে হবে, তবে তীরগুলি ব্যবহার করে আমার 40 বাইট সংরক্ষণ হয়েছে!
এরিক লেগারগ্রেন

আর = 'প্রতিস্থাপন' দিয়ে প্রতিস্থাপন প্রতিস্থাপন করুন ... [R] ;-)
edc65

কেবল এটিই করেছেন :) এটিকে 563 @ edc65 এ নামিয়েছেন
এরিক লেগারগ্রেন

1

পিএইচপি, 412 বাইট

(স্পষ্টতার জন্য এখানে অসমাপ্ত; গল্ফযুক্ত সংস্করণের জন্য আদর্শ দেখুন ))

পিএইচপি এর preg_replace () ফাংশন অ্যারে আর্গুমেন্ট, যা এখানে চমত্কার দরকারী গ্রহণ করব। আমি মনে করি নিম্নলিখিত কোডগুলি প্রয়োজনীয় সমস্ত কিছু করে। এটি কমপক্ষে সমস্ত পরীক্ষার কেস পাস করে।

function x($s) {
    $r='preg_replace';
    $s=$r('/ +/',' ',$s);
    $s=$r(array('/ \^COMMA/','/ \^COLON/','/ \^SEMICOLON/','/ \^PERIOD/','/ \^BANG/',
                '/\^DASH/','/ \^HYPHEN /','/ \^EMDASH /','/\^OPENQUOTE /','/ \^CLOSEQUOTE/'),
          array(',',':',';','.','!','-','-','--','"',',"'),
          $s);
    $s=$r('/(^\W*\w|([\.!]| ")\W+\w)/e','strtoupper("$0")',$s);
    $s=$r('/([,\.!]),/','\1',$s);
    $s=$r('/(\w)( "\w)/e','"$1,".strtoupper("$2")',$s);
    echo $s;
}

পুরোপুরি কাজ করে! আইডোন.আরএইটিটিআই যদিও আমি যা নিয়ে বিভ্রান্ত হয়েছি তা কি আমাদের মুক্ত উক্তিগুলির আগে কমা দেওয়ার কথা রয়েছে? কারণ, ব্যাকরণগতভাবে বলতে গেলে, উদ্ধৃতি চিহ্নগুলি বক্তৃতার চেয়ে বেশি, তবুও কেবলমাত্র বক্তৃতায় উদ্ধৃতিগুলির আগে কমা থাকে। আমি ধরেছিলাম যেহেতু একটি ^ COMMA ছিল আমরা ব্যবহারকারীকে ইনপুটটি
কমাতে দিচ্ছি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.