From Esolang
Jump to navigation Jump to search

1st Example Program

What is the 1st example program in this article supposed to do? When I trace it, I get:

$ - start here (going south)
@ - turn ccw (now east)
@ - turn ccw (now north)
@ - turn ccw (now west)
$ - no effect
# - (going west) move tape pointer 1 space backwards, skip 2 program cells
' - no effect
  - fallen off the edge of the world, so halt

--Chris Pressey 18:42, 7 February 2011 (UTC)

D'oh, never mind. The initial direction of travel is east, not south. I was confusing it with 2L. --Chris Pressey 18:45, 7 February 2011 (UTC)
No, the program still doesn't make much sense; it inputs a bit, outputs a bit, then quits. If the bit was a 0 it quits immediately; if the bit was a 1 it moves the tape pointer 1 space backwards before quitting (it follows the last three steps of the trace I posted above.) --Chris Pressey 22:39, 7 February 2011 (UTC)
Makes more sense now, I think -- see my comment in the "Skip two program cells" section below. --Chris Pressey 00:10, 9 February 2011 (UTC)

"Skip two program cells"

What exactly does it mean to "skip two program cells"? In the following:


...would the execution trace be:

$ - start here
# - (going east) toggle bit at tape pointer and then move tape pointer 1 space forwards, skip 2 program cells
c - no effect
d - no effect
  - fallen off the edge of the world, so halt

...or is the normal advance of the program pointer included in the "2 program cells"? (in which case b would be included in the above trace) --Chris Pressey 22:45, 7 February 2011 (UTC)

Although I wrote this, I forgot now. --Zzo38 22:18, 8 February 2011 (UTC)
The 1st example makes the most sense if the trace I give immediately above is correct. In that case, it cats bits from input to output, writing 1 bits onto the tape and advancing it as it does so. (The other interpretation -- which I was originally using -- leads to it halting very soon after starting, no matter what the input is.) So, unless you object, I'm going to assume that's the intended behaviour. --Chris Pressey 00:10, 9 February 2011 (UTC)
Okay. I believe that is probably also what I intended when I wrote it. --Zzo38 03:13, 9 February 2011 (UTC)
Cool, thanks. --Chris Pressey 21:30, 9 February 2011 (UTC)
I also suspect, at this point, that skipping two cells was a very smart design decision; if it were to skip just one, the idiom that I just added to the examples section would be at much harder to write. (Gemooy faces a problem very similar to that.) --Chris Pressey 16:54, 11 February 2011 (UTC)