Элементы функционального программирования

Домашнее задание

  1. {i} Прочитать в учебнике про Лямбда-функции и инструменты фунционального программирования.

  2. Решить «задачу про матанализ»

    • (Написать генератор входных данных)
    • в три строчки
      • подсказка: первоначальное присваивание можно сделать одной строкой
    • в две строчки
      • подсказка: чтобы присвоить элементу списка некоторое значение (например, в теле лямбда-функции) можно вместо P[i]=k использовать P.__setitem__(i,k)

      • грубая подсказка: __setitem__ возвращает None

    • в одну строку вообще без присваиваний (теперь это уж дело совсем простое)
    • Решение: Matan.py

  3. Решить «задачу про письмо»

    • (Написать генератор входных данных)
    • хоть как-нибудь, но быстро
    • в две строки (опять пригодится reduce())

      • подсказка: возможно, станет проще, если введённую строку превратить в список True и False, например, так: map(str.isupper,raw_input())

    • в одну строку
      • подсказка: если некоторый объект S по ходу вычислений нужен несколько раз (например, в виде S, [S.count(True), S.count(True), 0]), а сам этот обект — функция, вычисление которой нельзя повторить (например, raw_input()), помогает применение (labmda S: S, [S.count(True), S.count(True), 0])(raw_input()). Обратите внимание на то, что результат выражения labmda S: S, [S.count(True), S.count(True), 0] в первых скобках — функция, которая применяется к выражению во вторых скобках

      • Решение: NOCamelCase.py

Условные обозначения


CategoryClass CategoryVmsh

LecturesVMSH/2012-04-25 (последним исправлял пользователь FrBrGeorge 2012-05-02 08:59:46)