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

Трета задача

  • Thumbs_up

    Да, часът ти влияе ;)

    Както писах, не го правя без __getitem__, просто е скрит(не му бях обърнал внимание в __getattribute__) и неможе да бъде извикан с q.__getitem__(#) (каето е направено в теста(добре де не е точно така - използван е map(q.__getitem__, range(4)))), но когато се използва q[#] интерпретатора, "някакси", успява да извика __getitem__ и сработва.

    Работата е там че в условието на задачата не се изисква този метод да бъде пряко достъпен, а в теста - да.

    @Владимир Коричков Да

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

    @Иван Живков Ако може само да кажеш дали връщаш ли object.__getattribute__(self, name) в края на Quaternion.__getattribute__ метода

    04.04.2009 (променeно 04.04.2009)
  • Аз пък не мога да разбера какво се иска да прави метода unit() -

    Единичен кватернион

    Quaternion(1, 1, 1, 1).unit() # Quaternion(0.5, 0.5, 0.5, 0.5)

    Каква точно му е идеята?

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

    Всичко нужно за Кватернионите

    Хм, не. Връщам само това което е нувно за изпълнението на дадените условия.

    04.04.2009
  • Thumbs_up

    http://en.wikipedia.org/wiki/Quaternion

    Частното на Quaternion-а и нормът му (подробности пише в секцията "Conjugation, the norm, and division")

    А какво се предполага да става в такъв случай:

    Quaternion(0,0,0,0).unit() #(освен че в момента става делене на нула :-) )

    @Иван Живков

    Мисля че това може да ти е от полза: http://docs.python.org/...tamodel.html#... (частта за връщане на object.__getattribute__)

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

    @Иван Живков

    Схванах какво си направил - просто не бях помислил, че може да му хрумне на някой да напише прекалено "рестриктиращ" __getattribute__.

    Де факто ти си използвал номера, който ти позволява да имаш .__getitem__, но не и [i] :)

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

    А какво се предполага да става в такъв случай: Quaternion(0,0,0,0).unit() (освен че в момента става делене на нула :-) )

    Няма да има такъв тест, т.к. данните са некоректни :)

    04.04.2009
  • Thumbs_up

    Трябва да работят м/у: два кватернионa; кватернион и int/float; int/float и кватернион

    Как се прави тази проверка дали нещо е int ,например

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

    Как се прави тази проверка дали нещо е int ,например

    Има го в слайдовете - no comment по този повод

    04.04.2009
  • Thumbs_up

    Аз ако го бях намерил нямаше да питам :P

    04.04.2009
  • Thumbs_up

    Аз ако го бях намерил нямаше да питам :P

    ООП2 (преди атрибутите)

    04.04.2009
  • Thumbs_up

    Оф, вярно че е това! Мерси много, много съм глупав :)

    04.04.2009
  • Thumbs_up

    Не мога да разбера как точно работи повдигането на степен за Кватернионите, от математическа гледна точка. Моля, ако някой знае - да ми обясни.

    Редактирано: Мисля, че го схванах - вече направих умножението и пробвах да умножа Quaternion(1,1,1,1)*Quaternion(1,1,1,1) и както изглежда това е квадрата... мисля че ми стана ясно

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

    Редактирано: Мисля, че го схванах - вече направих умножението и пробвах да умножа Quaternion(1,1,1,1)*Quaternion(1,1,1,1) и както изглежда това е квадрата... мисля че ми стана ясно

    Аха, q ** n е q * q * ... * q (n times)

    04.04.2009
  • Thumbs_up

    Ами аз прочетох, каквото имаше, но не разбрах Quaternion() искаме просто да ни създава нещо или искаме да ни връща 0 или пък да ни връща 0+0i+0j+0k? Трябва ли във функцията да има print(...) например? И освен това не разбрах за какво служи __init__ и по какво се различава от някаква функция с произволно име?

    04.04.2009
  • Thumbs_up

    не разбрах Quaternion() искаме просто да ни създава нещо или искаме да ни връща 0 или пък да ни връща 0+0i+0j+0k?

    Quaternion()|Quaternion(3)|Quaternion(1, 2, 3, 4) - създават обект от тип Quaternion, можем да го използваме примерно q = Quaternion() и q = q * 2

    Трябва ли във функцията да има print(...) например?

    Не ( употребата на print e "забранена" - Указания за писане и изпращане на задачите ). Коментарът 0+0i+0j+0k при описанието на конструктора има за цел да ви каже какъв кватернион се получава.

    И освен това не разбрах за какво служи __init__ и по какво се различава от някаква функция с произволно име?

    __init__ е конструктора на класа. (виж ООП1 слайд 11)

    04.04.2009
  • Thumbs_upThumbs_up

    аз да питам някакви резултати за втората задача ще има ли скоро ... и Николай скоро ще се появи ли на лекция липсва ми :Д

    04.04.2009
  • Thumbs_up

    Ники се очаква да дойде на теста :) (но не мога да гарантирам, т.к. това са данни от преди почти 1 седмица)

    04.04.2009
  • за резултатите нищо не каза...май нямаш информация :)

    04.04.2009 (променeно 04.04.2009)
  • Thumbs_upThumbs_up

    Митко завежда втора задача и не е online в момента, да му звъня събота вечер за това...

    А не ми се искаше да ви излъжа като с контролното.

    04.04.2009
  • Thumbs_up

    Не ми е ясна частта с хеш функцията, а именно, че нещо връзката с примера под нея ми се губи. Малко разяснения относно това, какво трябва да направим, биха дошли добре. Ако се абстрахирам от примера и чета само текста, а именно "Валидна хеш функция" го разбирам като произволно дефинирана хеш функция и нищо повече.

    05.04.2009
  • Thumbs_upThumbs_up

    Не ми е ясна частта с хеш функцията, а именно, че нещо връзката с примера под нея ми се губи. Малко разяснения относно това, какво трябва да направим, биха дошли добре. Ако се абстрахирам от примера и чета само текста, а именно "Валидна хеш функция" го разбирам като произволно дефинирана хеш функция и нищо повече.

    Главното, което се има в предвид под валидна хеш функция е тя да е детерминистична и с коректен "range" за python (примерно да не връща стойности от тип dict).

    Другата част от условието ("гледайте да не връщате прекалено малък набор от стойности") се отнася да няма прекалено много колизии примерно

    hash(Quaternion(0, 1, 2, 3) != hash(Quaternion(3.2, 3.4, 313, 43242)) # True

    Идеята на примера е че, за да вкараш нещо в set то(нещото) трябва да може да се хешира (да има съответния метод). Та примера е просто че set от Quaternion-и работи.

    05.04.2009
  • Thumbs_up

    Така вече нещата станаха доста по-ясни, надявам се, и не само за мен.

    05.04.2009
  • Thumbs_up

    ** с какво се имплементира и как се проверява това. Мерси предварително и сори за може би тъпия въпрос!!!

    05.04.2009
  • Thumbs_upThumbs_upThumbs_up

    __pow__ и те съветвам да ползваш документацията - http://docs.python.org/3.0/ (търсачката там е прилично удобна - дори и намира)

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