Кодинг-марафон. Задача 9.
Напишите функцию, которая будет возвращать строку, представляющую собой ASCII-рисунок ромба. Функция должна иметь сигнатуру def diamond(letter: str, background: str=' ') -> str:
Функция получает на вход одну букву латинского алфавита в верхнем регистре и один символ, который будет использован в качестве фона для рисунка:
>> diamond('A') A >> diamond('B') A B B A >> diamond('D', '-') ---A--- --B-B-- -C---C- D-----D -C---C- --B-B-- ---A---
КАЖДАЯ строка рисунка заканчивается символом \n
, на вход может подаваться любая из 26 букв латинского алфавита и любой ASCII-символ как параметр background
. Предполагается, что ввод всегда валиден, не нужно проверок и исключений.
Решение
from string import ascii_uppercase def diamond(letter: str, background: str = ' ') -> str: length = ascii_uppercase.index(letter) template = [[background for __ in range(length * 2 + 1)] for _ in range(length + 1)] template[0][length] = 'A' for index in range(1, len(template)): template[index][length - index] = ascii_uppercase[index] template[index][-(length - index) - 1] = ascii_uppercase[index] template.extend(list(reversed(template))[1:]) return '\n'.join(''.join(_) for _ in template) + '\n'