Напишите программу, которая выводит максимальный элемент в заштрихованной области квадратной матрицы.
Формат входных данных
На вход программе подаётся натуральное число n — количество строк и столбцов в матрице, затем элементы матрицы (целые числа) построчно через пробел.
Формат выходных данных
Программа должна вывести одно число — максимальный элемент в заштрихованной области квадратной матрицы.
Примечание. Элементы диагоналей также учитываются.
Тестовые данные 🟢
Sample Input 1:
3 1 4 5 6 7 8 1 1 6
Sample Output 1:
8
Sample Input 2:
2 6 0 7 9
Sample Output 2:
9
Решение
n = int(input())
arr = [[int(i) for i in input().split()] for j in range(n)]
sum = []
for i in range(n):
for j in range(n):
if (i>j and i < n-1-j) or (i<j and i>n-1-j) or i==j or j==n-i-1:
sum.append(arr[i][j])
print(max(sum))
На шахматной доске 8×8 стоит конь. Напишите программу, которая отмечает положение коня на доске и все клетки, которые бьёт конь. Клетку, где стоит конь, отметьте английской буквой N
, а клетки, которые бьёт конь, отметьте символами *
, остальные клетки заполните точками.
Формат входных данных
На вход программе подаются координаты коня на шахматной доске в шахматной нотации (то есть в виде e4
, где сначала записывается номер столбца (буква от a
до h
, слева направо), затем номеру строки (цифра от 1 до 8, снизу вверх)).
Формат выходных данных
Программа должна вывести на экран изображение доски, разделяя элементы пробелами.
Примечание. Шахматная доска имеет вид:
Тестовые данные 🟢
Sample Input 1: b6
Sample Output 1:
* . * . . . . .
. . . * . . . .
. N . . . . . .
. . . * . . . .
* . * . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
Sample Input 2:
f3
Sample Output 2:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . * . * .
. . . * . . . *
. . . . . N . .
. . . * . . . *
. . . . * . * .
Решение
n = input()
y = 'abcdefgh'.index(n[0])
x = '87654321'.index(n[1])
matrix = [['.' for i in range(8)] for _ in range(8)]
matrix[x][y] = 'N'
for i in range(8):
for j in range(8):
if (x-i)**2 + (y-j)**2 == 5:
matrix[i][j] = '*'
for i in matrix:
print(*i)
Магическим квадратом порядка n называется квадратная таблица размера n×n, составленная из всех чисел 1,2,3,…,n2 так, что суммы по каждому столбцу, каждой строке и каждой из двух диагоналей равны между собой. Напишите программу, которая проверяет, является ли заданная квадратная матрица магическим квадратом.
Формат входных данных
На вход программе подаётся натуральное число n — количество строк и столбцов в матрице, затем элементы матрицы: n строк, по n чисел в каждой, разделённые пробелами.
Формат выходных данных
Программа должна вывести YES
, если матрица является магическим квадратом, или NO
в противном случае.
Тестовые данные 🟢
Sample Input 1: 3 8 1 6 3 5 7 4 9 2
Sample Output 1:
YES
Sample Input 2:
3
8 2 6
3 5 7
4 9 1
Sample Output 2:
NO
Решение
n = int(input())
matrix = [[int(i) for i in input().split()] for j in range(n)]
str_matrix = []
col_matrix = []
main = 0
second = 0
num = [1,2,3,4,5,6,7,8,9]
for i in range(n):
colm=0
row=0
main += matrix[i][i]
second += matrix[i][n-i-1]
for j in range(n):
colm += matrix[j][i]
row += matrix[i][j]
if matrix[i][j] in num:
num.remove(matrix[i][j])
str_matrix.append(row)
col_matrix.append(colm)
s = 0
for i in str_matrix:
if i == main:
s += 1
c = 0
for i in col_matrix:
if i == main:
c += 1
if num:
print('NO')
elif main == second and s == n == c:
print('YES')
else:
print('NO')
На вход программе подаются два натуральных числа n и m. Напишите программу, которая создает матрицу размером n×m, заполнив её в соответствии с образцом.
Формат входных данных
На вход программе на одной строке подаются два натуральных числа n и m — количество строк и столбцов в матрице.
Формат выходных данных
Программа должна вывести указанную матрицу в соответствии с образцом.
Примечание. Для вывода элементов матрицы как в примерах отводите ровно 3 символа на каждый элемент. Для этого используйте строковый метод ljust()
. Можно обойтись и без ljust()
, система примет и такое решение. 😇
Тестовые данные 🟢
Sample Input 1:
5 5
Sample Output 1:
1 2 3 4 5 2 3 4 5 1 3 4 5 1 2 4 5 1 2 3 5 1 2 3 4
Sample Input 2:
4 2
Sample Output 2:
1 2 2 1 1 2 2 1
Код решения
n, m = input().split()
matrix = [[0 for i in range(int(m))] for _ in range(int(n))]
data = [i+1 for i in range(int(m))]
for i in range(int(n)):
for j in range(int(m)):
matrix[i][j]=data[j]
first = data.pop(0)
data.append(first)
print(*matrix[i])
На вход программе подаются два натуральных числа n и m. Напишите программу, которая создает матрицу размером n×m, заполнив её "змейкой" в соответствии с образцом.
Формат входных данных
На вход программе на одной строке подаются два натуральных числа n и m — количество строк и столбцов в матрице.
Формат выходных данных
Программа должна вывести указанную матрицу в соответствии с образцом.
Примечание. Для вывода элементов матрицы как в примерах отводите ровно 33 символа на каждый элемент. Для этого используйте строковый метод ljust()
. Можно обойтись и без ljust()
, система примет и такое решение 😇
Тестовые данные 🟢
Sample Input 1:
3 5
Sample Output 1:
1 2 3 4 5 10 9 8 7 6 11 12 13 14 15
Sample Input 2:
2 2
Sample Output 2:
1 2 4 3
Код решения
n, m = input().split()
count = 1
matrix = [[count for i in range(int(m))] for _ in range(int(n))]
for i in range(int(n)):
for j in range(int(m)):
matrix[i][j]=count
count+=1
if i%2 == 1:
matrix[i].reverse()
print(*matrix[i])
else:
print(*matrix[i])
На вход программе подаются два натуральных числа n и m. Напишите программу, которая создает матрицу размером n×m, заполнив её "диагоналями" в соответствии с образцом.
Формат входных данных
На вход программе на одной строке подаются два натуральных числа n и m — количество строк и столбцов в матрице.
Формат выходных данных
Программа должна вывести указанную матрицу в соответствии с образцом.
Примечание. Для вывода элементов матрицы как в примерах отводите ровно 3 символа на каждый элемент. Для этого используйте строковый метод ljust()
. Можно обойтись и без ljust()
, система примет и такое решение 😇
Тестовые данные 🟢
Sample Input 1:
3 5
Sample Output 1:
1 2 4 7 10 3 5 8 11 13 6 9 12 14 15
Sample Input 2:
3 4
Sample Output 2:
1 2 4 7 3 5 8 10 6 9 11 12
Код решения
n, m = input().split()
matrix = [[0 for i in range(int(m))] for _ in range(int(n))]
count = 0
for k in range(int(n)+int(m)-1):
for i in range(int(n)):
for j in range(int(m)):
if i+j==k:
count += 1
matrix[i][j]=count
for item in matrix:
print(*item)
На вход программе подаются два натуральных числа n и m. Напишите программу, которая создает матрицу размером n×m, заполнив её "спиралью" в соответствии с образцом.
Формат входных данных
На вход программе на одной строке подаются два натуральных числа n и m — количество строк и столбцов в матрице.
Формат выходных данных
Программа должна вывести матрицу в соответствии образцом.
Примечание. Для вывода элементов матрицы как в примерах отводите ровно 3 символа на каждый элемент. Для этого используйте строковый метод ljust()
. Можно обойтись и без ljust()
, система примет и такое решение. 😇
Тестовые данные 🟢
Sample Input 1:
4 5
Sample Output 1:
1 2 3 4 5 14 15 16 17 6 13 20 19 18 7 12 11 10 9 8
Sample Input 2:
1 6
Sample Output 2:
1 2 3 4 5 6
Sample Input 3:
3 3
Sample Output 3:
1 2 3 8 9 4 7 6 5
Подсказка
[n, m] = [int(num) for num in input().split()]
matr = [[0] * m for _ in range(n)]
w = 1
for k in range(min(n // 2 + 1, m //2 + 1)): # количество оборотов
for j in range(k, m - k): # заполнение вправо
if matr[k][j] == 0: # условие избавляет от перезаписывания значений
matr[k][j] = w
w += 1
for i in range(1 + k, n - k): # заполнение вниз
if matr[i][m - k - 1] == 0:
matr[i][m - k - 1] = w
w += 1
for j in range(m - k - 2, k - 1, -1): # заполнение влево
if matr[n - k - 1][j] == 0:
matr[n - k - 1][j] = w
w += 1
for i in range(n - k - 2, k, -1): # заполнение вверх
if matr[i][k] == 0:
matr[i][k] = w
w += 1
for i in range(n): # вывод матрицы
for j in range(m):
print(str(matr[i][j]).ljust(3), end=' ')
print()