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)