ITT we discuss the language idea "Dumbf*ck" and how it can be fixed:
http://esoteric.voxelperfect.net/wiki/Dumbf%2Ack
It needs fixing because the looping construct leaves half the code
unreachable. Here's the original list of commands:
< Moves pointer one cell to the RIGHT
> Moves pointer one cell to the LEFT
/ Cell value is rotated right 3 times
. Low-order bit is flipped
, Outputs cell value
' Inputs cell value
? If the low-order bit of the cell at the pointer is set,
continue execution at the previous `?', otherwise
continue at the next `?'ihope127 suggests the following "fix" (only posted on the wiki?):
< Moves pointer one cell to the left
> Moves pointer one cell to the right
/ Cell value is rotated right once
! Low-order bit is flipped
. Outputs cell value
, Inputs cell value
? If the low-order bit of the cell at the pointer is set,
reverse execution directionI don't like this because the switch of < and > makes it less confusing. It was supposed to be esoteric! Same with the ! and especially the . and ,. It's not supposed to look exactly like Brainfuck! :(
But the new function of ? is interesting. Do you assert that this construct is powerful enough to make the language Turing-complete, ihope?
I don't mean to sound stupid, but what's wrong with the original looping structure? If you use question marks in pairs, why does it then break?
[unset low order bit]??[do something while low order bit is unset]??[rest of program]
The broken bit is the fact that question marks have to be paired like that.
And I'm not sure if my new looping construct is Turing-complete, but it "might be". We could have it rotate the execution direction by 90 degrees, but then it's still like... some other language.
I agree with Safalra. I don't see why it is a problem that you have to pair two question marks. So, the syntax is a bit odd. So what??
I have not actually tried to program in this language, but if the original looping structure is sufficient to make it TC then I see NO reason to alter it.
Well, the author indicated that he planned to change it. True, the language as is can be programmed in.
After a bit of thinking, I decided that the original language is not Turing-complete--loops cannot be nested, and the halting problem for a loop not containing loops should be solvable: either it moves back to its original position at the "end" of the loop, or it makes a "net" movement, meaning that it will eventually leave the colonized bit of tape behind and continue in some predictable pattern.
In short, Dumbf*ck is predictable and therefore not Turing-complete.