A Quine Puzzle
21–30 of 36 posts
Re: A Quine Puzzle
#22Spoiler: cmVwZWF0IDMgMgpwcmludCAyCnJlcGVhdCAzIDIKcHJpbnQgMgpyZXBlYXQgMyAyCg==
Variant that doesn't rely on potentially undefined behavior of asking "repeat" to repeat before the beginning: cHJpbnQgMApwcmludCAyCnByaW50IDAKcHJpbnQgMgpwcmludCAwCnJlcGVhdCAzIDIKcHJpbnQgMgpyZXBlYXQgMyAyCnByaW50IDIKcmVwZWF0IDMgMgo=
Re: A Quine Puzzle
#23Earlier quoted context omitted.
Variant that doesn't rely on potentially undefined behavior of asking "repeat" to repeat before the beginning: cHJpbnQgMApwcmludCAyCnByaW50IDAKcHJpbnQgMgpwcmludCAwCnJlcGVhdCAzIDIKcHJpbnQgMgpyZXBlYXQgMyAyCnByaW50IDIKcmVwZWF0IDMgMgo=
How do you use these strings?
Re: A Quine Puzzle
#24Does there exist a solution that doesn't rely on undefined repeat behavior? I finally gave in and looked at the answers, but it looks like they all use `repeat M N>M`, or `repeat M N>currentOutputSize`. I kinda assumed that the interpreter was just there for convenience, and that its implementation of undefined behavior was irrelevant. But is the interpreter's implementation critical to the solution? (Then again, I'm…
cHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcHJpbnQgMg0KcmVwZWF0IDMgMw0KcmVwZWF0IDIgMg0KcHJpbnQgMg0KcmVwZWF0IDMgMw0KcmVwZWF0IDIgMg0KcmVwZWF0IDMgMw0KcmVwZWF0IDIgMg==
Re: A Quine Puzzle
#25Re: A Quine Puzzle
#26Re: A Quine Puzzle
#27print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 repeat 3 2 print 2 repeat 3 2 print 2 repeat 3 2
Re: A Quine Puzzle
#28print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 repeat 3 2 print 2 repeat 3 2 print 2 repeat 3 2
It seams there are more than one solutions. Can we generalize a theory of this phenomenon?
Re: A Quine Puzzle
#29print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 repeat 3 2 print 2 repeat 3 2 print 2 repeat 3 2
It seams there are more than one solutions. Can we generalize a theory of this phenomenon?
Take 1 active line and 1 inactive line as some minimum, this contradicts, because this can only produce 1 line. 1 active line and two inactive lines, contradicts, because it can either produce 2 lines ( and it took 3 ) or it can produce m lines if the final line is a repeat, and yet this repeat is not printed.
The function of PRINT X thus becomes like a variable definition. Something needs to be "PRINTED" in order to be available for a back reference. So everything in the quine needs to itself be printed, so that it can be "printed in the quine" by back reference. This suggests that the set of different statements, being, different values of (M) and (M,N) will be conserved.
So let's assume ( and we have evidence of this ) the minimum size of statement set for a solution is 2.
What two statements can produce solutions ?
At this point, considering the above observations, one can enter the area of solving constraints on the numbers M and N through logic.
The weird thing is I wonder how you classify these languages ( of these statements such as the one given, being, a PRINT statement and a repeat statement ). It's not Turing complete. It's not a state machine. It's not a production grammar. It's not a read and say sequence. Interesting to consider what it is and what other types there are.
It also seems like there are more solutions of the same pattern.
Such as
print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 print 2 repeat 4 2 print 2 repeat 4 2 print 2 repeat 4 2 print 2 repeat 4 2
And
One with 15 print 2 statements followed by 5 "repeat 5 2" statements delimited by "print 2" statements.
And so on. The pattern is (3 * x) * "PRINT 2" + (x - 1) * "REPEAT X 2\nPRINT 2" + "REPEAT X 2"
For the other type "repeat 3 2 print 2 repeat 3 2 print 2 repeat 3 2" ( of which the version with m = 4 contains a terminating "print 2", and m = 5 doesn't work since in that case the M's sum to 2 + 2 + 5 = 9 lines of output, and there are only 8 statements in the source. Changing the active repeat statement from "repeat 5 2" to "repeat 4 2" with 2 + 2 + 4 gives 8 statements in the output and the source, and we can then do this:
repeat 4 2
print 2
repeat 4 2
print 2
repeat 4 2
print 2
print 123123123211231
repeat 12312312 123123123
And it always works to echo whatever the last two lines are, so in that sense, the above "code" is like a "PRINT" function.
A "concat" function can be obtained like so :
repeat 5 2
print 2
repeat 5 2
print 2
repeat 5 2
print 2
repeat XXX YYY
==> and the output is the source + "repeat 5 2" + "repeat XXX YYY"
So this function concatenates "repeat 5 2" and "repeat XXX"
Likely other "primitives" can be constructed. It's interesting to consider what the "product space" of these would be. What functionality could be derived from this simple language ?
Re: A Quine Puzzle
#30Spoiler: cmVwZWF0IDMgMgpwcmludCAyCnJlcGVhdCAzIDIKcHJpbnQgMgpyZXBlYXQgMyAyCg==
This is the shortest one of the solutions so far. Wonder if it's the shortest possible? (Other than empty = empty)