मैं पाइथन के लिए एक सापेक्ष शुरुआत करने वाला हूं, और अपने कौशल को मजबूत करने के लिए, मैं Brainfu**
भाषा के लिए एक कंपाइलर लिखने का प्रयास कर रहा हूं। ब्रैकेट []
लूप को छोड़कर सभी अच्छा है। कार्यक्रम मैं अपने कोड का परीक्षण करने का उपयोग कर रहा >++[>++<-]>+
है, जब मैं इस चलाने जो 5. करने के लिए सेल 2 स्थापित करना चाहिए, हालांकि, यह इस करता है:पायथन ब्रेनफ *** - लूप्स पर बग
0 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 0 >
1 [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 +
2 [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 +
3 [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 [
4 [0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 0 >
5 [0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 +
6 [0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 +
7 [0, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 <
8 [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 -
3 [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 1 [
10 [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 2 >
11 [0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 3 +
[0, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
(लाइनों चरण में स्वरूपित हैं, तो सूची उस बिंदु पर, तो यह है कि वह पर ध्यान केंद्रित है और फिर चरित्र यह चल रहा है।)
मेरे वर्तमान कोड
def generateArray(code):
array = []
for i in range(0,20):
array.append(0);
return array
def run(code):
print code
data = generateArray(code)
chars = list(code)
pointer = 0
for i in range(0, len(chars)):
current = chars[i]
if(current == "+"):
data[pointer] += 1
if(current == ">"):
pointer += 1
if(current == "-"):
data[pointer] -= 1
if(current == "<"):
pointer -= 1
if(current == "."):
print str(chr(data[pointer]))
if(current == ","):
given = raw_input()
data[pointer] = ord(given)
if(current == "["):
posOfEnd = chars[i:len(chars)].index("]")
if(data[pointer] == 0):
i += posOfEnd+1
if(current == "]"):
posOfBegin = len(chars) - 1 - chars[::-1].index('[')
i = posOfBegin
print i, data, data[pointer], chars[i]
return data
print run(">++[>++<-]>+")
posOfEnd
पता लगाने के लिए जहां अगले ब्रैकेट है कोशिश कर रहा है, और posOfBegin
की कोशिश कर रही है पता लगाएँ कि पूर्व कहाँ है विचित्र ब्रैकेट है।
जैसा कि आपने इसे बताया था, 'रेंज (0, लेन (वर्ण)) पर पाइथन फिर से शुरू होता है। लूप में 'i' को संशोधित करने का कोई प्रभाव नहीं पड़ता है। – melpomene