diff --git a/students/km63/Horodnyuk_Serhij/homework_7.py b/students/km63/Horodnyuk_Serhij/homework_7.py new file mode 100644 index 0000000..de1b947 --- /dev/null +++ b/students/km63/Horodnyuk_Serhij/homework_7.py @@ -0,0 +1,343 @@ +#task_1-------------------------------------------------------- +''' +Найдите индексы первого вхождения максимального элемента. +Выведите два числа: номер строки и номер столбца, в +которых стоит наибольший элемент в двумерном массиве. +Если таких элементов несколько, то выводится тот, у +которого меньше номер строки, а если номера строк равны +то тот, у которого меньше номер столбца. +Программа получает на вход размеры массива n и m, затем +n строк по m чисел в каждой. +''' + +n,m=[int(x) for x in input().split()] +a=[[int(x) for x in input().split()] for i in range(n)] +r=max(a) +k=max(r) +u=0 +for i in range(n): + for j in range(m): + if a[i][j]==k: + u=1 + break + if u==1: + break +print(i,j) + +#-------------------------------------------------------------- + + +#task_2-------------------------------------------------------- +''' +Дано нечетное число n. Создайте двумерный массив из n?n +элементов, заполнив его символами "." (каждый элемент массива +является строкой из одного символа). Затем заполните символами +"*" среднюю строку массива, средний столбец массива, главную +диагональ и побочную диагональ. В результате единицы в массиве +должны образовывать изображение звездочки. Выведите полученный +массив на экран, разделяя элементы массива пробелами. +''' + +n=int(input()) +j,t=int(n-1),int((n-1)/2) +a =[['.']*t+['*']+['.']*t for i in range(n)] +a[t]=['*']*n +for i in range(n): + a[i][i]='*' + a[j][i]='*' + j-=1 +for row in a: + print(' '.join([str(elem) for elem in row])) + +#-------------------------------------------------------------- + + +#task_3-------------------------------------------------------- +''' +Даны два числа n и m. Создайте двумерный массив размером n?m и +заполните его символами "." и "*" в шахматном порядке. В левом +верхнем углу должна стоять точка. +''' + +n,m=[int(i) for i in input().split()] +for i in range(n): + for j in range(m): + if (i+j)%2==0: + print(".",end=" ") + else: + print("*",end=" ") + print() + +#-------------------------------------------------------------- + + +#task_4-------------------------------------------------------- +''' +Дано число n. Создайте массив размером n?n и заполните его по +следующему правилу. На главной диагонали должны быть записаны +числа 0. На двух диагоналях, прилегающих к главной, числа 1. +На следующих двух диагоналях числа 2, и т.д. +''' + +n = int(input()) +[print(' '.join([str(abs(i-n + j)) for i in range(n,0,-1)])) for j in range(n)] + +#-------------------------------------------------------------- + + +#task_5-------------------------------------------------------- +''' +Дано число n. Создайте массив размером n?n и заполните его по +следующему правилу: числа на диагонали, идущей из правого +верхнего в левый нижний угол равны 1. Числа, стоящие выше этой +диагонали, равны 0. Числа, стоящие ниже этой диагонали, равны 2. +Полученный массив выведите на экран. Числа в строке разделяйте +одним пробелом. +''' + +n=int(input()) +a=[[0]*n for i in range(n)] +for i in range(n): + a[i][n-i-1]=1 +for i in range(n): + for j in range(n-i,n): + a[i][j]=2 +for y in a: + for element in y: + print(element, end=' ') + print() + +#-------------------------------------------------------------- + + +#task_6-------------------------------------------------------- +''' +Дан двумерный массив и два числа: i и j. Поменяйте в массиве +столбцы с номерами i и j и выведите результат. Программа +получает на вход размеры массива n и m, затем элементы массива, +затем числа i и j. Решение оформите в виде функции +swap_columns(a, i, j). +''' + +n,m=[int(s) for s in input().split()] +a=[[int(s) for s in input().split()] for i in range(n)] +i,j=[int(s) for s in input().split()] +for z in range(n): + a[z][i],a[z][j]=a[z][j],a[z][i] +[print(' '.join([str(s) for s in y])) for y in a] + +#-------------------------------------------------------------- + +#Homework_9 + +#task_1-------------------------------------------------------- +''' +Дан список чисел. Определите, сколько в нем встречается +различных чисел. +Примечание. Эту задачу на Питоне можно решить в одну строчку. +''' + +A=([int(i) for i in input().split()]) + +B=len(set(A)) + +print (B) + +#-------------------------------------------------------------- + +#task_2-------------------------------------------------------- +''' +Даны два списка чисел. Посчитайте, сколько чисел содержится +одновременно как в первом списке, так и во втором. +Примечание. Эту задачу на Питоне можно решить в одну строчку. +''' + +A=(set(input().split())) + +B=(set(input().split())) + +A&=B + +print (len(set(A))) + +#-------------------------------------------------------------- + + +#task_3-------------------------------------------------------- +''' +Даны два списка чисел. Найдите все числа, которые входят как +в первый, так и во второй список и выведите их в порядке +возрастания. +Примечание. И даже эту задачу на Питоне можно решить в одну +строчку. +''' + +A=set([int(i) for i in input().split()]) + +B=set([int(i) for i in input().split()]) + +C=list(A&B) + +C.sort() + +for elem in C: + + print(elem,end=' ') + +#-------------------------------------------------------------- + + +#task_4-------------------------------------------------------- +''' +Во входной строке записана последовательность чисел через +пробел. Для каждого числа выведите слово YES (в отдельной +строке), если это число ранее встречалось в последовательности +или NO, если не встречалось. +''' + +A=input().split() + +for i in range (len(A)): + + if A[i] in A[:i]: + + print ('YES') + + else: + + print ('NO') + +#-------------------------------------------------------------- + + +#task_5-------------------------------------------------------- +''' +Аня и Боря любят играть в разноцветные кубики, причем у каждого +из них свой набор и в каждом наборе все кубики различны по +цвету. Однажды дети заинтересовались, сколько существуют цветов +таких, что кубики каждого цвета присутствуют в обоих наборах. +Для этого они занумеровали все цвета случайными числами от 0 +до 108. На этом их энтузиазм иссяк, поэтому вам предлагается +помочь им в оставшейся части. +В первой строке входных данных записаны числа N и M — число +кубиков у Ани и Бори. В следующих N строках заданы номера +цветов кубиков Ани. В последних M строках номера цветов Бори. +Найдите три множества: номера цветов кубиков, которые есть в +обоих наборах; номера цветов кубиков, которые есть только у +Ани и номера цветов кубиков, которые есть только у Бори. Для +каждого из множеств выведите сначала количество элементов в нем, +а затем сами элементы, отсортированные по возрастанию. +''' + +N,M=[int(i) for i in input().split()] + +listo=set() + +listt=set() + +for i in range(N): + + listo.add(int(input())) + +for i in range(M): + + listt.add(int(input())) + +listo_listt=list(listo&listt) + +listo_listt.sort() + +only_listo=list(listo-listt) + +only_listo.sort() + +only_listt=list(listt-listo) + +only_listt.sort() + +print(len(listo&listt)) + +print(' '.join([str(i) for i in (listo_listt)])) + +print(len(listo-listt)) + +print(' '.join([str(i) for i in (only_listo)])) + +print(len(listt-listo)) + +print(' '.join([str(i) for i in (only_listt)])) + +#-------------------------------------------------------------- + + +#task_6-------------------------------------------------------- +''' +Дан текст: в первой строке записано число строк, далее идут +сами строки. Определите, сколько различных слов содержится в +этом тексте. +Словом считается последовательность непробельных символов +идущих подряд, слова разделены одним или большим числом +пробелов или символами конца строки. +''' + +num=int(input()) + +lists=[] + +for i in range(num): + +lists=lists+input().split(' ') + +print(len(set(lists))) + +#-------------------------------------------------------------- + + +#task_8-------------------------------------------------------- +''' +Август и Беатриса продолжают играть в игру, но Август начал +жульничать. На каждый из вопросов Беатрисы он выбирает такой +вариант ответа YES или NO, чтобы множество возможных задуманных +чисел оставалось как можно больше. Например, если Август задумал +число от 1 до 5, а Беатриса спросила про числа 1 и 2, то Август +ответит NO, а если Беатриса спросит про 1, 2, 3, то Август +ответит YES. +Если же Бетриса в своем вопросе перечисляет ровно половину из +задуманных чисел, то Август из вредности всегда отвечает NO. +Наконец, Август при ответе учитывает все предыдущие вопросы +Беатрисы и свои ответы на них, то есть множество возможных +задуманных чисел уменьшается. +Первая строка содержит наибольшее число, которое мог загадать +Август. Каждая следующая строка содержит очередной вопрос +Беатрисы: набор чисел, разделенных пробелами. Последняя строка +входных данных содержит одно слово HELP. +Для каждого вопроса Беатрисы выведите ответ Августа на этот +вопрос. После этого выведите через пробел, в порядке +возрастания, все числа, которые мог загадать Август после +ответа на все вопросы Беатрисы. +''' + +count=int(input()) +numbers=set() +numbers_=set() + +for i in range(count): + numbers.add(str(i+1)) + +while True: + string=input() + if string=='HELP': + break + else: + numbers_=set(string.split()) + if len(numbers-numbers_)>=len(numbers&numbers_): + print('NO') + numbers=numbers-numbers_ + else: + print('YES') + numbers=numbers&numbers_ + +for elements in sorted(numbers, key=int): + print(elements, end=' ') + +#--------------------------------------------------------------