সাধারণ এবং উল্টানো উদ্দীপনা এবং প্রশ্ন চিহ্ন জোড়


13

চ্যালেঞ্জ

¡আমরা বিস্মৃত এবং প্রশ্ন চিহ্ন উল্টে বন্ধু দিতে যাচ্ছি!

শেষ হওয়া টেক্সট ধারণকারী বাক্য একটি শরীরের দেওয়া ., ?অথবা !, শুরুতে যোগ উল্টানো প্রশ্নবোধক চিহ্ন, ¿, বাক্য (বাক্য বন্ধ করার ?) এবং উল্টানো বিস্ময়বোধক চিহ্ন, ¡, বিস্ময়সূচক (শেষ হওয়া বাক্য থেকে !)। শেষ হওয়া পদক্ষেপগুলি .এড়ানো হবে।

বাক্যগুলি সাদা স্থান (স্পেস, ট্যাব এবং / অথবা নিউলাইন) দ্বারা পৃথক করা হবে এবং কেবলমাত্র বর্ণমালা, কমা, অ্যাস্টোস্ট্রোফ এবং স্পেস থাকবে। প্রতিটি বাক্যে কমপক্ষে একটি শব্দ থাকবে। প্রতিটি বাক্যের প্রথম শব্দটি মূলধন হওয়ার গ্যারান্টিযুক্ত। ইনপুট যে কোনও সাদা স্থানের সাথে শুরু এবং শেষ হতে পারে।

উদাহরণ

ইনপুট:

  Hello there!      What is your name?
My name is Ron. What's your name?
My name is Alex.  Nice to meet you!
Nice to meet you to!  How was your break?
It was great, I spent all my time code golfing!
What's that?
        Wow, you're such a n00b! Here, let me show you.

আউটপুট:

  ¡Hello there!      ¿What is your name?
My name is Ron. ¿What's your name?
My name is Alex.  ¡Nice to meet you!
¡Nice to meet you to!  ¿How was your break?
¡It was great, I spent all my time code golfing!
¿What's that?
        ¡Wow, you're such a n00b! Here, let me show you.

বিধি

  • সমস্ত ডিফল্ট কোড গল্ফ বিধি প্রযোজ্য।
  • স্বল্পতম বাইটের সাথে প্রোগ্রামটি জয়ী।

বোনাস (17% বন্ধ) - একাধিক চিহ্ন পার্স করুন

একটি বাক্য একাধিক উদ্দীপনা / প্রশ্ন চিহ্নেও শেষ হতে পারে। আপনার প্রতিটি বাইট গণনা ছাড়িয়ে অতিরিক্ত 17% এর জন্য এই চিহ্নগুলির প্রত্যেককে যুক্তযুক্ত বিপরীত বিস্মরণ / প্রশ্ন চিহ্ন দিন।

উদাহরণ

ইনপুট:

I am a man in a can doing a dance?? Maybe...
              Doing it for the views??!???!

আউটপুট:

¿¿I am a man in a can doing a dance?? Maybe...
              ¡¿¿¿¡¿¿Doing it for the views??!???!

ভুল আউটপুট:

¿¿I am a man in a can doing a dance?? Maybe...
              ¿¿¡¿¿¿¡Doing it for the views??!???!

আমরা কী ধরণের স্পেসস্পেস বাক্যগুলি পৃথক করে বাছাই করতে পারি, বা আমাদের সমস্ত 3 প্রকারের সমর্থন করতে হবে?
মেগো

@ মেগো তিনটি প্রকারকেই সমর্থন করা উচিত।
বন্ধুরা

না, একটি বাক্যে সর্বদা এতে কমপক্ষে একটি শব্দ থাকবে এবং তিনটি অনুমোদিত বিরামচিহ্নগুলির মধ্যে একটির সাথে শেষ হবে। আমি এটিকে চ্যালেঞ্জের সাথে যুক্ত করব।
বন্ধুরা

উত্তর:


5

রেটিনা , 39 37 34 বাইট

\w[^.]*?([!?])
$1$0
T`?!`¿¡`\S\b

এটি অনলাইনে চেষ্টা করুন।

ব্যাখ্যা

\w[^.]*?([!?])
$1$0

এটি একটি উদ্দীপনা বা প্রশ্ন চিহ্নে শেষ হওয়া একটি বাক্যটির সাথে মিলে যায় এবং বাক্য বিবর্তন চরিত্রটিকে বাক্যটিতে প্রেন্ডেন্ড করে। এখন আমরা জানি যে সমস্ত !বা ?যেগুলি অবিলম্বে একটি অ-স্থানের অক্ষর অনুসরণ করে সেগুলি অবশ্যই আমাদের sertedোকানো উচিত, কারণ আসল অক্ষরগুলি একটি স্পেস দ্বারা পরবর্তী অক্ষর থেকে পৃথক করা উচিত।

T`!?`¡¿`\S\b

এই ট্রান্সলিটারেশন পর্যায় সব সক্রিয় !এবং ?মধ্যে ¡এবং ¿, যথাক্রমে তারা একটি ম্যাচ পাওয়া করছি প্রদান \S\b, শুধুমাত্র বেশী আমরা শুধু ঢোকানো ক্ষেত্রে প্রযোজ্য হয়। উভয়কে একই বাইট গণনায় দুটি পৃথক বিকল্পে প্রতিস্থাপন করা, তবে আমি এখানে প্রতিলিপি পর্যায়ের শব্দার্থকে পছন্দ করি।


3

গণিত 137 বাইট

সংক্ষিপ্ততম নয়, তবে এটি মজাদার ছিল।

TextSentencesইনপুট পাঠ্যটিকে বাক্যগুলিতে বিভক্ত করে এবং পাঠ্যের StringPositionপ্রতিটি বাক্যের শুরু এবং শেষের অবস্থান খুঁজে পায়। উল্লিখিত বিরামচিহ্নগুলি প্রতিটি বাক্য শুরুতে প্রয়োজনীয় হিসাবে সন্নিবেশ করা হয়।

w=StringPosition;f[x_,y_,q_]:=StringInsert[x,q,x~w~y/.{a_,a_}->a/.(x~w~#&/@TextSentences@#&@x/.{{c_,d_}}:>d->c)];f[f[t,"!","¡"],"?","¿"]&

ব্যবহার, ধরে নিচ্ছি পাঠ্যটি এখানে ইনপুট t,

f[f[#,"!","¡"],"?","¿"]&[t]

আউটপুট


1
দারুন, এমন একটি সমাধান যা RegExp ব্যবহার করে না!
usandfriends

3

সেড, 61 বাইট

s/\(\s*\)\([^.!?]*!\)/\1¡\2/g;s/\(\s*\)\([^.!?]*?\)/\1¿\2/g

পরীক্ষা রান:

$ echo """Hello there!      What is your name?
My name is Ron. What's your name?
My name is Alex.  Nice to meet you!
Nice to meet you to!  How was your break?
It was great, I spent all my time code golfing!
What's that?
        Wow, you're such a n00b! Here, let me show you.""" | sed 's/\(\s*\)\([^.!?]*!\)/\1¡\2/g;s/\(\s*\)\([^.!?]*?\)/\1¿\2/g'
¡Hello there!      ¿What is your name?
My name is Ron. ¿What's your name?
My name is Alex.  ¡Nice to meet you!
¡Nice to meet you to!  ¿How was your break?
¡It was great, I spent all my time code golfing!
¿What's that?
        ¡Wow, you're such a n00b! Here, let me show you.

1
এটি প্রযুক্তিগতভাবে 61১ বাইট হিসাবে উল্টানো অক্ষরগুলিকে 2 বাইট হিসাবে গণনা করা হয়।
usandfriends

@ ইউসুফ্রেন্ডস ঠিক, স্থির
হারুন

যদি আপনি -rপতাকাটি (জিএনইউ) সেডে ব্যবহার করেন তবে আপনাকে এড়াতে হবে না (এবং এটি )আপনাকে বাঁচাতে পারে ৮. যদিও আপনাকে এই অ-ডিফল্ট বিকল্পটি ব্যবহারের জন্য একটি অতিরিক্ত পয়েন্ট যুক্ত করতে হবে।
ডিজিটাল ট্রমা

@ ডিজিটালট্রামা আমি সেই কৌশলটি জানতাম এবং চেষ্টা করেছিলাম কিন্তু এটি একই আউটপুট ফেরেনি: "¡¡হ্যালো! Is আপনার নাম কি? Instead" পরিবর্তে "¡হ্যালো! Your আপনার নাম কি?"
হারুন

3

জাভাস্ক্রিপ্ট (ES6), 86 79 66 63 বাইট

i=>i.replace(/\w[^.!?]*[!?]/g,k=>(k.slice(-1)>'>'?'¿':'¡')+k)

Ungolfed:

func = inp => inp.replace(/\w[^.!?]*[!?]/g, sentence => (sentence.slice(-1) > '>' ? '¿' : '¡') + sentence)

ব্যবহার:

console.log(func(`Hello there!      What is your name?
My name is Ron. What's your name?
My name is Alex.  Nice to meet you!
Nice to meet you to!  How was your break?
It was great, I spent all my time code golfing!
What's that?
            Wow, you're such a n00b! Here, let me show you.`))

শীঘ্রই বোনাস সমাধান বাস্তবায়ন করবে implement

ধন্যবাদ:
@ ব্যবহারকারী 81655 , 86 => 79 বাইট


1
9 টি বাইট সংরক্ষণ করে এমন কয়েকটি উন্নতি:i=>i.replace(/[A-Z][^.!?]*[.!?]/g,k=>(r=k.slice(-1))<'.'?'¡'+k:r>'.'?'¿'+k:k)
ব্যবহারকারীর 1-1655

@ user81655 দেখে মনে হচ্ছে এটি 9 এর পরিবর্তে 7 বাইট সংরক্ষণ করে, তবে নির্বিশেষে, এর জন্য ধন্যবাদ! শেষ হওয়া বাক্যগুলির জন্য চেক এড়িয়ে আরও বেশি বাইট সরিয়ে ফেলতে সক্ষম হয়েছিল .
usandfriends


1

পাইথন 2, 127.82 (154-17%) বাইট

import re
print re.sub("([A-Z][\w ,']*)([\.!\?]+)",lambda m:''.join({'!':'¡','?':'¿','.':''}[c]for c in m.group(2))[::-1]+m.group(1)+m.group(2),input())

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.