Execute Brain****/TI-83 BASIC: Difference between revisions

From Rosetta Code
Content added Content deleted
(the last version of the program was unnecessarily large, and the description was both too wordy and completely wrong in some places)
(I'm usd to markdown formatting and forgot to hit the preview button)
 
Line 2: Line 2:
This implementation (in [[TI-83 BASIC]]) has quite a few limitations. Among them:
This implementation (in [[TI-83 BASIC]]) has quite a few limitations. Among them:


* TI-BASIC doesn't have any concept of ASCII, so the `.` command, which is translated to `Disp `, outputs everything on a new line as a number. Input is taken whenever a comma is encountered as opposed to being presupplied, and again takes numbers as input. [Attempting to input a string (enclosed in "quotes") will, because of a weird glitch in the interpreter, work without throwing an error: it stores the string to a custom list (yes, a list) named 'V', not the variable V (which remains unaffected). Attempting to access this list throws an ERR:DATA TYPE.]
* TI-BASIC doesn't have any concept of ASCII, so the <tt>.</tt> command, which is translated to <tt>Disp </tt>, outputs everything on a new line as a number. Input is taken whenever a comma is encountered as opposed to being presupplied, and again takes numbers as input. [Attempting to input a string (enclosed in "quotes") will, because of a weird glitch in the interpreter, work without throwing an error: it stores the string to a custom list (yes, a list) named 'V', not the variable V (which remains unaffected). Attempting to access this list throws an ERR:DATA TYPE.]
* In order to simplify the main loop, all commands are stored to list L1 at the beginning. Lists (arrays) in TI-BASIC can't be more than 999 elements, so attempting to run a program exceeding that size will throw an error (probably INVALID DIM). This can be fixed at the cost of speed and size.
* In order to simplify the main loop, all commands are stored to list L1 at the beginning. Lists (arrays) in TI-BASIC can't be more than 999 elements, so attempting to run a program exceeding that size will throw an error (probably INVALID DIM). This can be fixed at the cost of speed and size.
* Speaking of which: the interpreter is... on the slow side, to put it nicely.
* Speaking of which: the interpreter is... on the slow side, to put it nicely.


This was made to be compatible with [http://sc.cemetech.net SourceCoder], so the tilde (~) translates to the negative sign (the (-) key) and -> is the arrow on the STO> key.
This was made to be compatible with [http://sc.cemetech.net SourceCoder], so the tilde (~) translates to the negative sign (the <tt>(-)</tt> key) and -> is the arrow on the STO> key.


Input "",Str1 //program input
Input "",Str1 //program input

Latest revision as of 05:41, 6 July 2015

Execute Brain****/TI-83 BASIC is an implementation of Brainf***. Other implementations of Brainf***.
Execute Brain****/TI-83 BASIC is part of RCBF. You may find other members of RCBF at Category:RCBF.

This implementation (in TI-83 BASIC) has quite a few limitations. Among them:

  • TI-BASIC doesn't have any concept of ASCII, so the . command, which is translated to Disp , outputs everything on a new line as a number. Input is taken whenever a comma is encountered as opposed to being presupplied, and again takes numbers as input. [Attempting to input a string (enclosed in "quotes") will, because of a weird glitch in the interpreter, work without throwing an error: it stores the string to a custom list (yes, a list) named 'V', not the variable V (which remains unaffected). Attempting to access this list throws an ERR:DATA TYPE.]
  • In order to simplify the main loop, all commands are stored to list L1 at the beginning. Lists (arrays) in TI-BASIC can't be more than 999 elements, so attempting to run a program exceeding that size will throw an error (probably INVALID DIM). This can be fixed at the cost of speed and size.
  • Speaking of which: the interpreter is... on the slow side, to put it nicely.

This was made to be compatible with SourceCoder, so the tilde (~) translates to the negative sign (the (-) key) and -> is the arrow on the STO> key.

Input "",Str1               //program input
seq(inString("<>-+.,[]",sub(Ans,S,1)),S,1,length(Str1->L2
cumSum((Ans=7)-(Ans=8->L3
seq(Ans(X),X,dim(Ans),1,~1->L4
1->P:DelVar L11->dim(L1     //this is the same as DelVar L1:1->dim(L1 as DelVar doesn't require a colon or newline after its argument
For(S,1,dim(L2
L2(S->T
P-(T=1)+(T=2->P             //< and >, respectively
dim(L1
Ans+(P-Ans)(P>Ans->dim(L1
L1(P)-(T=3)+(T=4->L1(P      //- and +
If T=5                      //.
Disp L1(P
If T=6:Then                 //,
Input V
V->L1(P
End
If T=7 and not(L1(P         //[
S+2+sum(not(cumSum(L3(S)-1=seq(L3(X),X,S+1,dim(L3->S
If T=8 and L1(P:Then        //]
1+dim(L3)-S
(Ans+S)-(Ans+sum(not(cumSum(L4(Ans)=seq(L4(X),X,Ans+1,dim(L4->S
End
End