কোড গল্ফিংয়ের জন্য বরং উপযুক্ত বলে মনে হচ্ছে এমন একটি কম পরিচিত প্রোগ্রামিং দৃষ্টান্ত হ'ল ওভারল্যাপিং ওরিয়েন্টেড প্রোগ্রামিং (ওওপি) *। আংশিকভাবে অভিন্ন কোড লেখার সময়, অনেকগুলি বাইটগুলি কেবল অভিন্ন অংশগুলিকে ওভারল্যাপ করে এবং দুটি মূল কোড লাইন শুরু হয় এমন কোনও উপায়ে স্মরণ করে সংরক্ষণ করা যায়। আপনার কাজটি দুটি ওভারল্যাপিং প্রোগ্রাম বা ফাংশন 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।