Шаг 49.
Основы языка Haskell.
Основные функции библиотеки Prelude. Задачи для самостоятельного решения

    На этом шаге мы приведем перечень задач для смостоятельного решения.


   Замечание. Найдите ошибки, описки, неточности и прочие изъяны в приведенных задачах.

    1*. Определите прагматику следующей функции:

   xxx _ 0 = 0
   xxx 0 _ = 0
   xxx x y = abs ((x `quot` gcd x y)*y)

    2*. Определите прагматику следующей функции:

   yyy x y | y==0 = error "Знаменатель дроби равен 0"
           | True = (x `quot` d) % (y `quot` d)
       where d = gcd x y

    3*. Напишите функцию, определяющую абсолютную и относительную погрешность приближённого равенства

   1.492.87 ≈ π .


   Замечание ([1, с.202]). Во второй трети XX века пол-литра водки стоил 2.87 руб, а четвертинка - 1.49 руб. Оказывается, что 1.492.87 даёт хорошее приближение для числа π. (Это можно рассматривать как доказательство сбалансированности советской экономики того периода.)

    4*. Вычислите число π с помощью тригонометрических функций.

    5. [2, с.75, №8.8] Пусть f(a) - сумма цифр целого числа a. Для заданного x вычислите:

   f(f(x+2)+f(2x)) * f(x2).
Например, если x=12, то результатом является 18.

    6. (Задача-шутка) Используя некоторую функцию из библиотеки Prelude обоснуйте название дня 22 июля - "день приближённого значения числа π". Указания.

  1. Леонтий Магницкий писал (Арифметика, 1703): "В колесе же пропорция Архимедова диаметра ко окружности как 7 к 22".
  2. 3.14 - на западе так предпочитают записывать дату: вначале номер месяца, а затем - номер дня. Теперь понятно, почему "День  π", ежегодно отмечаемый Internet-сообществом, приходится на 14 марта.

    7*. Напишите функцию для вычисления значения выражения

    8. Напишите функцию, вычисляющую наименьшее из двух целых чисел, без использования функции if/then/else. Указание:

    9. Напишите функции, моделирующие операции сложения и умножения над комплексными числами.

    10*. Напишите функции, моделирующие операции сложения и умножения над кватернионами.

    11*. Напишите функцию, моделирующую операции сложения и умножения над октонионами.

    12*. [2, с.13-14, №1.4]) Будем изображать следы ног человека с помощью обычных символов на клавиатуре следующим образом

   .oooO  Oooo.
   (   )  (   )
    \ (    ) /
     \_)  (_/
Заполните следами N человек, идущих рядом и проходящих путь в S полушагов, S<12, N<12. Приведём пример для N=3 и S=5:
   .oooO        .oooO        .oooO
   (   )        (   )        (   )
    \ (  Oooo.   \ (  Oooo.   \ (  Oooo.
     \_) (   )    \_) (   )    \_) (   )
   .oooO  ) /   .oooO  ) /   .oooO  ) /
   (   ) (_/    (   ) (_/    (   ) (_/
    \ (  Oooo.   \ (  Oooo.   \ (  Oooo.
     \_) (   )    \_) (   )    \_) (   )
   .oooO  ) /   .oooO  ) /   .oooO  ) /
   (   ) (_/    (   ) (_/    (   ) (_/
    \ (          \ (          \ (
     \_)          \_)          \_)
Начало движения всегда с левой ноги снизу вверх. Шаги и расстояние между людьми всегда такие как в примере.
(1)Жуков А.В. Вездесущее число "пи". - М.: Едиториал УРСС, 2004. - 216 с.
(2)Анисимов А.Е., Пупышев В.В. Сборник заданий по основаниям программирования. - М.: Интернет-Университет Информационных Технологий; БИНОМ. Лаборатория знаний, 2006. - 248 с.

    Со следующего шага мы начнем рассматривать рекурсию.




Предыдущий шаг Содержание Следующий шаг