অধ্যাপক শোয়ার্টজম্যানের একমে ক্যানাইন ডিকোডার 2000


31

ভূমিকা

আমরা - বিশেষত আমাদের মধ্যে গিকগুলি, যারা ভক্ত হতে থাকে - সকলেই এই পুরানো ফার সাইড কার্টুনটিকে মনে রাখে :

হে!  হে!  হে!

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

ইনপুট স্পেস

আপনাকে অবশ্যই এমন একটি স্ক্রিপ্ট তৈরি করতে হবে যা কুকুরের শব্দগুলিকে যথাযথভাবে "হেই" এসগুলিতে অনুবাদ করবে। এটি খাঁটি কোড গল্ফ; সর্বনিম্ন বাইট জেতা

আপনার ইনপুটটিতে নিম্নোক্ত টোকেনগুলির কয়েকটি সমন্বয় থাকবে:

  • Bark, Baark, Baaark, Baaaark, ... (যে, B*rk অন্তত 1 aতারকাচিহ্ন প্রতিস্থাপন)
  • Woof, Wooof, Woooof, ... ( W*fঅন্তত সঙ্গে 2 o গুলি তারকাচিহ্ন প্রতিস্থাপন)
  • Grr, Grrr, Grrrr, ..., ( Gদ্বারা অন্তত অনুসৃত 2 r গুলি)
  • যেকোনো সংখ্যক .(আমল), !(বিস্ময়বোধক চিহ্ন) এবং / অথবা ?(প্রশ্নবোধক চিহ্ন) অক্ষর, যা ইনপুট যে কোন জায়গায় ঘটতে পারে

আবার দ্রষ্টব্য, Woofবেসড এবং- Grrভিত্তিক টোকেনগুলিতে সর্বদা যথাক্রমে কমপক্ষে দুটি o এবং rএস প্রয়োজন; Wofএবং Grহয় না বৈধ টোকেন।

একটি টোকেন কত দিন হতে পারে তার কোনও সীমা নেই (উদাহরণস্বরূপ, টোকনে aকতবার পুনরাবৃত্তি হতে পারে Bark); তবে, এই চ্যালেঞ্জটি পাস করার জন্য আপনার ডিকোডারকে কেবলমাত্র 10 টি aএস, oগুলি বা rএস দিয়ে ইনপুট টোকেনের জন্য সঠিকভাবে কাজ করতে হবে।

আউটপুট স্পেস

শোয়ার্জম্যানের ডিজাইনের প্রতি বিশ্বস্ত, আপনার কাইনাইন ডিকোডার প্রোগ্রামটি অবশ্যই এটি নীচে আউটপুট পাঠ্যে প্রসেস করতে হবে:

  • Bark, Woofএবং Grrহয়ে Hey;
  • Baark, Wooofএবং Grrrহয়ে Heyy;
  • Baaark, Woooofএবং Grrrrহয়ে Heyyy; প্রভৃতি
  • সমস্ত- Barkভিত্তিক টোকেনগুলির জন্য, yআউটপুট- Heyভিত্তিক টোকনে as এর সংখ্যা অবশ্যই s এর সংখ্যার সমান হতে হবে ;
  • অল- Woofবেসড টোকেনগুলির জন্য, yআউটপুট- Heyভিত্তিক টোকনে s এর সংখ্যা অবশ্যই s এর সংখ্যার চেয়ে কম হতে হবে o;
  • অল- Grrবেসড টোকেনগুলির জন্য, yআউটপুট- Heyভিত্তিক টোকনে s এর সংখ্যা অবশ্যই s এর সংখ্যার চেয়ে কম হতে হবে r;
  • সমস্ত বিরামচিহ্ন ( ., !এবং ?) অপরিবর্তিত রয়েছে।

