পার্ল + ডাইজেস্ট :: এমডি 5, 89 বাইট
$_=q(use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex"\$_=q($_);eval");eval
টিআইও লিঙ্ক নেই কারণ ডাইজেস্ট :: এমডি 5 টিআইও তে ইনস্টল করা নেই। নোট করুন যে এর জন্য ভাষার কনফারেন্স স্তরটি 5.10 বা উচ্চতর নির্ধারণ করা প্রয়োজন ( -M5.010
; এটি পিপিসি বিধি অনুসারে বাইট জরিমানা বহন করে না।
ব্যাখ্যা
এটি আরও একটি "উত্স কোডের একটি ফাংশন মুদ্রণ করুন" চ্যালেঞ্জ, যার অর্থ এটি সর্বজনীন কুইন নির্মাতার মাধ্যমে তুচ্ছভাবে সমাধান করা যেতে পারে।
সর্বজনীন কুইন নির্মাতা
$_=q(…"\$_=q($_);eval");eval
পার্ল অনুপস্থিত আর্গুমেন্টগুলির জন্য "ডিফল্ট" ভেরিয়েবল q()
শুরু করার জন্য আমরা স্ট্রিং নোটেশন (যা নীড়গুলি) $_
ব্যবহার করি। তারপরে আমরা eval
একটি অনুপস্থিত যুক্তি দিয়েছিলাম, যাতে জগতের ভিতরে থাকা স্ট্রিংটি q()
মূল্যায়ন হয়।
স্ট্রিংয়ের ভিতরে থাকা স্ট্রিংটি q()
পুরো প্রোগ্রামটি কীভাবে তৈরি করা যায় তার একটি বর্ণনা; আমরা বাকী প্রোগ্রামটি অক্ষরে অক্ষরে নির্দিষ্ট করে রাখি, তারপরে $_
পুরো স্ট্রিংটির অভ্যন্তরের পরিবর্তে একটি অবিচ্ছিন্ন ব্যবহার করি ।
কৌশলটি পুরো প্রোগ্রামের উত্সে অভিন্ন সামগ্রী সহ একটি স্ট্রিং তৈরি করে; আমরা একটি কুইন উত্পাদন করতে এটি মুদ্রণ করতে পারে। আমরা সর্বদা এটিতে অন্যান্য জিনিসও করতে পারি, যদিও, সার্বজনীন কুইন নির্মাণকারী তৈরি করে।
প্রোগ্রাম বাকি
use Digest::MD5 md5_hex;say"MD5 sum of my source is: ",md5_hex
খুব সাধারণ: একটি এমডি 5 বিল্টিন আমদানি করুন, তারপরে প্রশ্নে নির্দিষ্ট করা স্ট্রিংটি মুদ্রণ করুন (এটি সংকোচনের পক্ষে মূল্যহীন নয়, আমি বিশ্বাস করি পার্লে ডেকম্প্রেসর কেবল আক্ষরিকভাবে স্ট্রিংকে উল্লেখ করার চেয়ে আরও বেশি জায়গা গ্রহণ করবে), এবং MD5 বিল্টিন ব্যবহার করুন স্ট্রিংটি আমরা সর্বজনীন কুইন কনস্ট্রাক্টরের মাধ্যমে পেয়েছি।