TRAVEL 33
TRAVEL 33 is an esolang invented by User:GDavid. It's capable of sending information in time, even backwards therefore it's uncomputable.
It got it's name from the fact that the Hello World example's first line was TRAVEL 33 (changed to GOTO 33).
Commands and two Hello Worlds
GOTO 33
COMMANDS
SET VARIABLE VALUE
ADD VARIABLE VALUE VALUE BECOMES VALUE % 3 UNLESS IT'S NOW OR LINE
SUBTRACT VARIABLE VALUE VALUE BECOMES VALUE % 3 UNLESS IT'S NOW OR LINE
SEND VARIABLE TIME
GOTO LINE
CAT VARIABLE TIME LENGTH COPY CURRENT VALUE TO OUTPUT LENGTH TIMES AT TIME STEPPING 1
FOR EACH CHAR MAKING SURE IT RUNS UNTIL END IF NEEDED
REGISTERS
A B C D E F
SPECIAL VALUES
NOW THE CURRENT TIME
LINE THE CURRENT LINE
INPUT ONE CHARACTER READ FROM INPUT
THE PROGRAM MUST RUN AS LONG AS THERE'S INPUT OR OUTPUT OTHERWISE IT'S END GETS CUTTED
ERASING THE OUTPUT IS JUST MAKING SURE THE CAT DOESN'T GET EXECUTED AFTER IT HAS ALREADY
OR AT LEAST NOT WITH THAT CONTENT
THE END OF INPUT IS MINUS ONE
EACH VALUE IS AN ARBITARY SIZE INTEGER
THERE ARE NO COMMENTS
OH WAIT THIS IS A COMMENT BUT HOW
THE ENTIRE CODE IS INTERPRETED AND SYNTAX IS CHECKED JUST IN TIME SO IF WE JUMP OVER
COMMENTS THEY DON'T PRODUCE A SYNTAX ERROR
OH AND ENJOY THE OVERCOMPLICATED HELLO WORLD THINGY BELOW
SET A 'H'
SEND A B
ADD B 1
SET A 'e'
SEND A B
ADD B 1
SET A 'l'
SEND A B
ADD B 1
SEND A B
ADD B 1
SET A 'o'
SEND A B
ADD B 1
SET A ' '
SEND A B
ADD B 1
SET A 'W'
SEND A B
ADD B 1
SET A 'o'
SEND A B
ADD B 1
SET A 'r'
SEND A B
ADD B 1
SET A 'l'
SEND A B
ADD B 1
SET A 'd'
SEND A B
ADD B 1
SET A '!'
SEND A B
ADD B 1
SET B NOW
ADD B 2
ADD B 2
ADD B 2
SEND B 1
SUBTRACT B NOW
CAT A 0 B
SET C LINE
ADD C 2
ADD C 2
ADD C 2
ADD C 2
ADD C 2
GOTO C
AND HERE'S THE EASIEST HELLO WORLD
SET A 'H'
CAT A 0 12
SET A 'e'
SET A 'l'
SET A 'l'
SET A 'o'
SET A ' '
SET A 'W'
SET A 'o'
SET A 'r'
SET A 'l'
SET A 'd'
SET A '!'
Memory
TRAVEL 33 programs have 6 registers, A, B, C, D, E and F. All of these are signed integers.
Getting infinite memory
Infinite memory can be achieved in the following way
- make a for loop that counts to A with F
- for every step, check if B equals F
- if yes, send the value of C to time D
- otherwise waste the time running the true branch would take - if it's more or less time it won't work
- for every step, check if B equals F
To change memory size, send a different A to time <memory loop start>.
To get a memory value, send the address as B to time <memory loop start>.
To set a memory value, send C to time <first step time> + <step time> * <cell>.
/!\ WARNING /!\
A program taking truly infinite memory would take infinite time to start and terminating it would cause a paradox as it already got the memory size that was sent back in time but if it's terminated, it couldn't have got that information from anywhere.
To avoid such weird stuff, every TRAVEL 33 program should be either impossible to terminate by external means or terminating it would mean sending back the values it got but not sent to the time it got them and then truly terminating it.
It would still be an interesting question where the value came from actually then.
Turing completeness
Infinite memory and conditional loops are possible, so one can write a BF interpreter in it. Just don't run +[>+] with it or at least don't terminate it! (read the warning at infinite memory about why)