}0
--@2
@2/\=0MB
}0@1\/
&0/\>0!!
--
@1
00@0
--/\=0
\\@0&0
মার্বেলাস একটি 8 বিট ভাষা যা কেবলমাত্র রুবে গোল্ডবার্গের মতো মেশিনে মার্বেলগুলির দ্বারা প্রতিনিধিত্ব করা হয়, সুতরাং এটি খুব সহজ ছিল না। এই পদ্ধতিরটি নিম্নলিখিত সিউডো-কোডের সমান equivalent
function recursiveFunction(int i)
{
for(int j = i*512; j > 0; j--)
{
recursiveFunction(i - 1);
}
}
যেহেতু সর্বাধিক মান 256, (মার্বেলাস প্রোগ্রামে 0 দ্বারা প্রতিনিধিত্ব করা হয়েছে, যা বিভিন্ন স্থানে বিভিন্নভাবে পরিচালিত হয়) রিকার্স ফাংশন (1) এমন এক মোট বলা হবে 256!*512^256
যা প্রায় সমান 10^1200
, মহাবিশ্বকে বহন করার পক্ষে যথেষ্ট যথেষ্ট।
মার্বেলসের খুব দ্রুত দোভাষী নেই, মনে হয় এটি 10^11
প্রতিবছর এই ফাংশনটির কলগুলি সম্পর্কে চালাতে পারে যার অর্থ আমরা বছরের একটি রানটাইম খুঁজছি 10^1189
।
মার্বেলাস বোর্ডের আরও ব্যাখ্যা
00@0
--/\=0
\\@0&0
00
হেক্সাডেসিমাল (তাই 0) এ উপস্থাপন করা একটি ভাষা আক্ষরিক (বা একটি মার্বেল)। এই মার্বেলটি নীচে নেমে আসে --
, যা কোনও মার্বেলকে 1 দ্বারা কমানো করে (00 টি মোড়ানো এবং এফএফ বা 255 দশকে পরিণত হয়)। এখন মার্বেলটির সাথে মান এফএফ নীচে নেমে আসে \\
যা একে নীচে ডানদিকে একটি কলামকে সরিয়ে দেয় @0
। এটি একটি পোর্টাল এবং অন্যান্য @0
ডিভাইসে মার্বেলটিকে টেলিপোর্ট করে । সেখানে, /\
ডিভাইসে মার্বেল অবতরণ করেছে , যা একটি সদৃশ, এটি মার্বেলের একটি অনুলিপি --
তার বাম দিকে রাখে (এই মার্বেলটি পোর্টালগুলির মধ্যে লুপিং বজায় রাখবে এবং প্রতিটি লুপে হ্রাস পাবে) এবং =0
তার ডানদিকে একটি।=0
মার্বেলকে মান শূন্যের সাথে তুলনা করে এবং মার্বেল পড়ার গর্তকে সমান করে দেয় এবং এটি না হলে ডানদিকে ঠেলে দেয়। যদি মার্বেলটির মান 0 থাকে তবে এটি &0
একটি সিঙ্কনাইজার, যার পরে আমি আরও ব্যাখ্যা করব on
সব মিলিয়ে, এটি কেবল 0 লুপের 0 টি মার্বেল দিয়ে শুরু হয় এবং এটি আবার 0 পর্যন্ত পৌঁছা অবধি হ্রাস করে, এটি এই 0 মান মার্বেলটিকে একটি সিঙ্ক্রোনাইজারে রাখে এবং একই সাথে লুপিং চালিয়ে যায়।
}0@1
&0/\>0!!
--
@1
}0
প্রোগ্রামটি কল করার সময় প্রাথমিকভাবে নবম (বেস 0) কমান্ড লাইন ইনপুটটি একটি ইনপুট ডিভাইস হয়, যা প্রতিটি }n
ডিভাইসে রাখে। আপনি যদি এই প্রোগ্রামটি কমান্ড লাইন ইনপুট 2 দিয়ে কল করেন তবে একটি 02 মান মার্বেল এটি প্রতিস্থাপন করবে }0
। এই মার্বেলটি তখন &0
ডিভাইসে নেমে আসে , অন্য একটি সিঙ্ক্রোনাইজার, &n
সিঙ্ক্রোনাইজাররা মার্বেলগুলি ধরে রাখে যতক্ষণ না অন্য সমস্ত সম্পর্কিত ফাইল &n
হয়। মার্বেলটি তখন হ'ল হ্রাস পেয়েছে, টেলিফোর্ড হয়েছে এবং পূর্বে বর্ণিত লুপের মতো নকল হয়ে গেছে। ডান অনুলিপিটি পরে শূন্যের সাথে বৈষম্যের জন্য পরীক্ষা করুন ( >0
) যদি এটি 0 না হয় তবে এটি পড়ে। যদি এটি 0 হয়, এটি ডানদিকে ঠেলাঠেলি করে এবং এটি অবতরণ করে !!
, যা বোর্ডটি সমাপ্ত করে।
ঠিক আছে, এখন পর্যন্ত আমাদের কাছে একটি লুপ রয়েছে যা ধারাবাহিকভাবে 255 থেকে 0 পর্যন্ত নীচে গণনা করা হয় এবং আরেকটি অনুরূপ লুপ (কমান্ড লাইন ইনপুট দ্বারা খাওয়ানো) প্রতিবার আঘাত করলে একবার এটি চালায় 0 যখন এই দ্বিতীয় লুপটি n বার চলেছে (সর্বোচ্চ 256 হচ্ছে) ) প্রোগ্রামটি শেষ হয়। সুতরাং এটি লুপের সর্বোচ্চ 65536 রান। মহাবিশ্বকে ছাপিয়ে যাওয়ার পক্ষে যথেষ্ট নয়।
}0
--@2
@2/\=0MB
এটি পরিচিত হওয়া শুরু করবে, ইনপুটটি একবারে হ্রাস পেয়েছে, তারপরে এই মানটি চারপাশে লুপ হয়ে যায় এবং অনুলিপি করা হয় (নোট করুন যে মার্বেলটি কেবল একবার লুপের প্রতিটি রান নয়, একবারেই হ্রাস পেয়েছে)। এটি তখন 0 এর সমতার জন্য পরীক্ষা করা হয় এবং যদি এটি শূন্য না হয় MB
। এটি মার্বেলাসের একটি ফাংশন, প্রতিটি ফাইলের মধ্যে বেশ কয়েকটি বোর্ড থাকতে পারে এবং প্রতিটি বোর্ডই একটি ফাংশন, প্রতিটি ফাংশন গ্রিডের আগে রেখে নামকরণ করতে হয় :[name]
। ফাইলের প্রথম ফাংশন ব্যতীত প্রতিটি ফাংশন, যার একটি মানক নাম রয়েছে: এমবি। সুতরাং এই লুপটি ধারাবাহিকভাবে মূল বোর্ডকে আবার কল করে n - 1
যেখানে এন তেহ মান যার সাথে তেহ ফাংশনের এই উদাহরণটি বলা হয়েছিল।
তাহলে কেন n*512
?
ঠিক আছে, প্রথম লুপটি 4 টি টিকিটে চালিত হয় (এবং 256 বার) এবং দ্বিতীয় লুপটি বোর্ড সমাপ্তির আগে এন বার চলে। এর অর্থ বোর্ড প্রায় n*4*256
টিক্সের জন্য চালায় । শেষ লুপটি (যা পুনরাবৃত্তির ফাংশন কলিং করে) কমপ্যাক্টর এবং 2 টি টিকে চালিত হয় যার অর্থ এটি ফাংশনটির n*4*256/2 = n*512
সময়গুলিতে কল করতে পরিচালিত করে ।
আপনি কোন চিহ্নগুলি উল্লেখ করেন নি?
\/
একটি ট্র্যাশ বিন, যা বোর্ড থেকে মার্বেলগুলি সরিয়ে দেয়, এটি নিশ্চিত করে যে বিচ্ছিন্ন মার্বেলগুলি অন্যান্য মার্বেলগুলিতে কোনও বৃত্তাকার লুপিংয়ের সাথে হস্তক্ষেপ না করে এবং প্রোগ্রামটি শেষ হতে বাধা দেয়।
বোনাস
যেহেতু মার্বেল বোর্ডের নীচে পড়ে মার্বেলগুলি এসটিডিওআউটে আউটপুট পায়, তাই এই প্রোগ্রামটি চলাকালীন ASCII অক্ষরের আধিক্য মুদ্রণ করে।