से अधिक या उससे कम 2 संख्याओं की तुलना करें, मैं असमानता के साथ दो संख्याओं की तुलना कैसे कर सकता हूं? (से अधिक या कम से कम)ब्रेनफक
मैं एकल अंक तुलना करने के लिए उदाहरण
1 2
5 3
9 2
आदि के लिए चाहते हैं
से अधिक या उससे कम 2 संख्याओं की तुलना करें, मैं असमानता के साथ दो संख्याओं की तुलना कैसे कर सकता हूं? (से अधिक या कम से कम)ब्रेनफक
मैं एकल अंक तुलना करने के लिए उदाहरण
1 2
5 3
9 2
आदि के लिए चाहते हैं
एक बार जब आप जानते हैं कि कौन दो नंबर आपको चाहिए या दोनों घटती बीच की दूरी है उन्हें एक ही लूप पुनरावृत्ति में और फिर शून्य होने के लिए दोनों की जांच करें: आप समझेंगे कि कौन सा छोटा है।
उदाहरण के लिए:
+++++ > +++ < [->-< check is first is zero, then second]
(यह केवल आपके एक संकेत दे रहा है, तो आप बराबर संख्या और इसी तरह के मुद्दों के बारे में देखभाल करने के लिए होगा
ऐसा कोई बात बीएफ में मौजूद है >
और।। <
बीएफ में क्रमश: सही करने के लिए और बाईं ओर सूचक ले जाएँ।
जहां तक मैं बाहर कर सकता हूं, ओपी ऑपरेटर की कार्यक्षमता को बीएफ में कार्यान्वित करना चाहता है। – ArjunShankar
मैं इस बारे में भी सोच रहा था, और जब तक मुझे यकीन है कि यह सबसे अच्छा समाधान नहीं है हूँ, कम से कम यह जिनमें से सवाल का जवाब कर सकते हैं संख्या बड़ी है =)
कार्यक्रम दो अक्षर के लिए पूछता है, आउटपुट '<' पहले छोटा होता है, तो '>' अगर यह बड़ा है, और '=' अगर वे बराबर हैं। एक char को आउटपुट करने के बाद, कार्यक्रम अतिरिक्त इनपुट मांगकर रोकता है।
+>,>,<<[>-[>>>]<[>>-[>++++++++++[->++++++<]>.,]++++++++++[->++++++<]>+.,]<-[>>>]<<[>>>++++++++++[->++++++<]>++.,]<<<]
कुछ हद तक साफ:
+ init (0) to 1
>, read (1)
>, read (2)
<<[ loop forever
>-[>>>] decrement (1) going to (4) if (1) != 0
<[ goto (0) == 1 if (1) reached 0 (otherwise goto (3))
>>-[>++++++++++[->++++++<]>.,] decrement (2) printing lessthan if larger than 0
++++++++++[->++++++<]>+., if (2) == 0 print '='
]
<-[>>>] decrement (2) going to (5) if (2) != 0
<<[ goto (0) == 1 if (2) reached 0 (otherwise goto (3))
>>>++++++++++[->++++++<]>++., print largerthan since (2) reached 0 first
]
<<< goto(0)
]
इसका कारण यह है अगर आप पर्याप्त बुद्धिमान हैं, तो आप बड़ा programs.It के दशक में एक ही कोड का उपयोग कर सकते दो numbers.Why तुलना करने के लिए सबसे अच्छा तरीका है अत्यधिक पोर्टेबल।
मान लें हम दो संख्याओं क, ख है। हमारे पास दो ब्लॉक हैं: यदि (ए> = बी) और अन्य, आशा है कि यह पर्याप्त है।
0 1 0 a b 0
इस तरह की सरणी बनाएं। और को (4) यानी बात करने के लिए बिंदु एक
+>+< This is for managing if a=0 and b=0
[->-[>]<<] This is a magic loop. if a is the one which
reaches 0 first (a<b),then pointer will be at(4).
Else it will be at (3)
<[-
// BLOCK (a>=b)
//You are at (2) and do whatever you want and come back to (2).
//Its a must
]
<[-<
// BLOCK(a<b)
//You are at (1) and do whatever you want and come back to (1).
//Its a must
]
यह निम्न प्रोग्राम कोड दोनों कोड ब्लॉक में (1) आप आगे क्या कर सकते हैं कि सूचक मानते हुए कोडिंग होगा खत्म हो जाएगा के रूप में प्रभावित नहीं करेगा पहुंच (1)
कृपया यदि आप कोड कॉपी करते हैं तो दस्तावेज़ीकरण को हटा दें। क्योंकि कोड में < जैसे कुछ वैध brainfuck प्रतीक शामिल हैं। , आदि
यह निम्न प्रोग्राम कोड को प्रभावित नहीं करेगा क्योंकि कोड ब्लॉक दोनों (1) में समाप्त हो जाएंगे, आप यह मान सकते हैं कि सूचक पहुंच जाएगा (1) –
क्या आप जानते थे कि आप हमेशा जानकारी जोड़ने के लिए अपनी पोस्ट संपादित कर सकते हैं, बस अपनी पोस्ट के अंत में "संपादन" लिंक बटन का उपयोग करें। मैं यह भी सुझाव देता हूं कि आप हमारे अक्सर पूछे जाने वाले प्रश्न देखें: http://stackoverflow.com/faq :) – ForceMagic
अपने "जादू पाश" में, '[>]' वास्तव में एक अनंत लूप है। यह '[> [-]]' समाप्त होना चाहिए। – Timtech
को देखते हुए दो नंबर ए और बी, निम्नलिखित कोड एक प्रिंट होगा अगर एक बी, बी से अधिक है बी ए और सी से अधिक है अगर दोनों बराबर हैं।
>>>>>>>>>++++++[>+++++++++++<-]>[>+>+>+<<<-]>+>-> <<<<<<<<<<<,>,< [->-<[>]<<]>>>[>>]>>>>>>>>.
बीएफ इस तरह के एक ऑपरेटर भी नहीं है। –
@RafeKettler यह स्पष्ट है कि बीएफ में ऐसा ऑपरेटर नहीं है और इस तरह की कार्यक्षमता को बीएफ में लागू करने की आवश्यकता है। यह इस सवाल का पूरा बिंदु है और यह भी बीएफ का पूरा बिंदु है! –