754
Комментарий:
|
3021
|
Удаления помечены так. | Добавления помечены так. |
Строка 3: | Строка 3: |
1. Задача 1 — Просто итератор, который что-нибудь такое внутри себя высчитывает, да хоть Пи по Лейбницу. Это меееедленно, но прооосто). Правда, Д/З по лекции — тоже Пи. 1. Задача 2 — на `yield from`, когда из одного генератора вызываются итерации другого 1. Задача 3 — на параметрический генератор, только надо придумать __хоть какой-нибудь__ пример из реальной жизни, зачем это может быть нужно. Погуглить. |
1. Задача_1, просто на итератор. * числа Фибоначчи - последовательность, начинающаяся с 1, 1, и продолжающаяся так, что очередной элемент равен сумме двух предшествующих элементов. * написать итератор fib(m,n), возвращающий числа Фибоначчи, начинаю с m-го и заканчивая n-м (m>=n), в нумерации с 1 * пример: * вход: 3, 5 * выход: 2, 3, 5 1. Задача_2, на `yield from`: Скользящее окно * написать итератор `even(seq)`, получающий на вход числовую последовательность `seq` длины не менее 3 и возвращающий её элементы, являющиеся чётными числами * написать итератор `slide(seq)`, получающий на вход числовую последовательность `seq` длины не менее 3, и возвращающий: * чётные элементы в подпоследовательности с 1-го по 3-й элемент ("окне" размером в 3 элемента) * чётные элементы в подпоследовательности с 2-го по 4-й элемент ("окно" сдвинулось на 1 элемент вправо) * далее по аналогии, пока правая граница "окна" не достигнет конца последовательности (понятно, что если в последовательности только 3 элемента, то окно сдвигать некуда) * итератор slide() должен использовать итератор even(), обращаясь к нему при помощи `yield from` * пример: * вход: 3, 4, 6, 8, 11 * выход: 4, 6, 4, 6, 8, 6, 8 * [3 4 6] 8 11 - 4 * [3 4 6] 8 11 - 6 * 3 [4 6 8] 11 - 8 * 3 4 [6 8 11] - 6 * 3 4 [6 8 11] - 8 1. Задача_3 — на [[py3doc:itertools]] (на комбинаторику, с естественной формулировкой): Священные Надписи * поклонники бога Тора используют в своих надписях три буквы: T, O, R. Надпись считается священной, если имя бога (подстрока "TOR") входит в неё ровно два раза * напишите программу-однострочник, которая при помощи itertools и filter формирует все священные надписи заданной длины, причём в алфавитном порядке * пример: * вход: 7 * выход: OTORTOR, RTORTOR, TOROTOR и т.п. |
10.22 Итераторы
- Задача_1, просто на итератор.
- числа Фибоначчи - последовательность, начинающаяся с 1, 1, и продолжающаяся так, что очередной элемент равен сумме двух предшествующих элементов.
написать итератор fib(m,n), возвращающий числа Фибоначчи, начинаю с m-го и заканчивая n-м (m>=n), в нумерации с 1
- пример:
- вход: 3, 5
- выход: 2, 3, 5
Задача_2, на yield from: Скользящее окно
написать итератор even(seq), получающий на вход числовую последовательность seq длины не менее 3 и возвращающий её элементы, являющиеся чётными числами
написать итератор slide(seq), получающий на вход числовую последовательность seq длины не менее 3, и возвращающий:
- чётные элементы в подпоследовательности с 1-го по 3-й элемент ("окне" размером в 3 элемента)
- чётные элементы в подпоследовательности с 2-го по 4-й элемент ("окно" сдвинулось на 1 элемент вправо)
- далее по аналогии, пока правая граница "окна" не достигнет конца последовательности (понятно, что если в последовательности только 3 элемента, то окно сдвигать некуда)
итератор slide() должен использовать итератор even(), обращаясь к нему при помощи yield from
- пример:
- вход: 3, 4, 6, 8, 11
- выход: 4, 6, 4, 6, 8, 6, 8
- [3 4 6] 8 11 - 4
- [3 4 6] 8 11 - 6
- 3 [4 6 8] 11 - 8
- 3 4 [6 8 11] - 6
- 3 4 [6 8 11] - 8
Задача_3 — на itertools (на комбинаторику, с естественной формулировкой): Священные Надписи
- поклонники бога Тора используют в своих надписях три буквы: T, O, R. Надпись считается священной, если имя бога (подстрока "TOR") входит в неё ровно два раза
- напишите программу-однострочник, которая при помощи itertools и filter формирует все священные надписи заданной длины, причём в алфавитном порядке
- пример:
- вход: 7
- выход: OTORTOR, RTORTOR, TOROTOR и т.п.