Yes it's cheating, but let's elaborate
An argument commonly given to defend SMBF, but abstracted: If function q
printed the source code, then yes, it's a cheating quine. If function q'
accessed a copy of the source code, is it still a cheating quine? Well, yeah, probably. SMBF has a way to emulate said q'
function, but with a twist: it accesses a writable copy of the source code; once this copy is modified, it is no longer the source code, rather, something similar to it. Then how could it possibly be said of SMBF that it's reading it's own source code?
buzzer sound That's just wrong. Let's give a counter argument with the same logic:
It's the night before the day of the big Shakespeare test. You get to bring in a notecard that gives some facts, but you are not allowed to quote any of the plays directly. Well... you think to yourself, If I put a near copy of a quote, it's not the same quote, so it's okay! You proceed to do this and get a 0 on the test for cheating. russian accent No big surprise.
Here's an argument given here:
[In response to a complaint about SMBF] No, it's not. The tape that the commands modify is the same tape that it operates on. That's part of the specification of the language. It's not just reading a separate copy of its source, and it's not opening its own file. It's looking at its own source dynamically on the same tape, with the power to execute and modify it mid-execution.
First, it is stated that The tape that the comands modify is the same tape that it operates on.
Well, what if my language has it's source code on the stack, with the capacity to modify that string? This is to the same effect, but in a much more absurd setting. Here, it's plainly obvious that it's cheating. Not to mention that it is also not two sentences later "It's looking at it's own source..."