Програмиране с Python » Форуми » Задачи

за четвърта задача

(76 posts)

  1. bono
    Member

    Намерих нещо интересно.
    a = Interval(-100, -100)
    b = Interval(None, None)
    len(a) == 0
    len(b) == 0

    Май трябва

    Posted 6 years ago #
  2. bono
    Member

    Posted 6 years ago #
  3. Това което си написал е доста вярно. Като цяло, исках да дефинирате len по някакъв начин, но ми бе

    Posted 6 years ago #
  4. exabyte
    Member

    сравняване (<, >, <=, >=)

    Какво ще рече равенството тук? За безкрайните ясно, че ознава да съвпадат. Но за крайните, на дължините ли е, или на интервалите? В смисъл, трябва ли (a <= b) == (a < b or a == b)?

    Освен това, < и > кои равенства изключват?
    За крайни интервали, само съвпадение, или и тези по дължина? Т.е. нали за съвпадащи или еднакводълги интервали < и > са False?
    За безкрайни, ако се съдържат взаимно, False ли е, или приемаме < и > като символ за подможество? :)

    Posted 6 years ago #
  5. Ако два интервала са крайни, по-голям е този с по-голямата дължина.
    Ако единия е безкраен, другия краен, безкрайния е по-голям.
    Ако два интервала са безкрайни, по-голям е този който съдържа другия. Ако нито един не съдържа другия, <, >, <=, >= връщат False.

    От a <= b, съвсем логично следва че a < b or a == b.
    Съвпадащи интервали са еднакво дълги и нито единия не е по-голям или по-малък от другия. Равни са.

    Усещам, че == и <, > не са много симетрични, но точно така го искаме :)

    Posted 6 years ago #
  6. djv
    Member

    Тогава (1,2) съвпада ли с (3,4)?

    Posted 6 years ago #
  7. Добре, усетих къде е проблема. При <= равното е по-различно от ==.

    Значи, ето примери за сравнение:
    Interval(1, 2) < Interval(3, 4) == False
    Interavl(1, 2) <= Interval(3, 4) == False
    Interval(1, 2) > Interval(3, 4) == False
    Interval(1, 2) >= Interval(3, 4) == False

    Т.е., при равенство гледате дали границите съвпадат, докато при по-голямо/по-малко гледате по-горните условия.

    Posted 6 years ago #
  8. exabyte
    Member

    Добре, последно, така:

    >>> Interval(1,2) < Interval(3,4)
    False
    >>> Interval(1,2) <= Interval(3,4)
    True
    >>> Interval(1,2) == Interval(3,4)
    False

    Както би следвало да бъде, ако разбирам правилно условието, или Interval(1,2) <= Interval(3,4) трябва да е False?

    За безкрайните, предполагам нещата са така:


    >>> Interval(1,None) < Interval(1,None)
    False
    >>> Interval(1,None) <= Interval(1,None)
    True

    Т.е. при тях нещата са в общи линии ясни :)

    Posted 6 years ago #
  9. Точно така.

    Interval(1,2) <= Interval(3,4) == False

    Нито е по-голям, нито е равен. Знам че е малко странно, две неща да са несравними, но това се случва по един или друг начин, като сравняваме множества :)

    Може би трябва

    Posted 6 years ago #
  10. Добре ъпдейтнах задачата и пуснах новина по въпроса?

    Posted 6 years ago #
  11. progmetal
    Member

    Ами Interval(0, 10).expand(-11, 0) ? Ще върне (11,10), а този интервал не ми харесва много :-)

    Posted 6 years ago #
  12. exabyte
    Member

    Моят клас връща ValueError при дадения от теб пример. Надявам се това да е правилното ре

    Posted 6 years ago #
  13. Ей, да.

    Супер, така правете, ще ъпдетна задачата. :)

    Posted 6 years ago #
  14. user
    Member

    Как трябва да избегнем проблема, че когато се създава обект от класа може да му се зададе left да е по-голямо от right?
    Например:
    a=Interval(2,1)

    Posted 6 years ago #
  15. CTORH
    Member

    не разбрах дали expand променя текущия обект или не?

    освен това intersect не е казано какво връща, защото сечение може да е и Interval, и tuple, и list,...

    аз ще го правя на връща Interval
    надявам се че това си имал впредвид

    Posted 6 years ago #
  16. uZer
    Member

    да, би било хубаво да се каже изрично коя функция променя обекта а коя връща нов. в условията има казано само за една функция която връща нов обект.

    Posted 6 years ago #
  17. uZer
    Member

    и още за сравненията
    Interval(5,10).contains(Interval(5,10)) какво трябва да връща - True и False
    от това зависи поседението на оператори <,<=,>,>=

    щото думата "изцято" от тук

    contains(interval) - връща True или False в зависимост от това дали подадения като аргумент интервал се съдържа изцяло в този, върху който е извикан метода.

    може да се интерпретира по много начини.

    Posted 6 years ago #
  18. presley
    Member

    Това как да го тълкуваме:

    Interval(0, 10).expand(-1, 1) връща нов интервал Interval(1, 11). Ако от ляво или отдясно имате безкрайност, раз

    Posted 6 years ago #
  19. nadya
    Member

    1) Interval(0, 10).expand(-1, 1) ne trqbva li da vryshta nov interval (-1, 11), a ne (1, 11) nali vze pak go expandva-me

    Posted 6 years ago #
  20. Shiro
    Member

    @nadya: ako imash interval (x, y) i iskash da go razshirish s (a, b) shte poluchish rezultat (x-a, y+b). Nali taka, razshirqvane otlqvo predstavlqva izvajdane na argumenta ot tekushtata lqva granica i syotvetno otdqsno - pribavqne. V konkretniq sluchai:
    Interval(0, 10).expand(-1, 1) =
    Interval(0 - (-1), 10 + 1) =
    Interval(0 + 1, 10 + 1) =
    Interval(1, 11)

    Posted 6 years ago #
  21. special666
    Member

    аз имам един въпрос относно вида на числата.Нали пи

    Posted 6 years ago #
  22. uZer
    Member

    @Shiro: аз съм същото мнение както nadya. поне така го имплементирах. някакси по-естствено изглежда
    някой да разясни как става експандването

    Posted 6 years ago #
  23. uZer
    Member

    в условието пи

    Posted 6 years ago #
  24. Tomba
    Member

    Posted 6 years ago #
  25. Tomba
    Member

    Тъй и тъй съм почнал с въпросите, да ми кажете как да си преценим, като какво трябва да връщаме получените интервали - да ги запазвам в other-а( с който правя сечението например или събиране или изваждане и т.н.) или да си правя нов обект във функцииката и да връщам него???

    Posted 6 years ago #
  26. contains и __contains__ са две различни неща. Мисля, че е доста ясно обяснено - in работи за число и интервал, докато contains е метод, който взема само интервал.

    Да, гре

    Posted 6 years ago #
  27. djv
    Member

    Може ли да уточним:
    (1,2) in (1,2) == ?
    (1,2) in (1,3) == ?

    Posted 6 years ago #
  28. Уточнявам, оператора in не работи за интервали, а за числа. Мислех, че ясно съм го написал :)

    Posted 6 years ago #
  29. Posted 6 years ago #
  30. user
    Member

    Posted 6 years ago #

RSS feed for this topic

Reply »

You must log in to post.