İfadenin alternatif kenarlarındaki öğeleri kullanarak matematiksel bir ifadeyi çözen bir program oluşturun. Yapılma şekli, soldan sağa okumak yerine, ilk karakteri, sonra sonuncuyu, sonra ikincisini, sonra ikincisini sonuncuyu vb. Okumanızdır. Bu, değerlendirmeniz ve çıkmanız gereken yeni bir ifade verecektir.
a*b/c+d-e
135798642 <-- Order you read the expression in
ae*-bd/+c <-- Order of operation.
Misal:
1*3/2+4-5
15*-34/+2 = -255
İfade "işe yaramazsa", çalışması 1
için gerekli konumlara a eklenmelidir.
Birkaç örnek muhtemelen daha iyi gösterecektir:
Input: 1+1+1+1+1
Result: 23 // Because 1+1+1+1+1 -> 11++11++1 -> 23
Input: 1+2-3+12-5
Result: -19 // Because 1+2-3+12-5 -> 15+-22-13+ -> 15+-22-13+1 -> -19
// |
// Not valid expression
Input: 2*2*2*2*2
Result: 968 // Because 2*2*2*2*2 -> 22**22**2 -> 22*1*22*1*2 -> 968
// || ||
// Not valid, 1 must be inserted
Input: 17/2
Output: 127 // Because 17/2 = 127/ -> 127/1 -> 127
Desteklenmesi gereken operatörler + - * /
. Parantez olmayacak. Normal matematik kuralları ve "sözdizimi" kullanılır, bu nedenle örneğin **
üs anlamına gelmez. a++++1
eşdeğerdir a+1
(yani MATLAB stili, C ++ değil).
Herhangi bir şüphe durumunda, bazı geçerli işlemler şunlardır:
-a
+a
a++b
a+-b
a*-b
a*+b
a*++b
a/b
a/-b
a/+b
-a/--b
Ancak aşağıdakilerin tümü geçerli değildir. Ne ile değiştirilmeleri gerektiği gösterilmiştir:
a+ | a+1
a- | a-1
a++++ | a++++1 (This is equivalent to a+1)
a*+++ | a*+++1 (This is equivalent to a*1)
a**b | a*1*b
a*/b | a*1/b
a/*b | a/1*b
a* | a*1
*a | 1*a
***a | 1*1*1*a
Kurallar:
- Kod bir işlev veya tam bir program olabilir
- Giriş STDIN veya işlev bağımsız değişkeni olabilir
- Giriş, tırnak işaretleri olmadan
''
""
geçerli bir matematiksel ifade olmalıdır veya . - Çıktı, bir tamsayı, ondalık veya basitleştirilmiş bir kesir olarak yeni ifadeye yanıt olmalıdır.
- Ondalık noktadan sonra en az üç basamak desteklenmelidir. Öyleyse
1/3 = 0.333
değil0.33
.0.333333333
kabul edildi. ans = ...
kabul edildi.- Öncü ve sondaki satır ve boşluklar kabul edilir.
- Giriş yalnızca tamsayı olacak
- Sıfıra bölme bir hata, NaN, Inf vb. İle sonuçlanabilir. Bir sayının çıkışı kabul edilmez.
Her zaman olduğu gibi, bayttaki en kısa kod kazanır. Kazanan, yarışmanın yayınlandığı günden bir hafta sonra seçilecektir. Daha sonra gönderilen cevaplar, mevcut liderden daha kısasa yine de kazanabilir.
0/0
ifade tamsayı bölme veya modulo sıfıra dönüştüğünde geri dönebilir miyim ?
x/0
geçerli bir çıktıdır. Yanlış bir cevap vermediği sürece sorun değil. Hata ve "Sayı değil" tanımı gereği doğrudur ve sonsuzluk "yeterince doğrudur",
2^64
gerekiyor ve eğer devam ederseniz hata veya sarmalı mı?