We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
TripJump
- This article is not detailed enough and needs to be expanded. Please help us by adding some more information.
TripJump is to FlipJump what TritBitJump is to BitBitJump.
Description
It's a language whose only instruction is to flip a bit unconditionally and then jump unconditionally. The address of the bit to be flipped is obtained by finding the value, little-endian, that starts from the bit a the instruction pointer is on. If that bit and the bit after it are both 1 (so if it reads 11) it skips that and keeps skipping those pairs until it finds a pair with at least one 0. It keeps looking to the right until it hits a 1 bit an even number of bits from a immediately followed by another 1 bit. Sequences of 00, 10, and 01 are analyzed as 0, 1, and 2 respectively (remember, little-endian).
It then finds the value, little-endian, that starts from the bit b right after the 11 that ended the previous number. If that bit and the bit after it are both 1 (so if it reads 11 again) it skips that and keeps skipping those pairs until it finds a pair with at least one 0. Then it keeps looking to the right until it hits a 1 bit an even number of spaces from b immediately followed by another 1 bit. The same procedure: sequences of 00, 10, and 01 are analyzed as 0, 1, and 2 respectively again, and now the instruction reader jumps to that address in terms of bits (I did say bits and not sets of bits). It jumps relative to the first bit, which is indexed as 0.
Essentially, it does the flip and jump instructions of FlipJump in such a way that it doesn't need a fixed integer size (though not in the elegant way Subleq solves the same problem).
Actually Writing the Thing
You may realize that you can't write TripJump the same way as FlipJump without losing valuable power. Deliberately spacing out values can be very helpful in this language since you can change a smaller value to a significantly larger value that way. Therefore, this language is written similarly to TritBitJump instead.
- Numbers are be written in base 3, little-endian with all of the digits written out, then a single slash (optionally surrounded by spaces), then base 10, big endian.
- A single instance of
11corresponds to a space between numbers - If there is more than one
11between numbers, it is represented like "(# of11s in base 10)" surrounded by spaces, so00111100will be "0 (2) 0". - Newlines have to be added to start a new instruction, but can also be added as one wishes, so blank lines are fine in this version of the code.
- Comments are indicated by
//and can appear at the start of a line or after a line of code.
So code which could be written:
101101110011011100111110111001110011
can be represented like:
1 2 / 1 2 0 2 / 0 2 0 (2) 1 / 0 (2) 1 // this is a comment 12 0 / 7 0
Computational Class
FlipJump is a bounded storage machine. If it's only bounded by its fixed address size, then TripJump is Turing-complete. Otherwise, it's also a bounded-storage machine for whatever reason FlipJump is.