কোড গল্ফিংয়ের জন্য বরং উপযুক্ত বলে মনে হচ্ছে এমন একটি কম পরিচিত প্রোগ্রামিং দৃষ্টান্ত হ'ল ওভারল্যাপিং ওরিয়েন্টেড প্রোগ্রামিং (ওওপি) *। আংশিকভাবে অভিন্ন কোড লেখার সময়, অনেকগুলি বাইটগুলি কেবল অভিন্ন অংশগুলিকে ওভারল্যাপ করে এবং দুটি মূল কোড লাইন শুরু হয় এমন কোনও উপায়ে স্মরণ করে সংরক্ষণ করা যায়। আপনার কাজটি দুটি ওভারল্যাপিং প্রোগ্রাম বা ফাংশন compress
এবং decompress
নিম্নলিখিত স্পেসিফিকেশন সহ লিখতে হয় :
* সম্ভবত উত্পাদন কোড ব্যবহার করবেন না।
compress
compress
যে কোনও সুবিধাজনক বিন্যাসে দুটি স্ট্রিং লাগে এবং এটিকে যথাসম্ভব ওভারল্যাপ করে। এটি s
ন্যূনতম দৈর্ঘ্যের একটি স্ট্রিং এমনভাবে ফিরে আসে যে উভয় ইনপুট স্ট্রিংগুলি সাবস্ট্রিং হয় s
। অতিরিক্তভাবে, উভয় স্ট্রিংয়ের সূচনা এবং শেষ সূচকগুলি চিহ্নিত করে এমন কিছু আউটপুট ফিরে আসে।
উদাহরণ: (সঠিক আইও-ফর্ম্যাটটি আপনার উপর নির্ভর করে)
compress("abcd", "deab") -> "deabcd" ((2,5),(0,3))
compress("abcd", "bc") -> "abcd" ((0,3),(1,2))
compress("abc", "def") -> "abcdef" ((0,2),(3,5)) or "defabc" ((3,5),(0,2))
decompress
decompress
এর বিপরীত কার্যটি গণনা করে compress
, এটি একটি স্ট্রিং এবং দুটি সূচনা এবং শেষ সূচক দেওয়া হয় (যে ফর্ম্যাটটিতে তারা আপনার দ্বারা ফিরানো হয় compress
), দুটি মূল স্ট্রিং ফিরিয়ে দিন return আপনার কেবল বৈধ ইনপুটগুলি পরিচালনা করতে হবে। নিম্নলিখিত সমতা সব স্ট্রিং জন্য রাখা উচিত s1
, s2
:
(s1, s2) == decompress (compress (s1, s2))
উদাহরণ: ( উদাহরণগুলির বিপরীতে compress
)
decompress "deabcd" ((2,5),(0,3)) -> "abcd" "deab"
decompress "abcd" ((0,3),(1,2)) -> "abcd" "bc"
decompress "abcdef" ((0,2),(3,5)) -> "abc" "def"
or (whichever version your "compress" generates)
decompress "defabc" ((3,5),(0,2)) -> "abc" "def"
স্কোরিং
আপনার স্কোর কল করে ফিরে আসা স্ট্রিংয়ের আকার compress("<code of compress>", "<code of decompress>")
। এটি কোড-গল্ফ হিসাবে একটি কম স্কোর ভাল।
উদাহরণ:
কোড ধরে জন্য আপনার ফাংশন compress
হয় c=abcd
এবং কোড decompress
হল d=efghi
। তারপরে compress("c=abcd", "d=efghi")
ফলন হয় "c=abcd=efghi"
(এবং সূচকগুলি, তবে সেগুলি স্কোরিংকে প্রভাবিত করে না) সুতরাং স্কোরটি length "c=abcd=efghi" = 12
।
অতিরিক্ত বিধি
- এই চ্যালেঞ্জের চেতনায় আপনার
compress
এবং কমপক্ষে একটি চরিত্রেরdecompress
ওভারল্যাপ হওয়া উচিত । আপনি একটি মন্তব্য যুক্ত করে এই তুচ্ছভাবে অর্জন করতে পারেন, তবে নোট করুন যে এটি করা আপনার স্কোর বাড়িয়ে তুলবে এবং সহজাতভাবে ওভারল্যাপিং কোড ব্যবহার করে সংক্ষিপ্ত সমাধান হতে পারে। compress
এবং যেdecompress
কোনও মুদ্রণযোগ্য ASCII অক্ষর পাশাপাশি আপনি সংজ্ঞায়িত করতেcompress
এবং ব্যবহার করেছেন এমন সমস্ত অক্ষর যুক্ত স্ট্রিংগুলি পরিচালনা করতে সক্ষম হওয়া উচিতdecompress
।- সূচকগুলি শূন্য বা এক-সূচকযুক্ত হতে পারে।
- আপনার প্রোগ্রাম বা ফাংশনগুলির আসলে নামকরণ করতে হবে না
compress
এবংdecompress
।