divide(int a, int b, int c)Temel 10 değerini yazdıran bir işlev uygulayın a/b. herhangi kayan nokta matematik ne de kullanmadan BigInteger/ BigDecimalveya herhangi eşdeğer kütüphaneleri. Aşağıdaki 4. maddede yer alan (olası) istisna dışında c, kümesindeki en az doğru karakterler 0123456789.yazdırılmalıdır.
avebherhangi bir 32 bit tam sayı olabilir. Güncelleme: Golf amacıyla, girişin 64 bit ilkel olması iyi olur, ancak 64 bit veri aralığının tamamını desteklemeniz gerekmez.- Eğer
cpozitif değilse (umarım programınız çökmezse) pozitif olup olmadığını kontrol etmenize gerek yoktur. - Asgari üst giden desteklenen
cIS500. Programınızcyukarıdaki değerleri desteklemiyorsa500, aynı zamanda destekliyorsa da iyidir. - Eşit olarak bölünen sayılar için, ekstra sıfır (değerine bağlı olarak
c) veya hiçbir şey yazdırmamak sizin seçiminizdir . - Bölümle başka görevler yapmak için işlevi kullanmanıza gerek yoktur, tek hedef yazdırmaktır.
- Arasındaki numaraları için
-1ve1, bir lider yazdırmak ister tercihinizdir0. Ancak, baştaki sıfırı yazdırmanın kabul edilebilir olduğu tek senaryo budur ve böyle bir sıfırı yalnızca bir tane yazdırabilirsiniz. - Son ondalık basamak için tercih ettiğiniz herhangi bir yuvarlama / zemin / tavan mantığını kullanabilirsiniz.
- Olumsuz bir cevap için bir satır aralığı yazdırmalısınız
-. Bu dikkate alınmazc. Yazdırmak istediğiniz Ancak, bu sizin tercihinizdir,+ya olumlu cevap vermesini şey. - Tamsayı bölünmesine ve tamsayı modülüne izin verilir. Bununla birlikte, kod uzunluğuna göre sayılan kendi
BigInteger/BigDecimalkütüphanenizi uygulamayı seçmediğiniz sürece, ilkel öğelerle sınırlı olduğunuzu unutmayın . - Var
bolmakla uğraşmanıza gerek yok0, ancak isterseniz yapabilirsiniz. Programınız sonsuz bir döngü girebilir veya çökebilirb=0ve cezalandırılmayacaksınız. - Yorum başına hafif kural değişikliği. İken yapmak için emin Oyun alanını düzeyidir
aveb32 bitlik tamsayılar olmasını garanti altına alınmıştır 64 bit uzunluğunda tamsayı kullanabilir. Seçtiğiniz dil bir ilkel olarak 64 bit tam sayıların ötesine geçiyorsa, hiçbir noktada bu işlevselliği kullanamazsınız (64 bit ile kaplanmış gibi davranabilirsiniz). - Belirsiz olan başka bir nokta (mevcut geçerli cevapların hiçbirini değiştirmemelidir):
cbasılı karakter sayısı veya ondalık basamaktan sonraki boşluk sayısı olarak yorumlanabilirken, programınız bircşekilde ilgili bir şekilde kullanmalıdır. kaç karakter basılacağına karar vermek için. Başka bir deyişle,divide(2,3,2)çıktı çok daha kısa olmalıdırdivide(2,3,500); 500 karaktere bakmaksızın basmak uygun değilc. - Aslında işlevin adını umursamıyorum.
dgolf için uygundur.
Giriş
Hem işlev çağrısı hem de okuma değeri stdinkabul edilir. Eğer okursanız stdin, kümede olmayan herhangi bir karakter [-0123456789]bağımsız değişken sınırlayıcısı olarak kabul edilir.
Çıktı
stdoutYukarıda açıklandığı gibi karakterler .
Misal
için divide(2,3,5)aşağıdakilerin tümü kabul edilebilir çıktılardır:
0.666
0.667
.6666
.6667
0.666
0.667
.6666
.6667
+0.666
+0.667
+.6666
+.6667
Başka bir örnek: divide(371,3,5)aşağıdakiler için tüm kabul edilebilir çıktılar:
123.6
123.7
123.6
123.7
+123.6
+123.7
123.66666
123.66667
123.66666
123.66667
+123.66666
+123.66667
Ve divide(371,-3,5)aşağıdakiler için kabul edilebilir:
-123.6
-123.7
-123.66666
-123.66667
92,3,5cevap verdiyseniz, örneğin,30.67