10.11 Числа и строки

Задачи

  1. <!> Задача_1: Fractions

    • https://docs.python.org/3/library/fractions.html

    • Заданы два многочлена от х (А(х), В(х)) с рациональными коэффициентами, а также рациональные числа s и w. Проверить, является ли s решением уравнения A(x)/B(x)=w

    • Структура ввода: s, w, степень_А, коэффициенты_А, степень_В, коэффициенты_В. Числа задаются в виде m или m/n, где m, n - целые, n - положительное.

    • В программе-решении должна присутствовать функция, способная получать на вход как рациональные, так и вещественные числа, и возвращающая True или False.

    • Тестовый пример 1:
      • уравнение: $$ (x^2 -(5/2)x + 1) / (x+3) = -1/8; s=1 $$; результат проверки: True

        Input (1):

        1, -1/8, 2, 1, -5/2, 1, 1, 1, 3

        Output (1):

        True
    • Тестовый пример 2:
      • уравнение то же; s=11/12; результат проверки: False

        Output (2):

        False
    • Тестовый пример_3:
      • уравнение то же; s=-3; результат проверки: False

        Output (3):

        False
  2. <!> Задача_2: График функции

    • Ввести через пробел ширину W и высоту H экрана, A и B, и произвольную всюду на [A, B] определённую python-формулу от x, которая может включать в себя функции из модуля math. Вывести с помощью "*" растровый график этой функции

    • A, B (A < B), а также минимальное и максимальное значение функции могут оказаться любыми.

    • График может получиться страшным из-за дискретности, если мы сильно не попали в экстремум. Например, график синуса от -61 до 61 страшный

      • (Неправда! Он красивый! Только на график синуса не похож… -- FrBrGeorge 2021-10-15 21:08:39)

    • График должен быть непрерывным
      • TODO пояснение про точки vs. отрезки

    • В идеале график должен занимать все строки и столбцы «экрана»

      Input (1):

      40 20 -6 6 sin(x)

      Output (1):

          **                  **
         *  *                *  *
        *   *               *    *
       *     *              *    *
       *     *             *     *
      *      *             *      *
      *       *           *       *
      *       *           *        *
              *           *        *
               *         *         *
               *         *          *
               *         *          *
                *       *           *        *
                *       *            *      *
                 *      *            *      *
                 *     *             *      *
                 *     *              *    *
                  *   *               *    *
                   *  *                *  *
                    **                  **

      Input (2):

      20 24 5 50 (x-13)**2+x+1

      Output (2):

                         *
                        *
                        *
                        *
                       *
                       *
                      *
                      *
                      *
                     *
                     *
                    *
                    *
                   *
                   *
                  *
                  *
                 *
                *
                *
               *
              *
      *     **
       *****
    • /!\ К этой задаче тесты делать нужно, но результаты перекрёстного тестирования учитываться на будут, потому что способы округления и соблюдения непрерывности у всех могут оказаться разными

  3. <!> Задача_3: Форматирование

    • Вводится ASCII-art, представляющий прямоугольный контейнер, заполненный жидкостью и/или газом ("#" — стенки, "." — газ, "~" — жидкость)
    • Контейнер следует повернуть на 90° и вывести (жидкость и газ перераспределятся):
    • На входе слои жидкости заполнены целиком, от края до края. Неполный слой жидкости на выходе дополняется до полного. Например, если в контейнер-ответ налить ещё три капли и повернуть обратно, он окажется полным)
    • Также следует вывести горизонтальную диаграмму долей объёма, занимаемых газом и жидкостью:
      • строка для газа состоит из символов '.', для жидкости — из символов '~'
      • ширина диаграммы (т.е. длина её наибольшей строки) фиксирована и равна 20 символам
      • справа от каждой строки выводится в виде x/y исходная доля объёма соответствующей субстанции от объёма контейнера, сокращать дроби не нужно

      • дроби должны быть выравнены так, чтобы
        • самые правые их символы располагались в одной и той же позиции,
        • расстояние между самой длинной строкой и дробью — один пробел
      • при расчёте числа символов в строке, для округления использовать функцию round()

      Input:

      ########
      #......#
      #~~~~~~#
      #~~~~~~#
      ########

      Output:

      #####
      #...#
      #...#
      #~~~#
      #~~~#
      #~~~#
      #~~~#
      #####
      ..........            6/18
      ~~~~~~~~~~~~~~~~~~~~ 12/18

LecturesCMC/PythonIntro2022/Prac/05_StringsNumbers (последним исправлял пользователь FrBrGeorge 2022-10-17 23:31:34)