ইন্ট্রো
সুতরাং আমি আমার সময় নষ্ট করে চলেছি প্রত্যয়টি বাছাই করে অ্যালগরিদমগুলি ছড়িয়ে দিয়ে, নতুন আইডিয়াগুলি হাত দিয়ে এবং কোডে মূল্যায়ন করে। তবে আমার প্রত্যয়ের ধরণটি স্মরণ করতে আমি সর্বদা সংগ্রাম করি! আমার প্রত্যয়টি কোন প্রকারের তা বলতে পারেন?
বাম-সবচেয়ে কি?
অনেকগুলি প্রত্যয় বাছাই করা অ্যালগরিদমগুলি (SAIS, KA, আমার নিজের daware) গোষ্ঠী প্রত্যয়গুলি বিভিন্ন ধরণের অনুসারে বাছাই করে types দুটি প্রাথমিক ধরণ রয়েছে: এস-টাইপ এবং এল-টাইপের প্রত্যয়। এস-টাইপের প্রত্যয়গুলি প্রত্যয় যা নিম্নোক্ত প্রত্যয়গুলির তুলনায় শব্দকোষগতভাবে কম ( এস ম্যালার) এবং যদি লিক্সোগ্রাফিকভাবে বৃহত্তর ( এল আরজার) হয় তবে এল-টাইপ হয় । একটি বাম-সর্বাধিক এস-টাইপ ( এলএমএস-প্রকার ) ঠিক এটি: একটি এস-টাইপ প্রত্যয় যা এল-টাইপের প্রত্যয় দ্বারা এগিয়ে থাকে।
এই এলএমএস-ধরণের প্রত্যয়গুলির বিশেষ জিনিসটি হ'ল একবার সেগুলি বাছাই করার পরে আমরা অন্যান্য সমস্ত প্রত্যয়কে রৈখিক সময়ে বাছাই করতে পারি! কি দুর্দান্ত?
চ্যালেঞ্জ
একটি স্ট্রিং দেওয়া হল ধরে নিন এটি একটি বিশেষ অক্ষর দ্বারা সমাপ্ত করা হয়েছে যা সেই স্ট্রিংয়ের অন্য কোনও চরিত্রের চেয়ে কম (যেমন নাল বাইটের চেয়ে ছোট)। প্রতিটি প্রত্যয়ের জন্য একটি প্রকারের কর্সস্পন্ডিং চর আউটপুট করুন।
আপনি অবাধে যা গৃহস্থালির কাজ কোন ধরনের জন্য ব্যবহার করা চয়ন করতে পারেন কিন্তু আমি পছন্দ L, S and *
জন্য L-, S- and LMS-type
যতদিন তারা সব মুদ্রণযোগ্য ( 0x20 - 0x7E
)।
উদাহরণ
স্ট্রিং mmiissiissiippi
আউটপুট দেওয়া হয়েছে (ব্যবহার করার সময় L, S and *
):
LL*SLL*SLL*SLLL
উদাহরণস্বরূপ, প্রথমটি অভিধানের চেয়ে বৃহত্তর (এই সংক্ষিপ্ততর চরিত্রের প্রতিনিধিত্ব করে) এর L
কারণে ঘটে :mmiissiissiippi$
miissiissiippi$
$
L - mmiissiissiippi$ > miissiissiippi$
L - miissiissiippi$ > iissiissiippi$
* - iissiissiippi$ < issiissiippi and preceeded by L
S - issiissiippi$ < ssiissiippi$
L - ssiissiippi$ > siissiippi$
L - siissiippi$ > iissiippi$
* - iissiippi$ < issiippi$ and preceeded by L
S - issiippi$ < ssiippi$
L - ssiippi$ > siippi$
L - siippi$ > iippi$
* - iippi$ < ippi$ and preceeded by L
S - ippi$ < ppi$
L - ppi$ > pi$
L - pi$ > i$
L - i$ > $
আরও কয়েকটি উদাহরণ:
"hello world" -> "L*SSL*L*LLL"
"Hello World" -> "SSSSL*SSLLL"
"53Ab§%5qS" -> "L*SSL*SLL"
লক্ষ্য
আমি এখানে পিটার কর্ডেসকে বিরক্ত করার জন্য আসছি না (স্ট্যাকওভারফ্লোতে আমি একসময় এটি করতে যাচ্ছি); আমি কেবল খুব অলস তাই এটি অবশ্যই কোড-গল্ফ ! বাইটস মধ্যে সংক্ষিপ্ত উত্তর।
সম্পাদনা করুন: অক্ষরের ক্রমটি তাদের বাইট মান দ্বারা দেওয়া হয়। তার মানে তুলনা সি এর মতো হওয়া উচিত strcmp
।
সম্পাদনা 2: মতামত আউটপুট বর্ণিত মত প্রতিটি ইনপুট অক্ষরের একক অক্ষর হওয়া উচিত। আমি যখন ধরে নিয়েছিলাম যে এটি "স্ট্রিং রিটার্ন" হিসাবে বোঝা যাবে তবে মনে হয় কমপক্ষে 1 টি উত্তর একক অক্ষরের একটি তালিকা দেয়। বিদ্যমান উত্তরগুলিকে অকার্যকর না করার জন্য আমি আপনাকে একক অক্ষরের একটি তালিকা (বা পূর্ণসংখ্যার মুদ্রণের ফলে কেবল 1 টি লেখার ফলস্বরূপ) প্রদান করতে দেব।
রৈখিক সময়ের জন্য টিপস:
- এটি 2 সমান্তরাল ফরোয়ার্ড পুনরাবৃত্তিতে বা একক পিছনের পুনরাবৃত্তিতে করা যেতে পারে।
- প্রতিটি প্রত্যয়টির অবস্থা কেবল প্রথম 2 টি অক্ষর এবং দ্বিতীয়টির ধরণের উপর নির্ভর করে।
- বিপরীত দিকের ইনপুটটি স্ক্যান করে আপনি এই জাতীয় এল বা এস নির্ধারণ করতে পারেন:
$t=$c<=>$d?:$t
(পিএইচপি 7), যেখানে পূর্ববর্তী এবং পূর্ববর্তী টাইপের$c
বর্তমান চরটি ।$d
$t
- আমার পিএইচপি উত্তর দেখুন । আগামীকাল আমি অনুদান প্রদান করব।
c++
স্টাইলের স্ট্রিংয়ের জন্য এমনকি নাল বাইট । এটি বাইনারি ডেটা হিসাবে ভাবেন।
*
মানে?
*
মানে সংশ্লিষ্ট প্রত্যয়টি টাইপযুক্ত left most s-type
। A S-type suffix that is preceeded by a L-type suffix.
।