Я понял, что мне не нужно использовать ?
для представления отсутствующей цифры, поэтому я использовал одну, кратную 9, после вычитания 48: x
это позволило мне выйти из игры 3+
, но сэкономило только 1 байт из-за длины первая строка перед условной :(
Порт моего ответа Befunge-98: еще
5 байтов, чтобы проверить, достигли ли мы EOF, еще
1 байт, чтобы нажать 48 ( "0"
против '0
), еще
1 байт, чтобы напечатать ответ .@
,
и еще 1 байт, потому что второй строка содержит пробел
в общей сложности еще 8 байтов.
~:0`!#|_"0"-+
@.%9-<
Попробуйте онлайн!
Выводится, 0
если пропущенная цифра может быть 0 или 9.
Это работает только в интерпретаторе PyFunge по причинам, объясненным ниже.
объяснение
Большая часть этого объяснения скопирована из моего объяснения Befunge-98 , так как эта программа очень похожа на эту. бесстыдная вилка
В первой строке программы мы суммируем цифры, включая x, который рассматривается как 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 чисел)?