Her iki tabanda (10) ve tabanda (2) basit aritmetik (toplama, çıkarma, çarpma ve bölme) yapabilecek bir fonksiyon veya program yazın.
İşlev, girdi olarak matematiksel bir ifade alır ve doğru sonucu doğru temelde çıkarır. Giriş, n
bir veya birkaç operatörle ( + - * /
) ayrılan sayılar olacaktır .
Tüm giriş değerleri sadece 0 ve 1 içeriyorsa, tüm değerler ikili olarak kabul edilir. En az bir rakam ise 2-9
, tüm değerlerin 10 taban olduğu kabul edilir.
Kurallar:
- Sayılar arasında yalnızca bir operatör olacağını varsayabilirsiniz (
10*-1
görünmez) - Parantez olmayacağını varsayabilirsiniz.
- Normal operatör önceliği (şüpheniz varsa, google hesap makinesindeki ifadeyi deneyin).
- Sadece tamsayılar olacağını varsayamazsınız.
- Girdi veya çıktıda baştaki sıfır olmayacak
- Sadece geçerli girdi verileceğini varsayabilirsin
- Tüm giriş değerlerinin pozitif olduğunu varsayabilirsiniz (ancak eksi operatörü negatif çıkışı mümkün kılabilir
1-2=-1
ve10-100=-10
) - REPL kabul edilmedi
- Ayrı argümanlar olarak veya tek argüman olarak girdi kaldırmayı tercih edebilir, fakat giriş vardır doğru sırada olması.
- Yani sen temsil edebilir
1-2
girdi argümanlarla1
,-
,2
ancak1
,2
,-
.
- Yani sen temsil edebilir
- Sen sembolleri kabul etmelidir
+ - * /
girişinde değilplus
,minus
vs. - Kayan nokta değerlerini desteklemelisiniz (veya dilinizin maksimum sınırına kadar, ancak yalnızca tamsayılar desteklenmiyor).
eval
kabul edildi
Örnekler:
1+1
10
1010+10-1
1011
102+10-1
111
1+2+3
6
10*10*10
1000
11*11*11
11011
10*11*12+1
1321
10.1*10.1
110.01
20.2*20.2
408.04
10/5
2
110/10
11
Also accepted (optional line or comma-separated input):
10
+
10
-
1
11 <-- This is the output
Bu kod golf, yani bayt cinsinden en kısa kod kazanacak.
110/10
, bir11.0
kabul edilebilir?