Tôi nhận ra rằng tôi không cần sử dụng ?
để biểu thị chữ số vắng mặt, vì vậy tôi đã sử dụng một số là 9 sau khi trừ 48: x
Điều này cho phép tôi chơi golf 3+
, nhưng nó chỉ tiết kiệm cho tôi 1 byte vì độ dài của dòng đầu tiên trước điều kiện :(
Một cổng của câu trả lời Befunge-98 của tôi:
thêm 5 byte để kiểm tra xem chúng tôi đã đạt EOF chưa,
thêm 1 byte để đẩy 48 ( "0"
vs '0
),
thêm 1 byte để in các câu trả lời với .@
,
và 1 byte hơn, bởi vì thứ hai dòng có một không gian
cho tổng cộng 8 byte nữa.
~:0`!#|_"0"-+
@.%9-<
Hãy thử trực tuyến!
Đầu ra 0
nếu chữ số bị thiếu có thể là 0 hoặc 9.
Điều này chỉ hoạt động trong trình thông dịch PyFunge vì những lý do được giải thích dưới đây.
Giải trình
Phần lớn lời giải thích này được sao chép từ bản giải thích Befunge-98 của tôi , vì chương trình đó rất giống với chương trình này. phích cắm không biết xấu hổ
Trong dòng đầu tiên của chương trình, chúng tôi tổng hợp các chữ số, bao gồm cả x, được coi là 72 vì giá trị ASCII của nó. Tuy nhiên, tổng sẽ giống nhau một khi chúng tôi đã sửa đổi bằng 9, vì vậy điều này không liên quan.
~: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
Nếu chúng ta chỉ sửa đổi bởi 9, chúng ta sẽ bị bỏ lại với chữ số sai, vì chúng ta muốn 9 - (sum % 9)
. Tuy nhiên, chúng ta có thể làm tốt hơn 9\-
, sẽ trừ đi phần còn lại từ 9: nếu chúng ta tính tổng âm trước khi sửa đổi bằng 9, chúng ta sẽ nhận được kết quả dương, tương đương với 9 - (sum % 9)
một số phiên dịch viên. Đây là những gì yêu cầu chúng tôi sử dụng trình thông dịch PyFunge cho cả Befunge 93 và 98, vì đây là phiên bản duy nhất trên TIO thực hiện điều này. Những cái khác cho chúng ta một giá trị từ -8 đến 8 thay vì 0 và 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
không? Thế còn[0, 9]
(mảng hoặc danh sách 2 số)?