Meydan okuma
Coyote Beta adında muhteşem bir hizmetin sahibisinizKullanıcılarının internet üzerinden gönderdiği matematik sorularını sihirli bir şekilde cevaplayan .
Ama ortaya çıkıyor, bant genişliği pahalı. İki seçeneğiniz var, ya bir " Coyote Beta Pro" oluşturun ya da bunu çözmenin bir yolunu bulun. Yakın zamanda birisi sorguladı (x + 2)
. İstemci gönderemedi x+2
ve kullanıcı hiçbir fark görmedi mi?
Görev
Senin görevin matematik ifadelerini "minimize" etmektir. Bir girdi ifadesi verildiğinde, aynı girdinin en az gösterimini sağlayana kadar boşluk ve parantezlerden kurtulmanız gerekir. İlişkisel işlemler etrafındaki parantezlerin korunması gerekmez.
Burada verilen tek operatörleri +
, -
, *
, /
, ve ^
standart matematiksel çağrışımsal ve öncelik ile (üs). Girişte verilen tek boşluk gerçek boşluk karakterleri olacaktır.
Örnek Giriş / Çıkış
Input | Output
------------|--------------
(2+x) + 3 | 2+x+3
((4+5))*x | (4+5)*x
z^(x+42) | z^(x+42)
x - ((y)+2) | x-(y+2)
(z - y) - x | z-y-x
x^(y^2) | x^y^2
x^2 / z | x^2/z
- (x + 5)+3 | -(x+5)+3
puanlama
Giriş / çıkış tercih edilen herhangi bir yöntemi kullanabilir. Bayttaki en küçük program kazanır.
Kesin bitler
Üstelleştirme doğru ilişkiseldir ve aynı zamanda (en yüksek olan) standart matematik önceliğini takip eder. Geçerli bir sayısal değişmezdir /[0-9]+/
ve geçerli bir değişken değişmezdir /[a-z]+/
. Tek bir değişken değişmez değeri, karakter uzunluğu 1'den uzun olsa bile tek bir değeri temsil eder.
"İlişkilendirilebilir işlemlerin etrafındaki parantezlerin korunması gerekmez" ile kastedilen, çıktının ilişkisel işlemlerin yeniden düzenlenebilmesi dışında, özdeş ayrıştırma ağacıyla sonuçlanan bir ifadeden oluşmasıdır.
/[a-z]+/
, bunun gibi yan yana yerleştirme ile çarpmaya ab
izin verilmiyor mu?
2+(3+4)
değiştirilmek istiyorsun 2+3+4
, değil mi? Bu ayrıştırma ağacını değiştirir.
x^(y/2)=x^y/2
; üslerin üst sıralarda önceliği vardır x^y/2=(x^y)/2
,.
Prompt X:expr(X)
TI-BASIC gönderecekti ama basitleştiremezsiniz :(