5
\$\begingroup\$

This answer: https://codegolf.stackexchange.com/a/107882/64538 received a comment which reads:

Hello, and welcome to PPCG! I don't know if tape is valid, but it should at least be 1 byte.

Is this allowed? If so, how many bytes should it add, if any?

||||||
\$\endgroup\$
  • \$\begingroup\$ Good question! One way to address that is to make a computer simulator that takes a file as input, and can "stick tape on the keyboard". For that particular answer, though, there exist a way to avoid holding [Enter]. Also "require extra input is not allowed", and "hold Enter" may be considered as taking input. \$\endgroup\$ – user202729 Oct 21 '17 at 4:28
  • \$\begingroup\$ Another issue is you can enter any (arbitrarily complex) Unary program with just a piece of tape, given that you release it at appropriate time. Otherwise I find "brand, width, thickness, color, and transparency" is totally unrelated. \$\endgroup\$ – user202729 Oct 21 '17 at 8:53
  • \$\begingroup\$ Wow, I have made so many comments, it took me a while to realise I left that comment. \$\endgroup\$ – NoOneIsHere Oct 26 '17 at 21:22
7
\$\begingroup\$

User interaction can be a valid part of a program

There is an existing consensus about programming languages which require user interaction to run, specifically that they are valid languages with valid answers despite said interaction. The question then becomes, how does that apply to individual Programs which require user interaction to run when their language doesn't universally require it. I would roughly break it down into two categories:

User Interaction defined in the source code

The first category is Languages which represent user interaction in the source code. In the linked consensus, Vim is like this; "programs" written in Vim represent a series of keys that a user will press to execute the program, with each user interaction accounted for and represented in the byte count. I would apply this to a hypothetical mixed language that can include user interaction, as long as that user interaction is strictly defined within the source code and can be translated to bytes. If the answer in question were written in a language which defined a symbol that means "user presses enter" and otherwise behaved identical to Command Prompt, then the answer would be valid with that 1 symbol added (though doing so now would likely fall afoul of a forbidden loophole).

User Interaction standardized for a language

The second category is Languages which require user "cranking" to execute. These languages in their base definition do not define a way to advance stages of execution, and substitute a standardized way for the user to run them which includes a pre-defined interaction. This could also be applied to a mixed language, such as one which can do normal sequential execution but requires a held enter key for looping. The answer could fit here, and then it would be valid with 0 additional bytes. However, as in this example, Command Prompt (and related "Batch") does have looping structures which don't require user input. Using a held enter key to cause looping behavior is not a standard of the language, it is extra user interaction that the author tacked on to the answer.

User interaction can also be invalid

In my opinion, the linked answer does not fit in either of the above categories that would allow user interaction to be specified within source code (thus adding to byte count), or have user interaction as a standard of the language and thus implied by the language (since knowledge of the language used is treated as "free"). In this case, having a User hold the enter key (or keep it pressed some other way) would instead count as an "additional input" that indicates the duration that the program should continue; even if the remaining text of the post indicates that said input should have a constant value ("forever") it still violates the loophole forbidding additional inputs and thus is invalid (specifically a Type 2 invalid answer).

\$\endgroup\$
  • \$\begingroup\$ Or infinite Enter (\x10) bytes. \$\endgroup\$ – user202729 Oct 23 '17 at 15:18
  • \$\begingroup\$ So would you disallow all CSS-only answers? They require manual, repeated input to progress the submission. \$\endgroup\$ – Nathan Merrill Oct 23 '17 at 15:28
  • \$\begingroup\$ @NathanMerrill Do you have an example of such an answer? The answer you linked to references Vim answers for context, which I do have experience with and know that every keystroke involved in their execution is indicated in the source code and counted as a byte, but I don't know what extent CSS answers require interaction or how that interaction is or is not indicated in the source code. \$\endgroup\$ – Kamil Drakari Oct 23 '17 at 15:44
  • \$\begingroup\$ With Vim, we measure the bytes of the data coming in, but we don't measure the keystroke. Like, we aren't measuring the duration of how long the person presses the keystroke, or the force that they press it with, or other various factors. The actual act of pressing down on a key is free, its the data behind the key that isn't. \$\endgroup\$ – Nathan Merrill Oct 23 '17 at 17:02
  • \$\begingroup\$ @NathanMerrill Regardless, Vim answers have representations of "user does X" as a part of their source code with defined representations and translation to byte count. If a language doesn't have either a way to represent a user performing a specific action, or a standardized expectation for default user action that applies to all answers in that language, then I would say that user interaction should just not be allowed \$\endgroup\$ – Kamil Drakari Oct 23 '17 at 18:41
  • \$\begingroup\$ I'm under the impression that in "Command Prompt", repeated pressing of "Enter" is the only way to loop. Is that not the case? Either way, I completely agree with your last comment. \$\endgroup\$ – Nathan Merrill Oct 23 '17 at 20:31
  • \$\begingroup\$ @NathanMerrill If holding the enter key is the typical way of performing a loop in Command Prompt then I would indeed reevaluate and say that 0 bytes is actually appropriate and really the only problem was the answer phrasing that as "use sticky tape to hold the enter key". I'll see if I can find information one way or another. \$\endgroup\$ – Kamil Drakari Oct 23 '17 at 20:54
  • \$\begingroup\$ @NathanMerrill After a very quick search I found this answer which infinitely loops on "DOS Command Prompt" without needing a held enter key. I don't know whether DOS Command Prompt is different from the Command Prompt in the referenced answer though. \$\endgroup\$ – Kamil Drakari Oct 23 '17 at 21:00
  • \$\begingroup\$ Ok. I should have tried running it from the start. It is a windows batch file, and the reason "Enter" is required is because "time" prompts the user for a new time. I agree with you, the answer is invalid (if you edit your answer, I'll change my vote) \$\endgroup\$ – Nathan Merrill Oct 23 '17 at 21:35
  • \$\begingroup\$ Let us continue this discussion in chat. \$\endgroup\$ – Kamil Drakari Oct 24 '17 at 15:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .