Differences between revisions 2 and 3
Revision 2 as of 2021-11-03 16:45:34
Size: 3006
Editor: FrBrGeorge
Comment:
Revision 3 as of 2022-01-17 15:31:58
Size: 3110
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 21: Line 21:
 * ` ` Если если добавляемый символ лежит на диагонали (т. е. если номер строки равен номеру столбца)  * ` ` Если если добавляемый символ лежит на диагонали (длля одной диагонали номер столбца равен номерц строки, для другой — их сумма равна ширине квадрата)

Написать функцию 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" и последнюю строку (такую же, как первая)

***********
**.......**
*.*.....*.*
*..*...*..*
*...*.*...*
*....*....*
*...*.*...*
*..*...*..*
*.*.....*.*
**.......**
***********

Есть несколько способов решить эту задачу, необязательно придерживаться указанного алгоритма


CategoryHomework

Python/GeoPython2021/Homework_Cross (last edited 2022-01-17 15:31:58 by FrBrGeorge)