যন্ত্র
একটি বিলিয়ার্ড-বল টাইপ মেশিনটি কেবলমাত্র চিহ্নগুলির \
_
/
সাথে উপরের এবং নিম্ন-অক্ষরের অক্ষর, স্পেস এবং সংখ্যার সমন্বয়ে গঠিত 1
।
\
এবং /
র্যাম্পগুলি উপরের দিক থেকে আসা একটি বল যথাক্রমে ডান বা বাম দিকে প্রতিবিম্বিত হবে। উভয় র্যাম্পের জন্য, যদি কোনও বল উভয় দিক থেকে আসে তবে এটি নীচের দিকে প্রতিবিম্বিত হবে।
_
একটি যুক্তিযুক্ত উপাদান। এটি দ্বারা সম্পাদিত যুক্তিটি কম্পিউটারের সর্বাধিক অ-বিলিয়ার্ড অংশ। প্রথমত, বাম বা ডান দিক থেকে আসা একটি বল একই দিকে অবিরত থাকে। উপর থেকে আসা একটি বল থামানো হবে। তারপরে, এর সম্পাদন শেষ হওয়ার পরে (নীচে মেশিনটি চালানো দেখুন), যদি তার উপরে ক্রসিং / ল্যান্ডিংয়ের সংখ্যা ইতিবাচক এমনকি সংখ্যার হয়, তবে উপাদানটির নীচ থেকে একটি বল ছেড়ে দেওয়া হবে।
একটি স্থান কিছুই করে না। কোনও দিক থেকে আসা কোনও বল মহাকর্ষের কারণে সরাসরি নীচে নেমে আসে।
ছোট হাতের অক্ষরগুলি ইনপুট হয়। সমস্ত ইনপুট হয় একক 1 বা 0 হবে।
বড় হাতের অক্ষর আউটপুট হয়। আউটপুট করা নম্বরটি হ'ল বিলিয়ার্ড বলগুলির সংখ্যা যা তার অবস্থানটিতে আঘাত করে।
নম্বরটি সেই স্থানে 1
একটি অতিরিক্ত বিলিয়ার্ড-বল প্রকাশ করে। এটি একটি যৌক্তিক 1 প্রতিনিধিত্ব করে।
সমস্ত অক্ষর ছাড়াও \_/
কোনও দিক থেকে যে কোনও বল এসেছিল মহাকর্ষের কারণে সরাসরি নীচে পড়তে পারে।
বলগুলি কখনও একত্রিত হয় না, বিভক্ত হয় না বা সংঘর্ষ হয় না। এগুলি কেবল তখনই তৈরি করা হয় যখন কোনও ইনপুট, ক _
, বা এ থেকে মুক্তি দেওয়া হয় 1
। এগুলি কেবল তখনই নষ্ট হয়ে যায় যখন তারা সরাসরি নীচে নেমে যায় _
।
উদাহরণ মেশিন-
1 a
\_/ b
\_/
\/
/\ /
_ _
A B
কোনও মেশিনে কখনই কোনও ফাঁকা লাইন থাকবে না, তবে _
এটি ফাঁকা রেখা আছে তা দেখাতে পারে।
মেশিন চালাচ্ছি
একটি মেশিন স্তর বা সারিগুলিতে চালিত হয়। দ্বিতীয় স্তরে কিছু হওয়ার আগে উপরের স্তরের সমস্ত বিলিয়ার্ড-বল চলাচল করা হয়।
যন্ত্র
ab
\_A
C
নিম্নলিখিত হিসাবে চালানো হয়:
প্রথমত, এটি a
ফর্মটিতে ইনপুটটির জন্য অনুরোধ করে a:
। এরপরে ব্যবহারকারী 1 বা 0 ইনপুট দেবে (প্রবেশের পরে)। এটি ইনপুটটির জন্য এটি পুনরাবৃত্তি করে b
। এটি প্রথম স্তরটির শেষ। আমি ধরে নিতে চলেছি যে ব্যবহারকারী উভয় ইনপুট জন্য 1 টি প্রবেশ করিয়েছে।
তখনই প্রথম বল (থেকে পথ খুঁজে ট্রেস a
), যা বরাবর যায় \
জুড়ে _
অনুবাদ করে, এবং A
, এবং অধীন ঘটনাস্থলে নিচে পড়ে A
। এরপরে এটি দ্বিতীয় বলের (থেকে b
) পথ খুঁজে বের করে , যা সরাসরি নীচে গিয়ে _
শেষ হয়। এটি দ্বিতীয় স্তরের শেষ।
এখন, তৃতীয় স্তরটির আগে, যেহেতু _
এর দুটি বল পেরিয়ে গেছে, এটি একটি বল ছেড়ে দেয়। আউটপুটটির A
উপরে একটি বল ক্রস হয়েছে, সুতরাং এটি আউটপুট করে A:1
।
তৃতীয় স্তরটির জন্য, এটি প্রথম বলের (টি থেকে _
) সন্ধান করে, যা যদিও যায় C
এবং সরাসরি নীচে পড়ে। দ্বিতীয় বল (যা দিয়ে পড়েছিল A
)ও সরাসরি নীচে পড়ে।
এখন, চতুর্থ স্তরটির আগে, যেহেতু আউটপুটটির C
উপরে একটি বল ভ্রমণ ছিল, এটি আউটপুট করে C:1
।
যেহেতু চতুর্থ স্তরটি ফাঁকা, প্রোগ্রামটি সমাপ্ত হয়।
মোট ফলাফল দেখতে হবে
a:1 (the user entered the one)
b:1 (same here)
A:1
C:1
লক্ষ
আপনার লক্ষ্যটি এসটিডিআইএন থেকে কোনও মেশিন নিয়ে যাওয়া এবং এসডিডিআউটে প্রয়োজনীয় ইনপুট এবং প্রিন্টিং আউটপুট গ্রহণ করে তা অনুকরণ করা। আপনার প্রোগ্রামের ইনপুটটির প্রথম অংশটি চালানোর জন্য মেশিনে থাকবে এবং তার পরে একটি ফাঁকা রেখা থাকবে। যে কোনও ইনপুট চিঠিগুলির মুখোমুখি হওয়ার কারণে আপনার প্রোগ্রামটি কোনও কোলন অনুসরণকারী ইনপুট নামের আকারে ইনপুটটির অনুরোধ জানাতে পারে। যে কোনও আউটপুট আউটপুট নামের আকারে প্রদর্শিত হবে, তার পরে একটি কোলন থাকবে, তারপরে সেই স্পটটি পেরিয়ে বলের সংখ্যা হবে।
এটি গল্ফ।
উদাহরণ
একটি তারের পারাপার
ab
\/
AB
একটি এক্সওআর গেট
ab1
\_/
C
একটি পূর্ণ সংযোজন
1 a
\_/ b
\_/
\/
/\
_ __/
\_/
\/c
\\_/
_S1
\ \/
__/
/
_
\__
C
\_/
?