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

Game Of Life

(16 posts)

  1. na
    Member

    "Oсновните форми трябва да се оцветяват (само тези в табличката)."
    Само конкретните фигури,които са дадени, или и всичките им симетрични,които, разбира се, могат да се получат?
    Благодаря

    Posted 5 years ago #
  2. Pitboss
    Member

    Да, това е доста интелигентен въпрос, на някои от фигурите освен това различните им форми не са и симетрични дори...

    Аз успях да го напи

    Posted 5 years ago #
  3. Написах си задачата без частта с оцветяването.

    Posted 5 years ago #
  4. 150-200 точки, дисплейвам 20x20 (но смятам всичко) - 20 кадъра в секунда.
    Колкото до оцветяването - и моята идея е такава - мъчно е да обаче ако го няма всичко е супер лесно.
    Като някой подкара

    Posted 5 years ago #
  5. Pitboss
    Member

    Еее ти си голям бързак бе :) Аз като дисплейвам 20x20, за 150-200 точки вадя 6-7 кадъра в секунда, щото ми е балъ

    Posted 5 years ago #
  6. Кое е бавно при вас — смятането или изчертаването?

    Смятането на новото състояние на дори хиляди точки отнема малко време (линейно е). Търсенето на фигури е абсолютен максимум квадратично, което значи, че би трябвало да имате проблем да вадите 20 кадъра в секунда чак над 500-1000 точки.

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

    Горните размисли предполагат, че не пазите просто една матрица с флагове, къде има и къде няма точка, а отделна структура от точките.

    Posted 5 years ago #
  7. Pitboss
    Member

    Да абсолютно си прав, линейно е търсенето на точките, пазя си структура set(достъпа до set и dict, трябва да е константен ?) от точки по-точно защото света трябва да е безкраен нали... Не мога да го измисля с матричка с нули и единици как ще стане безкраен...

    Прерисуването на точки първо маха всички нарисувани с find_withtag, после нанася новите като достъпва точките чрез координатите им, през речник от тип {coords : rect}, който се създава, когато се рисува дъската. Проверява дали точката е върху видимата част на дъската и я рисува ако е там. Това също трябва да е линейно, но сега пуснах програмата през - cProfile, и излезе че за 64x48 дъска, за около 100-150 точки със 6 кадъра в секунда, прерисуването отнема 44.749, а смятането на ново състояние 42.625, което не мога да си обясня защо е толкова бавно... Дори не съм тръгвал да пи

    Posted 5 years ago #
  8. SlayerX
    Member

    Не разбрах частта с оцветяването на фигурките от таблицата. Само тези, които са в таблицата или симетричните? А тези с 2-3 състояния докато се движат?

    Posted 5 years ago #
  9. Pitboss
    Member

    Ми то никой не каза в крайна сметка, но според мен би било по нагледно с всичките им 2-3 състояния да ги оцветяваме. Така или иначе ако го направи

    Posted 5 years ago #
  10. бях ре

    Posted 5 years ago #
  11. я, всъщност съм направил и 2стъпковия осцилатор, който има едва 8 състояния.

    _xxx
    xxx_

    Posted 5 years ago #
  12. Всички състояния трябва да се оцветяват.

    Posted 5 years ago #
  13. Pitboss
    Member

    Най-накрая сметнах координатите на всички състояния на фигурките и тези на точките около тях, които трябва да са мъртви, иначе можем да хващаме разни неща, които не са това което ни трябва, от сорта на тази фигура долу която би хванало за блинкър:

    _xxxx_

    Целият, файл с координатите е 12KB :D, а цялата проверка не забавя колкото аз си мислех, но е очевидно по-бавно дори и от преди. Колкото до симетрията, не мисля че би помогнала, особено в моят случай, когато не пазя матрица с 0 и 1, ами структурка с точките, а и правя проверката за оцверяване само в малко по-

    Posted 5 years ago #
  14. crocodil
    Member

    Аз направих

    Posted 5 years ago #
  15. Реализацията ми на C++ за тази сцена прави 2000 цикъла за 6.125сек, като пазя безкрайно поле и всички точки.

    Posted 5 years ago #
  16. espr1t: Защо не погледне

    Posted 5 years ago #

RSS feed for this topic

Reply

You must log in to post.