Я зрозумів, що мені не потрібно використовувати ?
для представлення відсутньої цифри, тому після віднімання 48 я використав той, який є кратним 9: x
Це дозволило мені відійти від гольфу 3+
, але це врятувало мене лише 1 байт через довжину перший рядок перед умовним :(
Порт мого Befunge-98 відповідь:
5 ще байт, щоб перевірити , якщо ми досягли EOF,
більше 1 байт натиснути 48 ( "0"
проти '0
),
1 байт більше , щоб надрукувати відповідь з .@
,
і ще 1 байт, тому що другий рядок має простір
для загальної кількості 8 байт.
~:0`!#|_"0"-+
@.%9-<
Спробуйте в Інтернеті!
Виводи, 0
якщо пропущена цифра може бути 0 або 9.
Це працює лише в інтерпретаторі PyFunge з причин, пояснених нижче.
Пояснення
Значна частина цього пояснення копіюється з мого пояснення Befunge-98 , оскільки ця програма дуже схожа на цю. безсоромна пробка
У першому рядку програми ми підсумовуємо цифри, включаючи х, який трактується як 72 через значення ASCII. Однак сума буде такою ж, коли ми модифікували 9, тому це не має значення.
~: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
Якби ми просто модифікували 9, ми залишилися б з неправильною цифрою, тому що хочемо 9 - (sum % 9)
. Однак ми можемо зробити краще, ніж 9\-
, що б відняти решту від 9: якщо ми зробимо суму від’ємною перед моделюванням на 9, ми отримаємо позитивний результат, еквівалентний 9 - (sum % 9)
у деяких інтерпретаторів. Це те, що вимагає від нас використання інтерпретаторів PyFunge як для Befunge 93, так і для 98, оскільки це єдиний у TIO, який робить це. Інші дають нам значення від -8 до 8 замість 0 і 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
? А як щодо[0, 9]
(масив чи список із 2 чисел)?