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

Reply via email to