কেবলমাত্র s এবং s এর yজন্য আউটপুট থেকে একটি বাদ দিতে ভুলবেন না ! 8 এস এর ইনপুটটি 8 টির সাথে মিলে যাবে । যাইহোক, শুধুমাত্র 7 এস সহ হয়ে যায় ।WoofGrrBaaaaaaaark?aHeyyyyyyyy?yWoooooooof?Heyyyyyyy?y

আবার, যদি আপনি আপনার প্রোগ্রামটি সীমাহীন আকারের ইনপুট টোকেনের জন্য কাজ করতে পারেন তবে এটি দুর্দান্ত, তবে এই চ্যালেঞ্জের উদ্দেশ্যে, আপনার প্রোগ্রামটি কেবলমাত্র এটি নিশ্চিত করা যায় যে এটি ইনপুট টোকেনগুলির জন্য যাতে 10 টির বেশি বারবার অক্ষর নেই সঠিকভাবে কাজ করে? ।

আপনার ইনপুটটিতে সমস্ত Bark-, Woof-, এবং- Grrভিত্তিক টোকেনগুলি বড় হাতের অক্ষর দিয়ে শুরু বলে ধরে নেওয়া হয়। অতএব, রূপান্তর বা অনুরূপ কিছু পরিচালনা করার দরকার নেইBark grrrHey heyy

উদাহরণ ইনপুট এবং আউটপুট

    • ইনপুট: Bark. Bark! Bark!!
    • আউটপুট: Hey. Hey! Hey!!
    • ইনপুট: Baaaaaark?(ছয়টি a)
    • আউটপুট: Heyyyyyy?(ছয়টি y)
    • ইনপুট: Grrrrrrrr...(আট rটি)
    • আউটপুট: Heyyyyyyy...( সাতটি y )
    • ইনপুট: ?...!
    • আউটপুট: ?...!
    • ইনপুট: Wooof Woof? Grrrr. Baaaark Grr!
    • আউটপুট: Heyy Hey? Heyyy. Heyyyy Hey!

10
হাই, এবং সাইটে আপনাকে স্বাগতম! আপনি কেবল জানেন, সংক্ষিপ্ত উত্তরটি গ্রহণের আগে কিছুক্ষণ অপেক্ষা করা এই সাইটে প্রচলিত। আমি আপনাকে উত্সাহিত উত্তরটি গ্রহণ না করার জন্য আপনাকে উত্সাহিত করব এবং সংক্ষিপ্ত উত্তরটি গ্রহণের আগে এই প্রশ্নের ক্রিয়াকলাপটি মারা না যাওয়া পর্যন্ত অপেক্ষা করব। এটি আরও উত্তর উত্সাহিত করবে।
ডিজেএমসিএমহেম


গ্রহণযোগ্যতা প্রক্রিয়া সম্পর্কিত টিপস জন্য ধন্যবাদ। আমি প্রকৃতপক্ষে প্রতি কয়েক ঘন্টা পরে উত্তরগুলির তালিকা পরীক্ষা করার পরিকল্পনা করছিলাম এবং যদি আমি লক্ষ্য করি যে আরও ভাল উত্তর এসেছে তবে তা গ্রহণ করুন। কারও জন্য দুঃখিত যে আমি এখানে খ্যাতি অস্বীকার করতে পারি।
এ। মীরাবাউ

5
@ এ। মীরাবাউ এটি সম্মানজনক এবং এটি আদর্শভাবে কীভাবে কাজ করবে, তবে কিছু লোক এতে মনোযোগী নয়, তাই বেশিরভাগ উত্তরদাতারা ধরে নিতে পারেন যে বিজয়ী ইতিমধ্যে নির্বাচিত হয়েছে। আপনি যদি এটি আপডেট করার পরিকল্পনা করছেন এখনই কোনও বিজয়ী বাছাইয়ে কোনও ভুল নেই , কিছু অভিযোগের পাশাপাশি আপনি সম্ভবত কম উত্তর পেতে চলেছেন, তাই কমপক্ষে এক সপ্তাহ অপেক্ষা করা ভাল।
মার্টিন ইন্ডার

