<p>
<div class="moz-text-flowed" style="font-family: -moz-fixed; font-size: 13px;" lang="x-central-euro">Zdrav&iacute;m, <br /> <br />m&aacute;m tak&yacute; trochu algoritmick&yacute; probl&eacute;m! <br /> <br />Na adrese <a class="moz-txt-link-freetext" href="http://code.activestate.com/recipes/576961/">http://code.activestate.com/recipes/576961/</a> som sa dop&aacute;tral k pre mňa  dosť z&aacute;hadnej algoritmickej kon&scaron;trukcii, ktor&uacute; tam autor naz&yacute;va zhruba ako deferred output. &nbsp;<br /> <br />Ide o tento algoritmus: <br /> <br />def fibonacci(): <br />&nbsp;&nbsp;&nbsp; """ Funkcia na poč&iacute;tanie Fibonachiho č&iacute;siel """ <br />&nbsp;&nbsp;&nbsp; def deferred_output(): <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for i in output: <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; yield i <br /> <br />&nbsp;&nbsp;&nbsp; result, c1, c2 = tee(deferred_output(), 3) <br />&nbsp;&nbsp;&nbsp; paired = map(add, c1, islice(c2, 1, None)) <br />&nbsp;&nbsp;&nbsp; output = chain([0, 1], paired) <br />&nbsp;&nbsp;&nbsp; return result <br /> <br />#pr&iacute;klad použitia funkcie: <br />print(list(islice(fibonacci(), 50))) <br /> <br />S&uacute; mi jasn&eacute; met&oacute;dy ako list, islice, chain a mysl&iacute;m, že aj map, tee a využitie  gener&aacute;tora. <br /> <br />Ale ako je možn&eacute;, že v gener&aacute;tore sa využ&iacute;va premenn&aacute;, ktor&eacute; e&scaron;te nebola nikde  definovan&aacute;? !!! Pravdepodobne sa tam nejako využ&iacute;va vlastnosť gener&aacute;tora, ktor&yacute;  premennn&uacute; 'output' využije vlastne až keď sa vyvol&aacute; next() na gener&aacute;tore a v tej  dobe vlastne premenn&aacute; už asi existuje... ale neviem, jaksik tie my&scaron;lienky tam  využit&eacute; neviem definovať a uchopiť <span class="moz-smiley-s1"><span> :-) </span></span> <br /> <br />A v&ocirc;bec ako je to tam cel&eacute; prepojen&eacute; dokopy, z toho som asi tot&aacute;lny magor... <br /> <br />To ako je to uroben&eacute;, jedn&aacute; sa o nejak&yacute; pattern, idi&oacute;m alebo proste nejak&uacute;  techniku, ktor&aacute; sa bežne použ&iacute;va? Autor na tej str&aacute;nke p&iacute;&scaron;e, že je to technika,  ktor&aacute; sa bežne použ&iacute;va v jazyku Haskell. Čiže je to asi prudko funkcion&aacute;lne, ale  aj tak by ma zauj&iacute;malo viac, čo je za t&yacute;m, ak s t&yacute;m teda m&aacute;te niekto nejak&eacute;  sk&uacute;senosti... <br /> <br />Mat&uacute;&scaron; <br /> <br />PS. Ten algoritmus by mal bežať na Python 2.6 aj 3, akur&aacute;t pre 2.6 by sa  namiesto map() muselo použiť imap(). <br /> <br /></div>
</p>