আমি নিম্নলিখিত প্রোগ্রাম জুড়ে এসেছি, যা ত্রুটি বা এমনকি সতর্কতা ছাড়াই সংকলন করে:
int main(){
<:]{%>; // smile!
}
প্রোগ্রামটি কী করে এবং সেই হাসি-ভাবটি কী?
আমি নিম্নলিখিত প্রোগ্রাম জুড়ে এসেছি, যা ত্রুটি বা এমনকি সতর্কতা ছাড়াই সংকলন করে:
int main(){
<:]{%>; // smile!
}
প্রোগ্রামটি কী করে এবং সেই হাসি-ভাবটি কী?
উত্তর:
এটি একটি খালি লাম্বদা একটি ডিজিট্রাফ ছদ্মবেশ ব্যবহার করে। সাধারণ ল্যাম্বডাসের দাড়ি থাকে না।
প্রোগ্রামটি নিম্নোক্ত প্রতিনিধিত্ব করতে ডিজিট্রাফ ব্যবহার করে :
[] {};
এটি একটি ল্যাম্বডা এক্সপ্রেশন যা কিছুই করে না। সম্পর্কিত প্রতীকগুলির এই সমতুল্য রয়েছে:
<: = [
%> = }
যদিও সেগুলি আজ সাধারণভাবে বিনা পঠিত, তবুও যখন আপনার কীবোর্ডে সি ++ এর বেসিক উত্স অক্ষর সেট, যেমন গ্রাফিকালগুলি ব্যবহার করার জন্য প্রয়োজনীয় কিছু কী না থাকে তার জন্য দরকারী। অক্ষরগুলির সংমিশ্রণ যা একটি ডিজিট্রাফ তৈরি করে একটি একক টোকেন হিসাবে প্রক্রিয়া করা হয়। এর ফলে কোনও অপর্যাপ্ত-সজ্জিত কীবোর্ড বা অন্যান্য এই জাতীয় হার্ডওয়্যার বা সফ্টওয়্যার তৈরি হয়।
প্রোগ্রামটি ডিগ্রাফগুলি ব্যবহার করছে , যা কীবোর্ডগুলি (বা পাঠ্য এনকোডিংগুলি) সহ সি ++ প্রোগ্রামিংয়ের মঞ্জুরি দেয় যা সাধারণত সি ++ অক্ষর ব্যবহার না করে।
কোডটি এর সমাধান করে:
int main(){
[]{}; // smile!
}
int main(){ <:]{%>; // smile! }
এটি মূলত একটি ল্যাম্বডা এক্সপ্রেশন (ল্যাম্বডা এক্সপ্রেশনটি সি ++ 11 বৈশিষ্ট্যগুলির মধ্যে একটি) ডিগ্রাফগুলি ব্যবহার করে (উভয় ডিগ্রাফ এবং ট্রাইগ্রাফ সি ++ তে কাজ করে):
[] {};
শুধুমাত্র ডিগ্রাফগুলি ব্যবহার করে:
<:]<%};
<:]<%%>;
[:>{%>; // like my cubic hat?
[:><%};
[:><%%>;
এগুলি ত্রিগ্রাফের সাথে মিশ্রিত করা:
<:??)<%??>; // popeye
??(:>{??>; // pirate