"Oсновните форми трябва да се оцветяват (само тези в табличката)."
Само конкретните фигури,които са дадени, или и всичките им симетрични,които, разбира се, могат да се получат?
Благодаря
Програмиране с Python » Форуми » Задачи
Game Of Life
(16 posts)-
Posted 5 years ago #
-
Да, това е доста интелигентен въпрос, на някои от фигурите освен това различните им форми не са и симетрични дори...
Аз успях да го напи
Posted 5 years ago # -
Написах си задачата без частта с оцветяването.
Posted 5 years ago # -
150-200 точки, дисплейвам 20x20 (но смятам всичко) - 20 кадъра в секунда.
Колкото до оцветяването - и моята идея е такава - мъчно е да обаче ако го няма всичко е супер лесно.
Като някой подкараPosted 5 years ago # -
Еее ти си голям бързак бе :) Аз като дисплейвам 20x20, за 150-200 точки вадя 6-7 кадъра в секунда, щото ми е балъ
Posted 5 years ago # -
Кое е бавно при вас — смятането или изчертаването?
Смятането на новото състояние на дори хиляди точки отнема малко време (линейно е). Търсенето на фигури е абсолютен максимум квадратично, което значи, че би трябвало да имате проблем да вадите 20 кадъра в секунда чак над 500-1000 точки.
След като сметнете новите състояния, само гледате кои влизат в текущо видимата област и прерисувате.
Горните размисли предполагат, че не пазите просто една матрица с флагове, къде има и къде няма точка, а отделна структура от точките.
Posted 5 years ago # -
Да абсолютно си прав, линейно е търсенето на точките, пазя си структура set(достъпа до set и dict, трябва да е константен ?) от точки по-точно защото света трябва да е безкраен нали... Не мога да го измисля с матричка с нули и единици как ще стане безкраен...
Прерисуването на точки първо маха всички нарисувани с find_withtag, после нанася новите като достъпва точките чрез координатите им, през речник от тип {coords : rect}, който се създава, когато се рисува дъската. Проверява дали точката е върху видимата част на дъската и я рисува ако е там. Това също трябва да е линейно, но сега пуснах програмата през - cProfile, и излезе че за 64x48 дъска, за около 100-150 точки със 6 кадъра в секунда, прерисуването отнема 44.749, а смятането на ново състояние 42.625, което не мога да си обясня защо е толкова бавно... Дори не съм тръгвал да пи
Posted 5 years ago # -
Не разбрах частта с оцветяването на фигурките от таблицата. Само тези, които са в таблицата или симетричните? А тези с 2-3 състояния докато се движат?
Posted 5 years ago # -
Ми то никой не каза в крайна сметка, но според мен би било по нагледно с всичките им 2-3 състояния да ги оцветяваме. Така или иначе ако го направи
Posted 5 years ago # -
бях ре
Posted 5 years ago # -
я, всъщност съм направил и 2стъпковия осцилатор, който има едва 8 състояния.
_xxx
xxx_Posted 5 years ago # -
Всички състояния трябва да се оцветяват.
Posted 5 years ago # -
Най-накрая сметнах координатите на всички състояния на фигурките и тези на точките около тях, които трябва да са мъртви, иначе можем да хващаме разни неща, които не са това което ни трябва, от сорта на тази фигура долу която би хванало за блинкър:
_xxxx_
Целият, файл с координатите е 12KB :D, а цялата проверка не забавя колкото аз си мислех, но е очевидно по-бавно дори и от преди. Колкото до симетрията, не мисля че би помогнала, особено в моят случай, когато не пазя матрица с 0 и 1, ами структурка с точките, а и правя проверката за оцверяване само в малко по-
Posted 5 years ago # -
Аз направих
Posted 5 years ago # -
Реализацията ми на C++ за тази сцена прави 2000 цикъла за 6.125сек, като пазя безкрайно поле и всички точки.
Posted 5 years ago # -
espr1t: Защо не погледне
Posted 5 years ago #
Reply
You must log in to post.