?::`}:("(!@
perfect:
{:{:;%"}
+puts; "
}zero: "
}else{(:
"negI" _~
""""""{{{"!@
লাতিন অক্ষরগুলি perfect puts zero else neg I
আসলে কেবল মন্তব্য *।
অর্থাত্ যদি ইনপুট নিখুঁত হয় তবে একটি 0
মুদ্রিত হয়, অন্যথায় -1
।
এটি অনলাইন চেষ্টা করুন!
* সুতরাং এটি বা এই কাজটিও ...
?::`}:("(!@ ?::`}:("(!@
: BEWARE :
{:{:;%"} {:{:;%"}
+ ; " +LAIR; "
} : " } OF : "
} {(: }MINO{(:
" " _~ "TAUR" _~
""""""{{{"!@ """"""{{{"!@
কিভাবে?
একটি ইনপুট হিসাবে ধনাত্মক পূর্ণসংখ্যার গ্রহণ করে n
এবং -n
সহায়ক স্ট্যাকের উপর একটি সংযোজক পরিবর্তনশীল রাখে , তারপরে প্রতিটি পূর্ণসংখ্যার জন্য n-1
নিচ থেকে নীচে পর্যন্ত একটি বিভাজ্য পরীক্ষা সঞ্চালন করে এবং সংযোজককে 1
বিভক্ত n
করে এমন কোনও যোগ করে। একবার এটি সম্পূর্ণ হয়ে গেলে যদি সঞ্চালক ভেরিয়েবল অ-শূন্য -1
হয় আউটপুট হয়, অন্যথায় একটি 0
হয়।
?::`}:(
শুধুমাত্র মৃত্যুদন্ড শুরুতে একবার চালাতেই:
?::`}:( Main,Aux
? - take an integer from STDIN and place it onto Main [[n],[]]
: - duplicate top of Main [[n,n],[]]
: - duplicate top of Main [[n,n,n],[]]
` - negate top of Main [[n,n,-n],[]]
} - place top of Main onto Aux [[n,n],[-n]]
: - duplicate top of Main [[n,n,n],[-n]]
( - decrement top of Main [[n,n,n-1],[-n]]
পরবর্তী নির্দেশনাটি, "
একটি অপশন নয়, তবে আমাদের তিনটি প্রতিবেশী নির্দেশ রয়েছে সুতরাং আমরা মেইনের শীর্ষে মান অনুসারে শাখা করি, শূন্য আমাদের এগিয়ে নিয়ে যায়, যখন শূন্য নয় আমাদের ডানে নিয়ে যায়।
যদি ইনপুটটি থাকে তবে 1
আমরা এগিয়ে যাই কারণ মেইনের শীর্ষটি শূন্য:
(!@ Main,Aux
( - decrement top of Main [[1,1,-1],[-1]]
! - print top of Main, a -1
@ - exit the labyrinth
তবে যদি ইনপুটটি 1
আমাদের ডানদিকে ঘোরার চেয়ে বেশি হয় কারণ মেইনের শীর্ষটি শূন্য নয়:
:} Main,Aux
: - duplicate top of Main [[n,n,n-1,n-1],[-n]]
} - place top of Main onto Aux [[n,n,n-1],[-n,n-1]]
এই মুহুর্তে আমাদের একটি তিন-প্রতিবেশী শাখা রয়েছে, তবে আমরা জানি n-1
যে শূন্য নয়, তাই আমরা ডানদিকে ঘুরলাম ...
"% Main,Aux
" - no-op [[n,n,n-1],[-n,n-1]]
% - place modulo result onto Main [[n,n%(n-1)],[-n,n-1]]
- ...i.e we've got our first divisibility indicator n%(n-1), an
- accumulator, a=-n, and our potential divisor p=n-1:
- [[n,n%(n-1)],[a,p]]
আমরা এখন আরও তিনটি প্রতিবেশী শাখায় রয়েছি %
।
যদি ফলাফলটি %
শূন্যহীন হয় তবে আমরা আমাদের সম্ভাব্য বিভাজক হ্রাস করতে চলে যাই p=p-1
, এবং সঞ্চালকটিকে a
যেমন রাখি তেমনি:
;:{(:""}" Main,Aux
; - drop top of Main [[n],[a,p]]
: - duplicate top of Main [[n,n],[a,p]]
{ - place top of Aux onto Main [[n,n,p],[a]]
- three-neighbour branch but n-1 is non-zero so we turn left
( - decrement top of Main [[n,n,p-1],[a]]
: - duplicate top of Main [[n,n,p-1,p-1],[a]]
"" - no-ops [[n,n,p-1,p-1],[a]]
} - place top of Main onto Aux [[n,n,p-1],[a,p-1]]
" - no-op [[n,n,p-1],[a,p-1]]
% - place modulo result onto Main [[n,n%(p-1)],[a,p-1]]
- ...and we branch again according to the divisibility
- of n by our new potential divisor, p-1
... তবে যদি ফলাফলটি %
শূন্য হয় (কেবলমাত্র প্রথম পাসের জন্য কেবল তখনই n=2
) আমরা সরাসরি উভয় দিকে চলে যাই আমাদের সংযোজকের সাথে বিভাজক যুক্ত করে a=a+p
, এবং আমাদের সম্ভাব্য বিভাজক হ্রাস করে p=p-1
:
;:{:{+}}""""""""{(:""} Main,Aux
; - drop top of Main [[n],[a,p]]
: - duplicate top of Main [[n,n],[a,p]]
{ - place top of Aux onto Main [[n,n,p],[a]]
: - duplicate top of Main [[n,n,p,p],[a]]
{ - place top of Aux onto Main [[n,n,p,p,a],[]]
+ - perform addition [[n,n,p,a+p],[]]
} - place top of Main onto Aux [[n,n,p],[a+p]]
} - place top of Main onto Aux [[n,n],[a+p,p]]
""""""" - no-ops [[n,n],[a+p,p]]
- a branch, but n is non-zero so we turn left
" - no-op [[n,n],[a+p,p]]
{ - place top of Aux onto Main [[n,n,p],[a+p]]
- we branch, but p is non-zero so we turn right
( - decrement top of Main [[n,n,p-1],[a+p]]
: - duplicate top of Main [[n,n,p-1,p-1],[a+p]]
"" - no-ops [[n,n,p-1,p-1],[a+p]]
} - place top of Main onto Aux [[n,n,p-1],[a+p,p-1]]
এই মুহুর্তে যদি p-1
এখনও শূন্য থাকে তবে আমরা বাম দিকে ঘুরে:
"% Main,Aux
" - no-op [[n,n,p-1],[a+p,p-1]]
% - modulo [[n,n%(p-1)],[a+p,p-1]]
- ...and we branch again according to the divisibility
- of n by our new potential divisor, p-1
... তবে p-1
শূন্য হিট হলে আমরা :
গোলকধাঁধার দ্বিতীয় লাইনে সরাসরি চলে যাই (আপনি এর আগে সমস্ত নির্দেশাবলী দেখেছেন, তাই আমি তাদের বিবরণগুলি রেখে যাচ্ছি এবং কেবল তাদের প্রভাব দিচ্ছি):
:":}"":({):""}"%;:{:{+}}"""""""{{{ Main,Aux
: - [[n,n,0,0],[a,0]]
" - [[n,n,0,0],[a,0]]
- top of Main is zero so we go straight
- ...but we hit the wall and so turn around
: - [[n,n,0,0,0],[a,0]]
} - [[n,n,0,0],[a,0,0]]
- top of Main is zero so we go straight
"" - [[n,n,0,0],[a,0,0]]
: - [[n,n,0,0,0],[a,0,0]]
( - [[n,n,0,0,-1],[a,0,0]]
{ - [[n,n,0,0,-1,0],[a,0]]
- top of Main is zero so we go straight
- ...but we hit the wall and so turn around
( - [[n,n,0,0,-1,-1],[a,0]]
: - [[n,n,0,0,-1,-1,-1],[a,0]]
"" - [[n,n,0,0,-1,-1,-1],[a,0]]
} - [[n,n,0,0,-1,-1],[a,0,-1]]
- top of Main is non-zero so we turn left
" - [[n,n,0,0,-1,-1],[a,0,-1]]
% - (-1)%(-1)=0 [[n,n,0,0,0],[a,0,-1]]
; - [[n,n,0,0],[a,0,-1]]
: - [[n,n,0,0,0],[a,0,-1]]
{ - [[n,n,0,0,0,-1],[a,0]]
: - [[n,n,0,0,0,-1,-1],[a,0]]
{ - [[n,n,0,0,0,-1,-1,0],[a]]
+ - [[n,n,0,0,0,-1,-1],[a]]
} - [[n,n,0,0,0,-1],[a,-1]]
} - [[n,n,0,0,0],[a,-1,-1]]
""""""" - [[n,n,0,0,0],[a,-1,-1]]
- top of Main is zero so we go straight
{ - [[n,n,0,0,0,-1],[a,-1]]
{ - [[n,n,0,0,0,-1,-1],[a]]
{ - [[n,n,0,0,0,-1,-1,a],[]]
এখন {
এর তিনটি প্রতিবেশী নির্দেশ রয়েছে, তাই ...
... যদি a
শূন্য হয়, যা এটি নিখুঁত হবে n
, তবে আমরা সরাসরি যাব:
"!@ Main,Aux
" - [[n,n,0,0,0,-1,-1,a],[]]
- top of Main is a, which is zero, so we go straight
! - print top of Main, which is a, which is a 0
@ - exit the labyrinth
... যদি a
অ-শূন্য হয়, যা এটি নিখুঁত জন্য হবে n
, তবে আমরা বাম দিকে ফিরে যাব:
_~"!@ Main,Aux
_ - place a zero onto Main [[n,n,0,0,0,-1,-1,a,0],[]]
~ - bitwise NOT top of Main (=-1-x) [[n,n,0,0,0,-1,-1,a,-1],[]]
" - [[n,n,0,0,0,-1,-1,a,-1],[]]
- top of Main is NEGATIVE so we turn left
! - print top of Main, which is -1
@ - exit the labyrinth