এই চ্যালেঞ্জটি নিম্নলিখিত সমস্যাটি সমাধান করার জন্য কোড লেখার বিষয়ে।
দুটি এবং দুটি স্ট্রিং দেওয়া আপনার কোডের নীচের বৈশিষ্ট্যগুলির সাথে A এর স্ট্রিংয়ের শুরু এবং শেষ সূচকগুলি আউটপুট করা উচিত।
- এ এর স্ট্রিংগুলি বি এর কিছু স্ট্রিংয়ের সাথেও মেলে should
- প্রথম সম্পত্তি সন্তুষ্ট করে এমন আর আর সাবস্ট্রিং থাকা উচিত নয়।
উদাহরণ স্বরূপ:
A = xxxappleyyyyyyy
B = zapplezzz
apple
সূচকের সাথে সাবস্ট্রিং 4 8
(1 থেকে সূচিককরণ) একটি বৈধ আউটপুট হবে।
কার্যকারিতার
আপনি ধরে নিতে পারেন ইনপুটটি স্থানীয় ডিরেক্টরিতে কোনও ফাইলে বা কোনও ফাইলে থাকবে, এটি আপনার পছন্দ। ফাইল ফর্ম্যাটটি কেবল দুটি স্ট্রিং হবে, একটি নতুন লাইনের দ্বারা পৃথক। উত্তরটি কেবল একটি ফাংশন নয়, একটি পূর্ণ প্রোগ্রাম হওয়া উচিত।
অবশেষে http://hgdownload.cse.ucsc.edu/goldenPath/hg38/chromosomes/ এ স্ট্রিং থেকে নেওয়া দুটি সাবস্ট্রিংয়ে আপনার কোডটি পরীক্ষা করতে চাই ।
স্কোর
এটি একটি মোচড় সহ কোড-গল্ফ। আপনার কোডটি O(n)
সময়মতো চালানো উচিত , যেখানে n
ইনপুটটির মোট দৈর্ঘ্য।
ভাষা ও গ্রন্থাগার
আপনি যে কোনও ভাষা নিখরচায় উপলব্ধ সংকলক / দোভাষী / ইত্যাদি ব্যবহার করতে পারেন। লিনাক্সের জন্য। আপনার কেবল এই স্ট্যান্ডার্ড ওপেন সোর্স লাইব্রেরি ব্যবহার করা উচিত যা এই কার্যটি সমাধান করার জন্য নয়। বিরোধের ক্ষেত্রে, আমি এটি এমন কোনও লাইব্রেরি হিসাবে গণনা করব যা হয় আপনার ভাষার সাথে মান হিসাবে আসে বা একটি ডিফল্ট সংগ্রহশালা থেকে আপনি একটি ডিফল্ট উবুন্টু মেশিনে ইনস্টল করতে পারেন।
দরকারী তথ্য
রৈখিক সময়ে এই সমস্যাটি সমাধান করার জন্য কমপক্ষে দুটি উপায় রয়েছে। একটি হ'ল প্রথমে প্রত্যয় গাছ এবং দ্বিতীয়টি প্রথমে প্রত্যয় অ্যারে এবং এলসিপি অ্যারে গণনা করা।
- এখানে লিনিয়ার সময় প্রত্যয় গাছের নির্মাণের একটি সম্পূর্ণ এবং (সম্ভবত অতিরিক্ত) বিশদ বিবরণ দেওয়া হয়েছে (এটি দেখা যায় যে দুর্ভাগ্যক্রমে কিছু পরিসংখ্যান বিশৃঙ্খলাবদ্ধ)। লিনিয়ার সময় প্রত্যয় গাছ নির্মাণ সম্পর্কে https://stackoverflow.com/questions/9452701/ukkonens-suffix-tree-algorithm-in-plain-english এ একটি খুব সুন্দর এসও উত্তরও রয়েছে । এটি সোর্স কোডের একটি লিঙ্কও অন্তর্ভুক্ত করে। আরও একটি বিশদ ব্যাখ্যা এখানে পাওয়া যাবে , এবার সি-তে সম্পূর্ণ সমাধান দিচ্ছেন
- Http://www.cs.cmu.edu/~guyb/realworld/papersS04/KaSa03.pdf এর 2 ধারাটি একটি রৈখিক সময় প্রত্যয় অ্যারে নির্মাণের অ্যালগরিদম দেয় এবং পরিশিষ্ট এতে সি ++ উত্স কোড রয়েছে। এই উত্তরটি আপনি বলে তাহলে কেমন করে দীর্ঘতম সাধারণ সাবস্ট্রিং গনা https://cs.stackexchange.com/questions/9555/computing-the-longest-common-substring-of-two-strings-using-suffix-arrays । Https://courses.csail.mit.edu/6.851/spring12/scribe/lec16.pdf এর ধারা 5 যা এর সাথে সম্পর্কিত ভিডিও বক্তৃতাও রয়েছে https://courses.csail.mit.edu/6.851/spring12/lectures/L16 .html একই অ্যালগরিদম 1: 16:00 এ শুরু করেও ব্যাখ্যা করে।
O(n) time
আপনি কি নিশ্চিত যে এটি সম্ভব?