[S S S N
_Push_0][S N
S _Duplicate][S N
S _Duplicate][T N
T S _Read_STDIN_as_character][T T T _Retrieve][S S S T S S T N
_Push_9][T S S T _Subtract][S N
S _Duplicate][N
T S S T N
_If_0_Jump_to_Label_TAB][S S S T N
_Push_1][T S S T _Subtract][S N
S _Duplicate][N
T S S N
_If_0_Jump_to_Label_NEWLINE][S S S T S T T S N
_Push_22][T S S T _Subtract][N
T S T N
_If_0_Jump_to_Label_SPACE][N
S T N
_Jump_to_Label_PRINT][N
S S S T N
_Create_Label_TAB][S S S T S S T S T N
_Push_37][N
S T N
_Jump_to_Label_PRINT][N
S S S N
_Create_Label_NEWLINE][S S S T S S S S T N
_Push_33][N
S T N
_Jump_to_Label_PRINT][N
S S T N
_Create_Label_SPACE][S S S T S S S T T S N
_Push_70][N
S S N
_Create_Label_PRINT][T N
S T _Print_as_integer]
বর্ণ S(স্থান), T(ট্যাব) এবং N(নতুন-লাইন) কেবল হাইলাইট হিসাবে যুক্ত করা হয়েছে।
[..._some_action]শুধুমাত্র ব্যাখ্যা হিসাবে যুক্ত।
70 টি স্পেস, 37 টি ট্যাব এবং 33 টি নতুন লাইন ব্যবহৃত।
সাধারণত আমি অনুক্রমে লেবেল তৈরি ব্যবহার NSSN, NSSSN, NSSTN, NSSSSN, NSSSTN, NSSTSN, NSSTTN, ইত্যাদি কিন্তু কারণ একটি সংখ্যা যেখানে বাইনারি মুদ্রণ S=0/ T=1ব্যবহার করা হয় সংখ্যা আমি আউটপুট প্রয়োজন প্রভাবিত করে, আমি লেবেল ব্যবহার করা NSSN, NSSSN, NSSTN, এবং NSSSTNপরিবর্তে, যা দিয়েছেন বাইনারি সংখ্যার সাথে প্রিন্ট করার জন্য নিখুঁত স্পেস / ট্যাবগুলি SSSTSSSSTN(৩৩; নতুন লাইনের পরিমাণ), SSSTSSTSTN(৩;; ট্যাবগুলির পরিমাণ) এবং SSSTSSSTTSN((০; স্পেসের পরিমাণ)।
সিউডো কোডে ব্যাখ্যা:
Character c = STDIN-input as character
If c is a tab:
Print 37
Else if c is a new-line:
Print 33
Else if c is a space:
Print 70
Else
Print 0
উদাহরণ রান:
ইনপুট: স্থান
Command Explanation Stack Heap STDIN STDOUT STDERR
SSSN Push 0 [0]
SNS Duplicate top (0) [0,0]
SNS Duplicate top (0) [0,0,0]
TNTS Read STDIN as character [0,0] {0:32} \n
TTT Retrieve [0,32] {0:32}
SSSTSSTN Push 9 [0,32,9] {0:32}
TSST Subtract top two (32-9) [0,23] {0:32}
SNS Duplicate top (23) [0,23,23] {0:32}
NTSSTN If 0: Jump to Label_TAB [0,23] {0:32}
SSSTN Push 1 [0,23,1] {0:32}
TSST Subtract top two (23-1) [0,22] {0:32}
SNS Duplicate top (22) [0,22,22] {0:32}
NTSSN If 0: Jump to Label_NEWLINE [0,22] {0:32}
SSSTSTTSN Push 22 [0,22,22] {0:32}
TSST Subtract top two (22-22) [0,0] {0:32}
NTSTN If 0: Jump to Label_SPACE [0] {0:32}
NSSTN Create Label_SPACE [0] {0:32}
SSSTSSSTTSN Push 70 [0,70] {0:32}
NSTN Jump to Label_PRINT [0,70] {0:32}
NSSN Create Label_PRINT [0,70] {0:32}
TNST Print as integer [0] {0:32} 70
error
প্রোগ্রামটি একটি ত্রুটি দিয়ে থামায়: প্রস্থান নির্ধারণ করা হয়নি।
এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইনের সাহায্যে)।
ইনপুট: ট্যাব
পরিবর্তে STDIN \t( 9) হবে, যা ক্ষেত্রে এটি 0প্রথম If 0চেক হবে, LABEL_TAB/ এ NSSSTNযাবে এবং 37পরিবর্তে চাপ এবং মুদ্রণ করবে ।
এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইনের সাহায্যে)।
ইনপুট: নতুন-লাইন
পরিবর্তে STDIN হবে \n( 10), 0এটি দ্বিতীয় If 0চেক এ হবে Label_NEWLINE/ এ NSSSNযাবে এবং 33পরিবর্তে চাপ এবং মুদ্রণ করবে ।
এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইনের সাহায্যে)।
ইনপুট: অন্য কিছু
অন্য কোনও ইনপুট-চরিত্র NSTNতৃতীয় If 0চেকের পরে (লেবেল_প্রিন্টে ঝাঁপুন) করবে , 0এটি স্ট্যাকের মধ্যে এখনও ছিল যা মুদ্রণ করেছে (যা আমরা একেবারে প্রথমদিকে নকল করেছি)।
এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইনের সাহায্যে)।