?
Bulunamayan basamağı göstermek için kullanmaya ihtiyacım olmadığının farkına vardım , bu yüzden 48'i çıkardıktan sonra 9 katı olan bir tane kullandım: x
Bu, golf oynamama izin verdi 3+
, ancak sadece 1 bayt kurtardı. koşulludan önceki ilk satır :(
Benim Befunge-98 Yanıta portu:
biz EOF, ulaştınız eğer daha 5 kontrol etmek için bayt
1 daha bayt 48 (itmek "0"
vs '0
),
ile cevap yazdırmak için 1 byte daha .@
,
ve 1 byte daha saniyede çünkü Satır
toplam 8 baytlık daha fazla alana sahiptir .
~:0`!#|_"0"-+
@.%9-<
Çevrimiçi deneyin!
Çıkışlar 0
eksik haneli 0 veya 9 olabilseydim.
Bu sadece PyFunge tercümanında aşağıda açıklanan sebeplerden dolayı çalışır.
açıklama
Bu açıklamanın çoğu, Befunge-98 açıklamamın kopyalarına yapıştırılmıştır , çünkü bu program buna çok benzer. utanmaz fiş
Programın ilk satırında, ASCII değeri nedeniyle 72 gibi işlem gören x dahil rakamları toplarız. Bununla birlikte, toplam 9 ile modüle edildiğinde toplamı aynı olacak, bu yüzden bu konu dışı.
~: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
Eğer sadece 9 ile modlanmış olsaydık, yanlış rakamla kalırdık, çünkü istiyoruz 9 - (sum % 9)
. Bununla birlikte, 9\-
kalanı 9'dan çıkaracak olandan daha iyisini yapabiliriz : 9'u modlamadan önce toplamı negatif yaparsak, 9 - (sum % 9)
bazı tercümanlara eşdeğer bir pozitif sonuç elde edeceğiz . Bu, PyFunge tercümanlarını hem Befunge 93 hem de 98 için kullanmamızı gerektiren şeydi, çünkü bunu yapan TIO'da yalnızca biri. Diğerleri bize 0 ile 8 arasında -8 ile 8 arasında bir değer veriyor.
@.%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
? Peki ya[0, 9]
(dizi veya 2 sayının listesi)?