উত্তর:


16

রেটিনা , 24 18 17 16 বাইট

এমটি0 এর উত্তরের একটি ধারণার ভিত্তিতে 1 বাইট সংরক্ষণ করা হয়েছে।

\wf?k?
y
\byy
He

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

ব্যাখ্যা

\wf?k?
y

এটি সহজেই সমস্ত অক্ষরগুলিকে রূপান্তরিত করে y, তবে সেগুলি যদি একটি দ্বারা অনুসরণ করা হয় fবা kআমরা অবিলম্বে এটিও প্রতিস্থাপন করি। সরানোর মাধ্যমে fএবং kআমরা শব্দের দৈর্ঘ্যকে "স্বাভাবিক" করি যাতে এখন yতাদের সবার প্রয়োজনের চেয়ে আরও দুটি এস থাকে।

\byy
He

রূপান্তরটি সম্পূর্ণ yকরে এটি প্রতিটি শব্দের প্রথম দুটি Heপরিবর্তন করে।


এখন পর্যন্ত সবচেয়ে দক্ষ উত্তর, ভাল কাজ। আমি এখনও এটি গ্রহণ করতে যাচ্ছি না, তবে আমি আপনাকে বলতে পারি যে আপনি বিড়াল FUD প্রাপ্য।
উঃ মীরাবাউ

10

পার্ল, 51 41 39 বাইট

s/(G.|[BW]..)(\w+)/He."y"x length$2/ge

ব্যবহার

perl -pE 's/(G.|[BW]..)(\w+)/He."y"x length$2/ge'

ইনপুট

Bark. Bark! Bark!!
Baaaaaark?
Grrrrrrrr...
?...!
Wooof Woof? Grrrr. Baaaark Grr!

আউটপুট

Hey. Hey! Hey!!
Heyyyyyy?
Heyyyyyyy...
?...!
Heyy Hey? Heyyy. Heyyyy Hey!

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

স্বতঃ-মুদ্রণ ব্যবহার করে সাধারণ রেজিপ্স্প প্রতিস্থাপন -pগণনাতে 1 বাইট যোগ করে। /geপ্রতিটি প্যাটার্নের জন্য বিকল্প প্রয়োগ করে, এবং কোড হিসাবে প্রতিস্থাপন চালায়।


একটি পুরানো সংস্করণ একটি ত্রি-উপায় সনাক্তকরণ ব্যবহার করেছে, তবে মার্টিন ইন্ডার লক্ষ্য করেছেন যে আমি যথেষ্ট আগ্রাসী নই, যা আমাকে 10 বাইট সংরক্ষণ করেছিল।

msh210 আমাকে জানিয়েছে যে আপনার কাছে Heদুটি বাইট সংরক্ষণ করে স্ট্রিংয়ের চারপাশে কোট লাগবে না ।


2
এখন পর্যন্ত সেরা, অভিনন্দন।
উঃ মীরাবাউ

1
@ এ। মীরাবাউ ধন্যবাদ, আমি কয়েক মিনিট আগে এখানে নিবন্ধিত হয়ে বিবেচনা করে বেশ প্রশংসা করছি!
পাইপ

তিনটি দ্রবীভূত হওয়া আমি কয়েক ঘন্টা আগে এখানে নিবন্ধিত হয়ে বিবেচনা করে অনুপ্রেরণা জাগিয়ে তুলছি।
এ। মীরাবাউ

1
আপনার চারপাশের উদ্ধৃতিগুলির দরকার নেই He
এমএস 210

@ msh210 মজার, জানেন না আপনি সেখানে তাদের বাদ দেওয়ার অনুমতি পেয়েছিলেন!
পাইপ

5

পাইথন, 106 বাইট

f=lambda s,a="B,He,Gr,He,Wo,He,a,y,r,y,o,y,f,,yk,".split(","):s if a==[]else f(s.replace(a[0],a[1]),a[2:])

