Talk:Brainscrambler

From Esolang
Jump to navigation Jump to search

Implementation

I've written a brainscrambler interpreter in c++. It's as compliant as possible, but as the specs are a little undetailed, I've a few questions:

  • Should the move command behave like in asm (MOV), where it copies a value, instead of moving it? If this is the case, an actual move could be written as >^, whereas, in the other way, a copy cannot be simulated. So, for now, the move command copies the current number replacing the topmost item on the prev/next stack. Or perhaps it should move/copy the current number ONTO the prev/next stack, without replacing the topmost item?
  • How big should the basic data unit be? For my implementation, I've chosen a signed int, which in my system is 4 bytes long, and can be lower than -1.
  • How should the input behave when an EOF occurs? As of now, I've done no checking, so the scanf puts an 1 onto the stack.
  • Should a duplicate current number and put onto the current stack command be supported?
  • Or rotate commands for both directions?
  • I've also implemented a print as character command ( : ) which wraps the current number into an unsigned char and prints it (like the brainfuck output command).

Ideas? Thoughts? Advices? Perhaps I should create the specs for a new brainfuck variant, given all the modifies I've done. Still, I'd like some help to create a perfectly compliant brainscrambler interpreter, which would switch the language from unimplemented to implemented. I'll put the source of the interpreter when pastebin goes up again. --Nerowolfe 06:44, 10 July 2008 (UTC)

  • "Move" to me suggests removing the initial values. Copying can still be done using a loop, as in normal Brainfuck.
  • It should go up to at least 255 in my opinion, but nothing wrong with allowing higher numbers.
  • I think a language that explicitly allows -1 but not lower numbers should probably have -1 = EOF.
The other ideas are fine extensions, but make the language a bit more usable and a bit less minimal; it's up to you whether this is a good idea as an extension to your interpreter. I think there should probably be a command-line switch or something similar to disable the extensions. --ais523 18:52, 10 July 2008 (UTC)
Thank you for the advices, they make very good sense. Here's the source for now: http://pastebin.com/f59963dbe . It requires libboost-program-options (but the command-line parameter parsing can be easily commented out). I'll make the modifies you say when my new pc arrives. Thanks again... -- Nerowolfe 23:55, 10 July 2008 (UTC)

Date

We've had two different years for the language given without explanation, 2004 and 2006. Is there any evidence around for which is the correct one? --ais523 21:54, 4 February 2011 (UTC)

Sorry for the unattributed change to the date. 2004 is indeed correct, which I can confirm as I'm the original creator of the language :) Feel free to email cody.brocious@gmail.com to confirm. I came up with the initial language spec while sitting in English class in High School in late 2004. --(this comment by 50.12.4.172 at 02:06, 1 May 2011 UTC; please sign your comments with ~~~~)