সি ++, 205 179 বাইট
int main(){};static int c=1;
#define v(x) A##x
#define u(x) v(x)
#define z u(__LINE__)
#include <cstdio>
class z{public:z(){++c;};~z(){if(c){printf("%d %o %x",--c,c,c);c=0;}}}z;//
(কোনও পূর্ববর্তী নিউলাইন নেই - অনুলিপি করা হলে অনুলিপিটির প্রথম লাইন এবং মূলের শেষ লাইনটি মিলবে)
মূলত, এটি স্ট্যাটিক ভেরিয়েবলগুলির ক্রম তৈরি করে কাজ করে যা, নির্মাণের পরে, একটি গ্লোবাল ভেরিয়েবল কাউন্টারকে বৃদ্ধি করে। তারপরে, ধ্বংসের সময়, যদি কাউন্টার 0 না হয় তবে এটি তার সমস্ত আউটপুট করে এবং কাউন্টারটিকে শূন্যে সেট করে।
কোনও নাম বিবাদ সহ ভেরিয়েবলের ক্রম সংজ্ঞায়িত করার জন্য, আমরা ম্যাক্রোটিকে নীচে ব্যাখ্যা করা ব্যবহার করেছি:
#define v(x) A##x //This concatenates the string "A" with the input x.
#define u(x) v(x) //This slows down the preprocessor so it expands __LINE__ rather than yielding A__LINE__ as v(__LINE__) would do.
#define z u(__LINE__)//Gives a name which is unique to each line.
যা কিছুটা স্ট্রিং প্রসেসরের কুইর্কের উপর নির্ভর করে। আমরা zক্লাস / ভেরিয়েবলগুলি সংজ্ঞায়িত করতে বহুবার ব্যবহার করি যা পৃথক লাইনে অনুলিপি করা হলে একে অপরের সাথে বিরোধের সৃষ্টি করবে না। তদুপরি, সংজ্ঞাগুলি যা একবারেই ঘটতে হবে তা প্রথম লাইনে স্থাপন করা হয়েছে, যা কোডটির অনুলিপিগুলিতে মন্তব্য করা হয়েছে। #defineএবং #includeবিবৃতি পরোয়া করি না যে, তারা বার বার পেতে, তাই কোন বিশেষ হ্যান্ডলিং প্রয়োজন।
এই কোডটি বিবৃতিতে অপরিজ্ঞাত আচরণের বৈশিষ্ট্যও দেখায়:
printf("%d %o %x",--c,c,c)
যেহেতু কোনও সিকোয়েন্স পয়েন্ট নেই, তবে সি সংশোধিত এবং অ্যাক্সেস করা হয়েছে। এলএলভিএম 6.0 একটি সতর্কতা দেয়, তবে এটি পছন্দসই হিসাবে সংকলন করে - যা --cআগে মূল্যায়ন করে c। একজন, দুটি বাইট ব্যয়ে, --c;আউটপুটগুলির আগে বিবৃতি যুক্ত করতে এবং এতে পরিবর্তন --cকরতে printfপারে c, যা সতর্কতা থেকে মুক্তি পেতে পারে।
আমার ভাইয়ের পরামর্শের জন্য 26 বাইট সংরক্ষণের মাধ্যমে প্রতিস্থাপন std::coutকরা printfহয়েছে।
1 01 0x1? (উপসর্গ সহ)