Вход | Регистрация

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

  • @Владимир Блажев

    1/1, т.к. 2/2 де факто е 1/1, който е първия елемент в редицата, т.е. както очакваш, следващия е 2/1 и т.н.

    P.S. защо не ползваш a.denominator?

    10.05.2009 (променeно 10.05.2009)
  • Малко оф-топик.

    Някой сеща ли се за причина резултатът от

    for i in permutations([1,2,3]):
        print(i)

    да е

    [1, 2, 3] [1, 3, 2] [2, 1, 3] [2, 3, 1] [3, 1, 2] [3, 2, 1]

    ,а резултатът от

    print(list(permutations([1,2,3])))

    да е

    [[1, 3, 2], [2, 3, 1], [2, 3, 1], [3, 2, 1], [3, 2, 1], [3, 2, 1]]

    Съжалявам за спама.

    10.05.2009 (променeно 10.05.2009)
  • P.S. защо не ползваш a.denominator?

    Причината е проста..._denominator е преди denominator в dir-а на Fraction :)...мой пропуск! Мерси за отговора!

    10.05.2009
  • Отговорих си на въпроса от преди малко, пак съжалявам за спама:)

    10.05.2009
  • @Ангел сподели с нас как го оправи, аз имам сходен проблем и от час насам го гледам тъпо :)

    10.05.2009
  • Thumbs_upThumbs_upThumbs_upThumbs_up

    Ами при мен проблема беше че не правя defensive-copy на резултата който yield-вам, след което при по-нататъшното генериране модифицирах yield-натия списък.

    С прости думи, вместо

    yield result

    правя

    yield [x for x in result]
    10.05.2009
  • Ако си сложите и едни снимки, цени няма да имате.

    10.05.2009
  • По принцип yield [x for x in result] може да се запише като yield list(result), защото

    >>> a = [1,2,3]
    >>> b = list(a)
    >>> a is b
    False

    т.е. се връща нов обект, което е напълно в кръга на нещата при положение че листовете са мютабъл

    11.05.2009
  • не е необходимо да се грижим за извиквания от рода на enumerate_fractions(Fraction()) , нали?

    12.05.2009
  • не е необходимо да се грижим за извиквания от рода на enumerate_fractions(Fraction()) , нали?

    Да, няма да има некоректни извиквания.

    "0" и "-x/y" са коректни само за enumerate_all_fractions

    12.05.2009
  • Нулата не е валиден вход за partition, нали?

    12.05.2009
  • Нулата не е валиден вход за partition, нали?

    Няма да има 0.

    12.05.2009
  • Thumbs_upThumbs_up

    Да ви скоча на партишъните

    12.05.2009
  • Ами при мен проблема беше че не правя defensive-copy на резултата който yield-вам, след което при по-нататъшното генериране модифицирах yield-натия списък.

    ок, не мислите ли обаче, че като поддържаме извиквания от типа на list(permutations([1,2,3])) малко се разваля идеята за генератори; нали уж всичко трябва да е мързеливо, а дефакто трябва да си направим списък, който функцията трябва да "маскира" като генератор; на мен по-чисто ми се вижда решение, което може д асе ползва така:

    it = permutations([1,2,3])
    print(next(it))

    но запазва ленивото оценяване; също и за partition

    пп:

    генерира всички възможни суми (като списък)

    'генерира', но като списък ?!? Tрябва ли да вдигаме StopIteration?

    12.05.2009 (променeно 12.05.2009)
  • ок, не мислите ли обаче, че като поддържаме извиквания от типа на list(permutations([1,2,3])) малко се разваля идеята за генератори;

    Никой не е казал, че така ще го викаме винаги.

    А доколкото разбрах Ангел е имал следния проблем (написано за друга задача, за да няма подсказване - трябва да се генерират [1] и после [1, 2]):

    def yield12():
        l = [1]
        yield l
        l.append(2)
        yield l
    
    for x in yield12():
        print(x)
    # [1] [1, 2]
    
    print(list(yield12()))
    # [[1, 2], [1, 2]]

    генерира всички възможни суми (като списък)

    Сега като се замисля вярно може да се тълкува двусмислено, макар и трудно - ще го оправя в условието.

    Идеята е че сумите са представени като списък, а не като tuple или set...


    Всичките ви функции трябва да са lazy!

    13.05.2009
  • за питагорожите тройки то троиката (4,3,5) и (3,4,5) разлицхни ли са т.е. и джете ли трябжа да се генерират или само едната ?

    15.05.2009
  • за питагорожите тройки то троиката (4,3,5) и (3,4,5) разлицхни ли са т.е. и джете ли трябжа да се генерират или само едната ?

    2те

    15.05.2009
  • Ако на enumerate_all_fractions се подаде Fraction(4,2) то той автоматично се конвертира до Fraction(2,1) какво правим в този случай (или иначе казано как да не се конвертира ;) ?

    16.05.2009 (променeно 16.05.2009)
  • @Александър Маринов

    Отговорено е вече, виж последния пост на първа страница и първия на втора.

    16.05.2009
  • Thumbs_up

    А и няма да се учудя, ако курса го посещават хора без особена математическа подготовка от новите "Компютърни науки" и (пази боже)"Софтуерно инж.нерство".

    Тоя Славомир за какъв се мисли, че ще дава оценка на първокурсниците!? Ще посещавам каквото си искам и с каквато си искам подготовка, щом ми е позволено, а това на него не му влиза в работата!!!

    16.05.2009 (променeно 20.05.2009)
  • Thumbs_up

    Безкрайният генератор какво точно трябва да връща-числа с плаваща запетая или нещо като низ, който да е например x+"/"+y?

    17.05.2009
  • Тоя Славомир за какъв се мисли, че ще дава оценка на първокурсниците!? Ще посещавам каквото си искам и с каквато си искам подготовка, щом ми е позволено, а това на наго не му влиза в работата!!!

    ...

    Безкрайният генератор какво точно трябва да връща-числа с плаваща запетая или нещо като низ, който да е например x+"/"+y?

    Като гледам що за въпроси задаваш, мисля че съм бил прав?

    17.05.2009 (променeно 17.05.2009)
  • Thumbs_up

    Ами ти говореше за математическата подготовка, която си ми е много добра, но по програмиране съм зле, вярно е... но съм още първи курс,така че ако може говори само по темата и не се заяждай повече.

    17.05.2009
  • Thumbs_up

    Безкрайният генератор какво точно трябва да връща-числа с плаваща запетая или нещо като низ, който да е например x+"/"+y?

    Ами упоменато е в условието по принцип - ...който да връща Fraction обекти...

    http://docs.python.org/3.0/library/fractions.html#fractions.Fraction

    17.05.2009 (променeно 17.05.2009)