Здравейте!
Имате публикувано трето предизвикателство. Срока ви е 2 дена (до 29.03 13:00).
Ползвайте тази тема при въпроси и неяснотии свързани с него.
Здравейте!
Имате публикувано трето предизвикателство. Срока ви е 2 дена (до 29.03 13:00).
Ползвайте тази тема при въпроси и неяснотии свързани с него.
Здравейте!
Доколкото разбирам искате да имплементираме генератор, който връща итеруемо, на което като приложим next(), да връща всеки път различна дъска, която се получава от предишната върната дъска по правилата на играта. И така до изчерпване на количествата. А какво се има предвид под изчерпване на количествата? Докато не получим правилната наредба на дъската ли? Ако е така, то реално искате да напишем генератор, който решава тази игра, т.е връща редица от ходове, които водят до правилната наредба на дъската.
Правилно ли ви разбирам?
Трябва ли да връщаме вече решени дъски? Например: [[1,2,3],[4,5,6],[7,8,0]]
Здравейте,
@Веселин Не съвсем. Например ако отвориш http://mypuzzle.org/sliding и натиснеш "Restart Puzzle" ще ти се генерира нова дъска. Силно се съмнявам тя да зависи от предишната.
На дъска nхn, имате X възможни подредби. Не всички от тях могат да бъдат доведени до решение. Генератора трябва да връща винаги различна дъска и винаги възможна за подредба. Те са краен брой -> имаме изчерпване на количеството.
@Теодор Да, трябва. Трябва също така да са представени в точно описания в задачата формат.
@Христо Сега разбрах. Аз мислех, че искате от нас да напишем генератор, който след като бъде изчерпан и следвайки подредбите, които връща, ви води до решена дъска.
Как е по-добре да се направи? Така:
while True:
try:
#MAGIC
except StopIteration:
raise StopIteration
Или така:
while True:
#MAGIC
Ако е втория начин, може ли така:
while #MAGIC:
pass
#MORE_MMAGIC
for #MAGIC in #ALL_THE_MAGIC:
#USE_THIS_ONE_MAGIC
Трябва ли да работи за дъски, разнични от 4х4?
Всякакви дъски n x n (квадратни)
Нe разбирам защо кодът ми не работи
https://gist.github.com/anonymous/666e9e173fa3b93bb6731b688955a45e
Като заменя на 39ти ред solvable с True си принти дъските както трябва - подред, всички възможни. Не мога да си намеря грешка и във функцията solvable, приложих същата формула, която пишеше в статията ... Хелп?
@Симеон solvable
функцията изглежда наред. if solvable(board, size)
всеки път проверява дали board
е валидна дъска, но board
не се променя и е винаги [0, 1, 2, ...]
. Мисля, че искаш този if да проверява дали текущата пермутация е решима т.е. да стане на if solvable(perm, size)
. В случая else-а е излишен. Ако пермутацията не е решима, генераторът продължава със следващата (ако има такава). Не би трябвало да връща None
, но това може би е било с цел дебъгване?
if solvable(perm, size) - да, това е била грешката, винаги е най-голямата тъпотия, докато търся някаква по-сериозна грешка. Благодарско!
Трябва да сте влезли в системата, за да може да отговаряте на теми.