On 01/-10/-28163 02:59 PM, Kaustubh Pratap chand wrote:
> Hello i made this program which interprets brainf***
>
> But i don't understand why it doesn't ends....and also it doesn't
print anything
>
> import sys
>
> cell=[0] * 30000
> code_pointer=0
> cell_pointer=0
> close_brace_pos=0
> open_brace_pos=0
>
> bf=raw_input("Input bf program:")
>
> while (code_pointer<len(bf)):
>
> c=bf[code_pointer]
Indentation error. Presumably a flaw in your email program. Try using
text mode.
>
> if c=='.':
> sys.stdout.write(cell[cell_pointer])
> code_pointer+=1
write() doesn't take an integer parameter, but only character strings.
If you want to be true to the original language, you'll need a chr()
function there.
But if I were you, I'd be debugging this by making it print something
more verbose, in case the problem is invisible characters.
>
> elif c==',':
> cell[cell_pointer]=sys.stdin.read(1);
> code_pointer+=1
This one's a bit tougher, since I don't know any portable way to get a
single character of input from a user. In any case, you'll be wanting
to use ord() to convert (one of) user's character to an integer.
>
> elif c=='>':
> cell_pointer+=1
> code_pointer+=1
> <snip>
In any case, I'd make two other changes till you get it working:
1) make the input explicit, so people can know what you're testing this
with. After all, if someone were to run it and just press enter, then
of course it would print nothing.
2) add a print statement of some sort to the loop, so you can see how
the pointers are doing.
DaveA
_______________________________________________
Tutor maillist - Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor