Ich erkannte, dass ich nicht verwenden muss, um ?
die abwesende Ziffer darzustellen, also verwendete ich eine, die ein Vielfaches von 9 ist, nachdem x
ich 48 subtrahiert hatte: Dies ließ mich das Golf spielen 3+
, aber es sparte mir nur 1 Byte wegen der Länge des erste Zeile vor der Bedingung :(
Ein Port meiner Befunge-98-Antwort:
5 weitere Bytes, um zu überprüfen, ob wir EOF erreicht haben,
1 weiteres Byte, um 48 ( "0"
vs '0
) zu drücken ,
1 weiteres Byte, um die Antwort mit zu drucken .@
,
und 1 weiteres Byte, weil das zweite Zeile hat Platz
für insgesamt 8 weitere Bytes.
~:0`!#|_"0"-+
@.%9-<
Probieren Sie es online!
Gibt aus, 0
ob die fehlende Ziffer 0 oder 9 sein könnte.
Dies funktioniert nur im PyFunge-Interpreter aus den nachfolgend erläuterten Gründen.
Erläuterung
Ein Großteil dieser Erklärung wurde aus meiner Befunge-98-Erklärung kopiert , da dieses Programm diesem sehr ähnlich ist. schamloser Stecker
In der ersten Zeile des Programms addieren wir die Ziffern, einschließlich des x, das aufgrund seines ASCII-Werts wie eine 72 behandelt wird. Die Summe wird jedoch dieselbe sein, sobald wir um 9 modifiziert haben. Dies ist also irrelevant.
~:0`!#|_"0"-+ THE FIRST LINE
~ Gets a character from input - If it is negative, we've reached EOF
:0`! Pushes 0 if the character is positive, 0 otherwise
#|_ Goes to the next line if the value if 0
This also gets the negative value off the stack by using a |
"0"- Subtracts 48 to account for taking in ASCII values
+ Adds this adjusted value to the sum
Wenn wir nur um 9 modifizieren würden, würden wir mit der falschen Ziffer belassen, weil wir wollen 9 - (sum % 9)
. Wir können jedoch besser als 9\-
, was den Rest von 9 abziehen würde: Wenn wir die Summe vor dem Modifizieren durch 9 negativ machen, erhalten wir ein positives Ergebnis, das 9 - (sum % 9)
einigen Interpreten entspricht. Aus diesem Grund müssen wir die PyFunge-Interpreter für Befunge 93 und 98 verwenden, da dies der einzige von TIO ist, der dies ausführt. Die anderen geben uns einen Wert zwischen -8 und 8 anstelle von 0 und 8
@.%9-< THE SECOND LINE
< Redirects the IP onto this line
- Subtracts the sum from an implicit 0, making it negative
%9 Mods the sum by 9
@. Prints the digit and exits
0
? Was ist mit[0, 9]
(Array oder Liste von 2 Zahlen)?