Talk:Doors

From Esolang
Jump to navigation Jump to search

Computational class

Note: I like this language as is, don't feel anything needs to change based on my comments. Any additions I thought of were too contrived and spoiled the theme. I had also played Doors before I read the spec, and got most, but not all the entity references.

I wrote an interpreter because I wanted to test and push the computational class.

Doors is not Turing complete. Reason: the only way to store data is in the single unbounded player 'register'. There is no other storage to simulate a 2-reg Minsky machine, nor the required divisibility tests to use the single register to simulate multiple registers in one for a 1-reg Minsky machine.

I was hoping it was equivalent to a Push-down automaton, but it isn't either. It seemed close, and I'm half-inspired to figure out a push-down automaton equivalent with a single register / accumulator, if possible.

Doors cannot perform nested parenthesis matching. I wanted to create an example program, but new input overwriting player.value wipes all other unbounded data. It is a FSM hooked up to an unbounded register (rather than a stack), which is overwritten every time a new symbol is read. If the register was non-destructively modified somehow, that might be able to simulate a stack, but that's not what is specified. I can't figure out what this is called. It can do more than a FSM; the counter example demonstrates this, and technically and trivially can have infinite states. Those states don't enable much though. Using type theory style terminology, can we say these infinitely incrementing states are extensionally equal (wikipedia:Extensionality) to an infinite loop in an FSM? .. Therefore computationally this language "has the same computational power" as a FSM, despite the counter (pun?) example. I am aware I'm totally overthinking a Roblox inspired esolang, but that's why I like this wiki. I've set the computational class on the article to FSM, but would be interested if anyone has a counter argument. Salpynx (talk) 06:27, 4 June 2024 (UTC) (update from bestcoder: i added hunt update entities so i added proper goto, another variable, and a list)

Usborne Creepy Computer Game, in Doors

As an FSM experiment, and to test an idea I had of "seeding" a random state by holding down the enter key for some length of time (not holding it enough uses Doors' Seek command to demonstrate a proper wait duration), I've implemented an old BASIC game in this language. Spiderwoman, from Usborne Creepy Computer Games. The Doors source code is here: https://github.com/hornc/esointerpreters/blob/master/Doors/examples/spiderwoman.doors The interpreter has to be in character output mode with the -c arg. I had wanted to implement this game in Eodermdrome some years ago, but never finished it... Hopefully it is moderately playable. Salpynx (talk) 14:35, 5 June 2024 (UTC)