Saya menyadari bahwa saya tidak perlu menggunakan ?
untuk mewakili angka absen, jadi saya menggunakan angka yang merupakan kelipatan dari 9 setelah mengurangi 48: x
Ini biarkan saya bermain golf dari3+
, tetapi hanya menyelamatkan saya 1 byte karena panjangnya baris pertama sebelum :( bersyarat
Sebuah port jawaban Befunge-98 saya:
5 byte lebih untuk memeriksa apakah kita telah mencapai EOF,
1 byte lebih untuk mendorong 48 ( "0"
vs '0
),
1 byte lebih untuk mencetak jawaban dengan .@
,
dan 1 byte lebih, karena yang kedua line memiliki ruang
untuk total 8 byte lebih.
~:0`!#|_"0"-+
@.%9-<
Cobalah online!
Keluaran 0
jika digit yang hilang bisa 0 atau 9.
Ini hanya berfungsi di interpreter PyFunge karena alasan yang dijelaskan di bawah ini.
Penjelasan
Sebagian besar penjelasan ini disalin dari penjelasan Befunge-98 saya , karena program itu sangat mirip dengan yang ini. plug tak tahu malu
Di baris pertama program, kami menjumlahkan digit, termasuk x, yang diperlakukan seperti 72 karena nilai ASCII-nya. Namun, jumlahnya akan sama setelah kami modded oleh 9, jadi ini tidak relevan.
~: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
Jika kita baru saja memodifikasi dengan 9, kita akan dibiarkan dengan digit yang salah, karena kita inginkan 9 - (sum % 9)
. Namun, kita dapat melakukan lebih baik daripada 9\-
, yang akan mengurangi sisanya dari 9: jika kita membuat jumlah negatif sebelum modding oleh 9, kita akan mendapatkan hasil positif, setara dengan 9 - (sum % 9)
di beberapa penerjemah. Inilah yang mengharuskan kami untuk menggunakan juru bahasa PyFunge untuk Befunge 93 dan 98, karena itu adalah satu-satunya di TIO yang melakukan ini. Yang lain memberi kita nilai antara -8 dan 8 bukannya 0 dan 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
? Bagaimana dengan[0, 9]
(array atau daftar 2 angka)?