Операции с текстами
Разбор одной из задач
Задача состояла в том, чтобы реализовать функцию print_square(n)
,
печатающую полый квадрат \(n\times n\).
Приведём две реализации: первая пользуется оператором умножения текста на число, а вторая парой циклов имитирует работу каретки, а «цвет» пикселя считает отдельной функцией.
Реализация 1
def print_square(n):
line_a = '*' * n + '\n'
line_b = '*' + ' ' * (n-2) + '*\n'
if n >= 2: print(line_a + line_b*(n-2) + line_a)
elif n == 1: print('*')
else: print('')
Реализация 2
def print_square(n):
for y in range(n):
for x in range(n):
print(pixel(n,x,y),end='')
print()
def pixel(n,x,y):
if x == 0 or x == n-1: return '*'
if y == 0 or y == n-1: return '*'
return ' '
Упражнения
- Реализовать функцию
print_squares(n,k)
, печатающую друг за другомk
квадратов \(n\times n\). Пример работы для \(n=4\), \(k=4\):
**** **** **** ****
* * * * * * * *
* * * * * * * *
**** **** **** ****
- Реализовать функцию
print_diamond(n)
, печатающую «ромбик» с «диагональю» \((2n-1)\). Пример работы для \(n=3\):
*
* *
* *
* *
*
- Реализовать функцию
print_diamonds(n,k)
, печатающую друг за другом \(k\) ромбиков. Пример работы для \(n=3\), \(k=4\):
* * * *
* * * * * * * *
* * * * * * * *
* * * * * * * *
* * * *
- Программа принимает на вход число \(N\), а затем — \(2^N\) строчек
с \((N+1)\) целым числом каждая. Если соответствующие строчки можно интерпретировать
как полную (присутствуют все возможные комбинации значений) таблицу
булевой функции, программа должна печатать СДНФ так, как в примере. В противном
случае программа должна печатать
WRONG TABLE
. Пример работы:}
2
0 0 1
1 1 1
0 1 1
1 0 0
X1X2 v x1x2 v X1x2