2016-04-14 11 views
0

Belirli bir program için, şimdi farklı yollara karşılık gelen geçerli giriş aralığını belirlemek istiyorum. bir örnek içinFarklı koşullar verilen bir değişkenin aralığını nasıl bölümlendirebiliriz?

: Yani bu program için, iki yol vardır

def test(a): 

    if (a < 50): 
     return 1 
    else: 
     return -1 

. Bir yol 1 döndürür ve başka bir -1 döndürür. Böylece koşullar 2 dize unsurlar içermesi

conditions = get_path_conditions(test) 

["a<50", "a>=50"]

girişinin aralığı varsayalım: Belirli bir fonksiyonu (aynı zamanda kendi fonksiyonunu tasarlayabilirsiniz) yol şartlar listesi dönebilmek vardır varsayalım a = "(-100,100)" (kolaylık sağlamak için alt limiti ve üst sınırı temsil eden bir dizgi kullanıyorum , tıpkı matematikte yaptığımız gibi. İsterseniz başka gösterimleri de kullanabilirsiniz).

Farklı giriş aralıklarına farklı koşulları eşleyebilen bir işlevi nasıl tasarlarım?

conditions = ["a<50", "a>=50"] 
a = "(-100,100)" 
input_ranges = get_inputs(conditions,a) 

input_ranges 2 unsurlar içerdiğini Yani: ["(-100,50)","[50,100)"]

Benzer sorular: şartlarınız boolean ise

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3658

+4

Bunun ne anlama geldiğini anlamadım. Bir [XY Problemi] olabilir (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Bu yaklaşımın çözmeyi amaçladığı bir "orijinal" sorun var mı? – TigerhawkT3

+0

Yorumunuz için teşekkürler. Bir programı analiz etmenin bir yolunu bulmaya çalışıyorum. KLEE bunu, farklı yollara karşılık gelen farklı test senaryoları oluşturarak yapabilir (ör./Else farklı yola giderse). Her yol için sembolik bir ifade oluşturabilir, ancak girişler için tüm somut değerleri vermez. Bu yüzden farklı yollar için somut değer aralıkları belirlemeye çalışıyorum. – 2hc

cevap

0

, bunun için (lambda) işlevlerini kullanabilirsiniz.

conditions = [lambda x:x<50, lambda x:x=>50] 

Yoksa def kullanarak işlevlerini tanımlamak ve koşulların listesinin içindeki adıyla bunları başvurabilirsiniz: senin örneği kullanarak.