@Стилян и @Янислав, точно под цитираното изречение има пример с endless_growing_sequences
. Това се има предвид. Първия аргумент може да не е списък, а безкрайна поредица.
Трета задача
Извинявам се за глупавия въпрос, защото видях, че подобен е задаван вече. Да разбираме ли, че всички генератори, от които имаме нужда, ще са дефинирани в generator_definitions, пожене в предишен пост се отговори, че генераторите в първия аргумент на interwined_sequences няма да са глобални. По това съдя, че няма как да използваме alphabet, fibonacci от предишните задачи ?
alphabet
,fibonacci
иprimes
са достъпни от вашия код, тъй като част от задачата е да ги напишете. Тяхната имплементация е в същия модул, в който е иintertwined_sequences
, така че той може да ги извиква при необходимост.Разбирам, а чисто информативно, ако имаме проблем с някоя от задачите, това влияе ли на оценяването върху останалите(примерно последната спрямо останалите)?
Ето едни тестове от мен : https://github.com/stoianivanov/python_fmi/blob/master/sample_test.py
Ако може да ми кажете дали са правилни
@Стоян, стойностите, с които проверяваш в някои от тестовете ти не са правилни- те предполагат, че при повторно повикване на един и същ генератор се вика втора негова инстанция, а в условието пише "Ако два елемента на списъка със спецификацията имат еднаква стойност за 'sequence', то те реферират към един и същи генератор, от който продължаваме „да взимаме“ стойности по-късно".
@Стоян Според мен на
test_intertwine_fpaapf
резултата трябва да бъде[1, 2, 'a', 'b', 3, 1]
, а не[1, 2, 'a', 'а', 3, 1]
, защото при всяко следващо срещане след първото na alphabet, трябва да използваш инстанцията на първото срещане на alphabet(В един от горните коментари го има и пример има). На тозиtest_two_factorial
резултати би трябвало да бъде[1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800, 39916800, 479001600]
, а не[1, 2, 6, 24, 1, 2, 6, 1, 2, 6, 24, 120]
, защото всяко извикване наfactorial()
трябва да ти генерира елементите, които следва, а не да започва от начало.За
test_generator_with_parametrs
иtest_generator_with_parametrs_generator_a
не знам точно дали трябва да бъде така, защото първото извикване наmultiples_of
е с аргумент 12, а второто е с аргумент 3, а в условието пише:при повторно срещане на генератор очакващ аргументи, няма нужда те да бъдат указвани, защото се използва същата инстанция.
Това, доколкото разбирам би трябвало да означава, че дори и да се подаде аргумент при второто срещане трябва да се използва аргумента от първото срещане, следователно 12 и крайните резултати да бъдат: На
test_generator_with_parametrs
[12, 24, 36, 48, 60, 1, 1, 1, 72, 84, 96]
, а наtest_generator_with_parametrs_generator_a
[12, 'a', 'a', 'a', 24, 36, 48]
.Даже аргументите на генераторите трябва да бъдат kewords only, мисля.
Получавам същите резултати като @Илиян Якимов. Тоест някои от тестовете са грешни :)
@Илиян Якимов на теста: test_intertwine_fpaapf мисля, че не си прав. {'sequence': 'alphabet', 'code': 'lat', 'length': 1}, {'sequence': 'alphabet', 'code': 'bg', 'length': 1}, подавам два различни генератора, не трябва ли този с българските букви пак да почне от 'а'
Аз го направих и по двата начина(напр. при 2 срещания с дължина: 3 и lat и bg съответно ми извежда [a, b, c, а, б, в] в единия вариант и [a, b, c, d, e, f] в другия съответно) и ако може някой да потвърди, коя е вярната версия, за да знаем какво да пращаме ? :)
(поправени) тестове и от мен :)
@Стояне, не. В условието си пише, че за всяко следващо срещане на генератор, който вече си използвал, трябва да извикаш инстанцията от първото срещане, а не текущата, която си срещнал. В предните постове имаше точно този въпрос. Например, това нещо
a = [{'sequence': 'alphabet', 'letters': 'bggfdghjhj', 'length': 2}, {'sequence': 'alphabet', 'letters': 'сдкйбггс', 'length': 2}, {'sequence': 'alphabet', 'code': 'bg', 'length': 2}, {'sequence': 'alphabet', 'code': 'lat', 'length': 2}, ]
трябва да изведе
['b', 'g', 'g', 'f', 'd', 'g', 'h', 'j']
, а не['b','g','с','д','a','б','a','b']
.П.С. Тестове на @Александър минават при мен.
Един въпрос:
generator_definitions
не трябва ли да е keyword-only аргумент според условието? При мен четири от тестовете на @Александър гърмят със забележката, че се подават 2 позиционни аргумента, вместо 1.@Александър, виж последния коемнтар на @Георги, иначе тестовете са супер. Като го поправиш ще получиш и точка.
тестове, поправени. Извинявам се за грешката. @Георги, @Евгени благодаря за забележката :).
"В случай, че някой конструктор в generator_definitions приема аргументи, те трябва да бъдат описани в dict-а за съответния конструктор."
Ако някой конструктор приема допълнителни аргументи, те keyword-only ли трябва да са? И може ли да приема повече от един допълнителен аргумент?
@Красимир приеми, че са keyword only, те са част от dict-а, така че няма как да знаеш в какъв ред да ги подадеш така или иначе. Може да са произволен брой и с произволни имена(освен
sequence
иlength
разбира се).
Трябва да сте влезли в системата, за да може да отговаряте на теми.