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.

Talk:Around and around, sleeping sound

From Esolang
Jump to navigation Jump to search

Computational class

Is there a proof for Turing-completeness?--ChuckEsoteric08 (talk) 14:53, 12 October 2024 (UTC)

IDK, I managed to find a proof for +, -, <, >, and ., but not loops. -Someone. (talk)
Then ill take the category --Yayimhere2(school) (talk) 04:30, 16 December 2025 (UTC)
If "turn right" and "turn left" refer to rotation of Instruction Pointer clockwise and counterclockwise then it would be TC as brainfuck loops could be translated --ChuckEsoteric08 (talk) 10:32, 28 June 2026 (UTC)
I've tried a few times before but failed, can I see how you translate brainfuck loops? –PkmnQ (talk) 11:07, 28 June 2026 (UTC)
I've currently also tried doing that for 2DChanger but I failed to translate ] without entering an infinite loop but if statements could be possible, so maybe a different language should be used to prove it TC --ChuckEsoteric08 (talk) 11:26, 28 June 2026 (UTC)
I think this is similar to the issue to Archway1, where the blocker comes from trying to implement a non-reversible control structure in a reversible language. We can implement the equivalent of a Reversible Bitfuck loop ("enter if non-zero, exit if non-zero") in this language pretty easily. For a given Reversible Bitfuck-style loop of (abcdef), where abcdef is some sequence of instructions being looped over, we can implement this as:
              @@       @@
              @ abcedef @
              @         @ <- this is the return lane for looping
-> enter here  @       @  exit here ->
              @         @
              @@       @@
If the value is currently zero, then it will do a little double clockwise loop-de-loop along the bottom and skip the block of code.
If the value is currently non-zero, then it will do an counterclockwise loop-de-loop upward into the block of code. If the value is non-zero after the block, then it will complete the double counterclockwise loop-de-loop on the right side and exit the loop. Otherwise, if the value is zero, then it will loop clockwise, backwards along the return lane, and run through the block again, repeating this until the value becomes non-zero again.
If you wanted to flip the convention to enter the loop on zero and skip it on non-zero values, according to the Reversible Brainfuck convention, then you would just vertically mirror the construction. The structure can be vertically and horizontally stretched as long as all the characters that make up the loop remain orthogonally aligned and no obstructions are placed between them, so it should be trivial to compose with any existing constructions. If there are already proofs that other standard brainfuck operations are implementable, then the language should be Turing complete.
Also, since this only uses the turning instruction, which is just an inverted version of the one in 2DChanger, this structure should be usable for looping in 2DChanger as well. ImOnlyHereForReversibleComputing (talk) 16:06, 25 August 2026 (UTC)
I never realized the language was reversible (I never saw the latest edit), that explains a lot of the problems I was facing in my attempts. That loop construct is much smaller than I would have expected, I didn't think it'd be possible to get away with turning in the same direction this much, I would've thought there'd be some flip necessary. I think this is enough to create a compiler from Reversible Bitfuck (or Reversible Brainfuck, but I'll choose the former if I get around to writing it), since this language's < and > are enough to implement the remaining instructions (the translation would be very long, however, since overflow is very much necessary). –PkmnQ (talk) 16:42, 25 August 2026 (UTC)
I used a different construction for 2DChanger yesterday (but posted it only now) since I didn't saw latest edits here but that construction could be used for 2DChanger too --ChuckEsoteric08 (talk) 18:41, 26 August 2026 (UTC)
And that's what they are probably supposed to be as if they meant "set direction to right" and "set direction to left" it would be one-dimensional --ChuckEsoteric08 (talk) 10:35, 28 June 2026 (UTC)