ডেমো

https://repl.it/C6Rr


যদিও গৃহীত উত্তর না হলেও, এটি সবচেয়ে বাইট-দক্ষ সমাধান হিসাবে সম্মানজনক উল্লেখের দাবি রাখে যা কেবলমাত্র তিনটি প্রয়োজনীয় কুকুর-ভাষার কীওয়ার্ড পরিবর্তন করে।
এ।

4

জাভাস্ক্রিপ্ট (ES6) - 57 55 52 51 বাইট

f=s=>s.replace(/\wk?f?/g,'y').replace(/\byy/g,'He')

টেস্ট:

f=s=>s.replace(/\wk?f?/g,'y').replace(/\byy/g,'He');

[
  'Bark. Bark! Bark!!',
  'Baaaaaark?',
  'Grrrrrrrr...',
  '?...!',
  'Wooof Woof? Grrrr. Baaaark Grr!'
].forEach( s=>{console.log( f(s) );} );

56 এবং 51 বাইটের জন্য @ মার্টিনএন্ডার এবং অন্যান্য কিছু শেভের অনুপ্রেরণার জন্য আপনাকে ধন্যবাদ।


4

ভিমস্ক্রিপ্ট, 51 39 37 33 32 29 28 বাইট,

%s/\hk\?f\?/y/g|%s/\<yy/He/g

রেগেক্স আরও 9 টি বাইট শেভ করার জন্য ক্রেডিট: এমটি 0, মার্টিন ইন্ডার, এমএস 210

asciicast ডেমো

ব্যাখ্যা:

                               1. Normalize words to same length & replace letters with ys 

%s                             Regex search and replace 
  /                            Regex search begin
   \hk\?f\?                    Find any letter (\h) optionally followed by k or f
           /                   Regex search end and replace start
            y                  Replace with y
             /                 Replace end
              g                Replace globally

               |               New command

                               2. Overwrite first two y of every word with He

                %s             Regex search and replace
                  /            Regex search begin
                   \<yy        Find yy at a word's beginning
                        /      Regex search end and replace start
                         He    replace with He
                           /   Replace end
                            g  Replace globally

1
আমি ভিমস্ক্রিপ্ট জানি না, তবে আপনি কি এর \<yyপরিবর্তে ব্যবহার করতে পারবেন \<\hy?
এমএস 210

@ এমএস 210 হ্যাঁ এটি সম্ভব এবং আমি সমাধানটি আপডেট করেছি, ধন্যবাদ
স্টারকর্ডার


2

জাভাস্ক্রিপ্ট, 72 66 64 বাইট

f=
t=>t.replace(/k|f/g,'').replace(/\w/g,'y').replace(/\byy/g,'He')

সম্পাদনা: পৃথক f=এবং ফাংশন + বাইট গণনা হ্রাস


1
আপনার f=(পিপিসিজির ডিফল্ট হিসাবে) দরকার নেই, তাই by৪ বাইট কাজ করে।
আর

@ এষিআই গ্রেট, আমি এটি জানতাম না
স্টারকর্ডার


1

পাইথন 3, 140 135 134 বাইট

from re import*
f=lambda s:''.join('He'+'y'*len(x)+y for x,y in[(a+b+c,d)for a,b,c,d in findall('(?:Wo(o+)f|Gr(r+)|B(a+)rk)(\W+)',s)])

পুনঃসংশোধনযোগ্য অক্ষরের উপস্থিতিগুলি খুঁজে পেতে রিজেক্স ব্যবহার করে।

সম্পাদনা করুন: ফলাফলের ফলাফল থেকে মানগুলি নেওয়ার জন্য গল্ফযুক্ত 1 বাইট সাদা স্থান এবং 4 বাইট tes

সম্পাদনা 2 : গল্ফড 1 বাইট (বার্কের "এ" সঠিকভাবে গণনা করা হয়নি)

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