SELENE.
Jump to navigation
Jump to search
SELENE. is a language inspired by SELECT., but using hyperoperators instead of just exponentiation and logarithms.
Every command is separated by a space, with newlines able to be placed anywhere in between commands. Any line starting with {
is a comment line. There are 3 pointers: the data pointer (DP), the base selector (B), and the rank selector (R). The current cell is the cell pointed at by DP. All cells are initially set to 1/2, and can hold any positive real number.
Commands
Command | Function |
---|---|
left | Move DP one space to the left |
right | Move the DP one space to the right |
start | If current cell is 0, jump 1 command past matching end
|
end | If current cell isn't 0, jump 1 command past matching start
|
take | Input either an integer (a string containing only 0-9, like 1234 ) or a fraction (2 integers divided by a / , like 12/34 ) and store it in the current cell
|
Print the current cell's decimal expansion. If it repeats forever after a certain point, cut it after the first repetition. Remove trailing 0 s
| |
ascii | Print the ASCII character corresponding to the current cell rounded to the nearest integer mod 128 |
setr | Move R to current cell |
setb | Move B to current cell |
power | Set current cell to h(R,DP,B) (see Hyperoperations section) |
root | Set current cell to rt(R,DP,B) (see Hyperoperations section) |
Hyperoperations
The hyperoperations are defined as:
h(0,a,b) = a+b h(r,a,≤1) {r∈N} = a h(r+1,a,b+1) {r∈N} = h(r,a,h(r+1,a,b)) rt(r,a,b) is defined so that rt(r,h(r,a,b),b) = a m(r,a,b) {r∈N} = rt(r+1,h(r,a,b),2) m(m(0,x,y),a,b) {m(0,x,y)∉N} = L, where: a(0) = a b(0) = b a(i+1) = m(x,a(i),b(i)) b(i+1) = m(y,a(i),b(i)) L = lim{x->inf}(a(i)) M(r,a,b) is defined so that m(r,M(r,a,b),b) = a and m(r,M(r,a,b),a) = b h(r,a,b) {r∉N} = M(r,m(r,a,b),M(r,2,4)) h(r,a,b) {r∉Q} = lim{x->r}(h(x,a,b))
Example program: Truth-machine
take start print end print