Написать функцию cross(width, paper, ink), которая на вход принимает три параметра — натуральное число width⩾2 и две строки единичной длины, paper, и ink. Возвращать эта функция должна строковый объект, при выводе на экран которого получается приведенная ниже фигура. Это квадрат шириной width, стороны и диагонали которого состоят из строки ink, а остальное пространство заполнено строкой paper.
- Пояснения и алгоритм — в полном тексте задачи
1 print(cross(11, ".", "*"))
Замечание 1: для того, чтобы строковый объект при выводе состоял из нескольких строк, в нём должны присутствовать конструкции вида "что-то-там\nчто-то-там. Проверьте, например, как работает print("123\n4567\n89").
Замечание 2: строки можно умножать на числа. Например, "*" * 10 — это строка из 10 звёздочек
- Замечание 3: строки можно складывать (они от этого склеиваются).
Описание алгоритма на русском:
- Будем накапливать многострочный ответ
Первая строка — это просто width штук символов ink
- По всем номерам строк, кроме первой и последней
Добавим к ответу перевод строки "\n"
Добавим к ответу левую стенку, ink
По всем номерам столбцов, кроме первого и последнего
Если если добавляемый символ лежит на диагонали (длля одной диагонали номер столбца равен номерц строки, для другой — их сумма равна ширине квадрата)
Добавим к ответу ink
В противном случае
Добавим к ответу paper
Добавим к ответу правую стенку, ink
Добавим к ответу "\n" и последнюю строку (такую же, как первая)
*********** **.......** *.*.....*.* *..*...*..* *...*.*...* *....*....* *...*.*...* *..*...*..* *.*.....*.* **.......** ***********
Есть несколько способов решить эту задачу, необязательно придерживаться указанного алгоритма