如何在Brainfuck中判断用户输入是否等于指定值?
问题:Brainfuck循环输入程序调试
我正在编写一个Brainfuck程序(纯粹自我挑战,清楚已有现成实现),功能是每次循环接收两个用户输入:一个为字母/数字,另一个用于判断是否结束输入(y/n),之后打印整个输入的字符串。目前代码并不完善,大致逻辑是启动循环后将指针右移两位(使开头有可识别的0值),请求两次输入,将下一个值设为小写n,现在正尝试解决值的比较问题。尝试打印值,但仅在两次输入后才会打印,随后程序崩溃。
当前Brainfuck代码
+[>>[>].,,>>++++++++++[<+++++++++++>-]<.[->-[>]<<].<[<]<-]
自制Brainfuck解释器(Python)
def brainfuck(code): array = [0] pointer = 0 i = 0 while(i < len(code)): if(code[i] == '<'): if(i != 0): if(pointer != 0): pointer -= 1 elif(code[i] == '>'): pointer += 1 if(len(array) <= pointer): array.append(0) elif(code[i] == '+'): array[pointer] += 1 elif(code[i] == '-'): if(array[pointer] > 0): array[pointer] -= 1 elif(code[i] == '.'): print(pointer,chr(array[pointer])) elif(code[i] == ','): x = input('Input:') try: array[pointer] = int(x) except ValueError: array[pointer] = ord(x) elif(code[i] == '['): if(array[pointer] == 0): openBraces = 1 while(openBraces > 0): i += 1 if(code[i] == '['): openBraces += 1 elif(code[i] == ']'): openBraces -= 1 elif(code[i] == ']'): openBraces = 1 while(openBraces > 0): i -= 1 if(code[i] == '['): openBraces -= 1 elif(code[i] == ']'): openBraces += 1 i -= 1 i += 1
内容的提问来源于stack exchange,提问作者jjToad
相关产品推荐
相关产品推荐

