[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
এটি স্ট্যাকের মধ্যে এখনও ছিল যা মুদ্রণ করেছে (যা আমরা একেবারে প্রথমদিকে নকল করেছি)।
এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা জায়গা, ট্যাব এবং নতুন লাইনের সাহায্যে)।