Първо предизвикателство

  1. Харесва ми логиката на Димитър, само че в условието има "по-големи от него".

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

  2. Стояне, не си играй толкова да мислиш относно бързоефективност, Python не е мислен с тази цел .На състезание например ако ти се падне тази задача отваряш google.com намираш списъка с перфектните числа вкарваш го в един списък и просто проверяваш дали числото се съдържа там. (Ако решиш да дразниш проверяващите можеш да го направиш и със серия if-ове-> гледах как един от тях направо си е изплакал очите на едно такова решение) Тук се иска просто да напишеш програма, която проверява дали числото е перфектно. (Подсказка, да използваш списъци и условни конструкции, виж лекциите).

    Впрочем в тестовете ще има ли числа по-големи от 10 ^ 10. Eclipse-a нещо ми изтрещя на такова число. Иначе казано, кога препълваме стека (Stackoverflow) с Python.

  3. Времето за първото предизвикателство тъкмо изтече. Гледам, че колегите масово са писали някакви кратки решения, с каквото беше и моят първи опит. Даже функцията си стои в крайния ми код. :)

    Тук се пораждат и два въпроса у мен:

    1. Каква точно е основната цел на предизвикателствата? Бързо решение и за по-шантав вход? Кратък и красив питонски код?
    2. В конкретния случай ми се стори, че 6-редовата ми функция просто не е достатъчно добро решение, тъй като просто забива за малко по-дълги числа и се наложи да имплементирам малко по-ефективни алгоритми за проверката. Може ли в условието да давате поне някакви ориентировъчни ограничения за време/изходни стойности?
    3. Може ли след изтичане на срока за предаване да публикувате тестовете, с които се е тествало.
    1. Скоро(не по-късно от лекцията в понеделник) ще публикуваме тестовете в github.

    2. По-скоро бих казал, че основната цел е кратък, ясен за четене и разбиране код, който работи. Страхотна ефективност не е задължителна в повечето случаи(освен ако не сме казали изрично).

    Не мога да ти кажа какъв е точно timeout-а на тестовете, но не мисля, че е твърде малък.

  4. Имам въпрос по първото предизвикателство: Кода ми:

    def is_perfect(n):
        div = [1]
        [div.append(i) for i in range(2,n/2+1) if n%i == 0]
        return sum(div) == n
    

    Не е минал тестовете и гърми с грешка, че не може да използва float na мястото на int. Явно съм ползвал стар компилатор, защото при мен всичко си минаваше.

    Но оттук следва въпроса, освен range който очаква int,кои други структури изискват числа от определен тип ? (http://stackoverflow.com/questions/15173715/why-is-there-a-typeerror)

    За справка, това би трябвало да мине :

    def is_perfect(n):
        div = [1]
        [div.append(i) for i in range(2,int(n/2+1)) if n%i == 0]
        return sum(div) == n
    
  5. @Орлин – въпроса ти е малко нереалистичен. За някои конструкции е очевидно (напр. range), за някои няма значение (напр. +), а някои са доста изненадващи (math.ceil), макар да имат сериозна вътрешна локига.

    В крайна сметка – пробвай и виж. Хубавото на Python, е че feedback-а е изключително лесен – пускаш конзолата и пробваш.

Трябва да сте влезли в системата, за да може да отговаряте на теми.