Матрицы

Максимальный в области 2 🌶️

Напишите программу, которая выводит максимальный элемент в заштрихованной области квадратной матрицы.

Формат входных данных
На вход программе подаётся натуральное число 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')

Заполнение 5 🌶️

На вход программе подаются два натуральных числа 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()