Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Python Информация

.docx
Скачиваний:
1
Добавлен:
06.02.2024
Размер:
347.8 Кб
Скачать

Имеется массив целых чисел numbers. Необходимо найти все такие тройки [numbers[i], numbers[j], numbers[k]], где i != j, j != k, k != i и сумма numbers[i] + numbers[j] + numbers[k] = 0

m = []

numbers = [4, -1, 7, 0, 1, 2, -1, 5]

for i in range(0, len(numbers)):

for j in range(1, len(numbers)):

for k in range(2, len(numbers)):

if i != j and j != k and k != i and numbers[i] + numbers[j] + numbers[k] == 0:

mass = [numbers[i], numbers[j], numbers[k]]

mass.sort()

if mass in m:

continue

else:

m.append(mass)

print(m)

СРАВНЕНИЕ ИНДЕКСОВ

В списке из строк найти максимальный общий префикс.

Пример: strs = ["flower","flow","flight"], вывод: "fl" Пример: strs = ["dog","racecar","car"], вывод: ""

Считать, что в строках могут использоваться только латинские буквы.

def finder(massive):

word = ''

for i in massive[0]:

if all(i in massive[j] for j in range(len(massive))):

word += i

else:

return word

strs = ["flower", "flow", "flowht"]

print(finder(strs))

Преобразовать целое число в десятичной системе счисления в семяричную и вывести ввиде строки. m = -8

k = ''

if m < 0:

m *= -1

while m != 0:

k += str(m % 7)

m //= 7

k += '-'

else:

while m != 0:

k += str(m % 7)

m //= 7

print(k[::-1])

ВЫВЕДЕНИЕ ИНДЕКСОВ ЧИСЕЛ СХОЖИХ С МАКСИМАЛЬНЫМ ЧИСЛОМ

p1 = []

p2 = []

insert = input('Первый список')

while insert != '':

insert = int(insert)

p1.append(insert)

insert = input('Первый список')

insert2 = input('Второй список')

insert2 = int(insert2)

p2.append(insert2)

insert2 = input('Второй список')

while insert2 != '':

insert2 = int(insert2)

p2.append(insert2)

insert2 = input('Второй список')

max1 = 0

max2 = []

k = 0

for i in p1:

if max1 < i:

max1 = i

for j in p2:

if max1 == j:

max2.append(k)

k += 1

if max2:

print("Первый список: ", p1)

print("Второй список: ", p2)

print('индексы', max2)

else:

print("Таких значений не нашлось")

НАХОЖДЕНИЕ МАКСИМАЛЬНОЙ СУММЫ

Имеется массив целых чисел numbers. Необходимо найти все последовательности в массиве (подряд стоящие числа), сумма которых равна заданному числу S.

Пример: nums = [4,-1,7,0,1,2,-1,5], S = 3, последовательности: [4, -1], [0, 1, 2], [1, 2]

m = [5, 4, -1, 7, 8]

max = 0

for i in range(len(m)):

sum = 0

for j in m[i:]:

sum += j

if sum > max:

max = sum

print(max)

ДЛЯ ПОДСЧЁТА НАИМЕНЬЩЕГО ПРОСТОГО ПАЛИНДРОМА, БОЛЬШЕ САМОГО ЧИСЛА

def is_prime(n):

np = int(n/2)

k = 0

for i in range(2, np+1):

if n % i == 0:

k += 1

if k == 0:

return True

def reverse_number(number):

revs_number = 0

while number > 0:

remainder = number % 10

revs_number = (revs_number * 10) + remainder

number = number // 10

return revs_number

def Palindrom(N):

flag = True

while flag is True:

N += 1

M = reverse_number(N)

if M == N and is_prime(N) is True:

flag = False

return N

Number = int(input())

print(Palindrom(Number))

ОПРЕДЕЛЕНИЕ ВРЕМЕНИ

arr = [1, 3, 5, 9]

arr_sort = sorted(arr)

time = [0]*4

for h1 in range(2, -1, -1):

if h1 == 1 or h1 == 0:

time[0] = h1

for h2 in range(9, -1, -1):

time[1] = h2

for m1 in range(5, -1, -1):

time[2] = m1

for m2 in range(9, -1, -1):

time[3] = m2

massive = sorted(time)

if massive == arr_sort:

print(time[0], time[1], ':', time[2], time[3], sep='')

exit()

elif h1 == 2:

time[0] = h1

for h2 in range(3, -1, -1):

time[1] = h2

for m1 in range(5, -1, -1):

time[2] = m1

for m2 in range(9, -1, -1):

time[3] = m2

massive = sorted(time)

if massive == arr_sort:

print(time[0], time[1], ':', time[2], time[3], sep='')

exit()

else:

print('Нет подходящего времени')

Дан массив целых чисел, необходимо определить есть ли в нем такая последовательность, что i < j < k и nums[i] < nums[k] < nums[j]

Пример: nums = [1,2,3,4], вывод: False Пример: nums = [3,1,4,2], вывод: True, пояснение: [1, 4, 2] Пример: nums = [-1,3,2,0], вывод: True, пояснение: имеется три нужных последовательности [-1, 3, 2], [-1, 3, 0] и [-1, 2, 0]

def func(nums):

flag = False

for i in range(len(nums)):

for j in range(i + 1, len(nums)):

for k in range(j + 1, len(nums)):

if i < j < k:

if nums[i] < nums[k] < nums[j]:

flag = True

return flag

array = [-1, 3, 2, 0]

print(func(array))

Дано целое число и список из целых чисел. Необходимо вывести число комбинаций, которыми можно разложить заданное число числами из заданного списка. Число из списка может использоваться неограниченное количество раз.

Пример: amount = 5, nums = [1,2,5], вывод: 4, пояснение: 5=5, 5=2+2+1, 5=2+1+1+1, 5=1+1+1+1+1 Пример: amount = 3, nums = [2], вывод: 0 Пример: amount = 10, nums = [10], вывод: 1

def f(s, n, g):

if n <= 0:

if n == 0:

g.append(s)

else:

for x in a:

f(s + [x], n - x, g)

n = 5

a = [1, 2, 5]

r = []

f([], n, r)

for i in range(len(r)):

r[i] = sorted(r[i])

print(len({tuple(x) for x in r}))

В заданном массиве строк (без повторений) найти слова, которые являются производным словом из данного массива. Производное слово - это слово, которое состоит из по-крайней мере двух слов данного массива.

Пример: words = ["cat","cats","catsdogcats","dog","dogcatsdog","hippopotamuses","rat","ratcatdogcat"], вывод: ["catsdogcats","dogcatsdog","ratcatdogcat"] Пример: words = ["cat","dog","catdog"], вывод: ["catdog"]

words = ["cat", "cats", "catsdogcats", "dog", "dogcatsdog", "hippopotamuses", "rat", "ratcatdogcat"]

def word_searching(words):

array = []

for i in range(len(words)):

for j in range(i + 1, len(words)):

if words[i] in words[j]:

for k in range(len(words)):

if words[k] in words[j] and words[k] != words[i] and words[j] != words[k]:

if not((words[j]) in array):

array.append(words[j])

return array

# words = ["cat","dog","catdog"]

words = ["cat", "cats", "catsdogcats", "dog", "dogcatsdog", "hippopotamuses", "rat", "ratcatdogcat"]

print(word_searching(words))

Ограничим правильное использование заглавных букв тремя вариантами: в слове все заглавные (USSR), в слове все строчные (mother), в слове только первая заглавная (Yandex).

Дана строка, необходимо вывести True, если использование заглавных букв в нем правильное, False - в противном случае.

Пример: word = "USSR", вывод: True Пример: word = "GandR", вывод: False

word = "USSr"

if word.upper() == word or word.lower() == word or word.capitalize() == word:

print(True)

else:

print(False)

Даны два положительных целых числа в виде строк. Необходимо выполнить их умножения без преобразования к целому числу (нельзя использовать функцию int).

Пример: num1 = "2", num2 = "3", вывод: "6" Пример: num1 = "123", num2 = "456", вывод: "56088"

num1 = '2'

num2 = '3'

xui1 = ''

xui2 = ''

i=0

k=0

while xui1 != num1:

i+=1

xui1 = str(i)

while xui2 != num2:

k += 1

xui2 = str(k)

print(i*k)

Дан массив из целых чисел. Необходимо найти максимальную сумму подряд стоящих элементов.

Пример: [-2,1,-3,4,-1,2,1,-5,4], вывод: 6, пояснение: [4, -1, 2, 1] Пример: [1], вывод: 1, пояснение: [1] Пример: [5,4,-1,7,8], вывод: 23, пояснение: [5,4,-1,7,8]

m = [5,4,-1,7,8]

max = 0

for i in range(len(m)):

sum = 0

for j in m[i:]:

sum += j

if sum > max:

max = sum

print(max)

#Для заданного n вывести наименьший простой палиндром больший или равный n.

#Простым числом является число, у котором два делителя: 1 и само число.

#Примеры: 2, 3, 5, 7, 11 и 13.

#Палиндромом является число, которое читается слева направа и справа налево налево. Например, 101 и 12321.

#Примеры: 1) n = 6, вывод: 7; 2) n = 8, вывод: 11; 3) n = 13, вывод: 101

n = 6

a= []

lst = []

k = 0

m = []

b = 0

for i in range(n+1, 1000):

for j in range(2, i):

if i % j == 0:

k = k + 1

if k == 0:

lst.append(i)

else:

k = 0

for i in lst:

i = str(i)

b = i[::-1]

if i == b:

m.append(i)

print(m[0])

Разбор

Так как исходные точки даны в неотсортированном виде, то мы не можем однозначно сказать какие из них формируют сторону квадрата. Для того чтобы не проверять все возможные варианты, достаточно выполнить сортировку по координате x, в случае равенства по координате y.

После такой сортировки потенциальный квадрат будет обладать след.сторонами: p0 p1, p1 p3, p3 p2, p2 p0. А также диагонали p0 p3, p1 p2. После этого необходимо проверить на равенство стороны квадрата и отдельно диагонали.

Даны 4 координаты в 2-х мерной плоскости p1, p2, p3, p4 в формате [x, y]. Необходимо проверять образуют ли точки квадрат. Квадрат имеет 4 одинаковых стороны и четыре угла по 90 градусов. Пример: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,1], вывод: True Пример: p1 = [0,0], p2 = [1,1], p3 = [1,0], p4 = [0,12], вывод: False Пример: p1 = [1,0], p2 = [-1,0], p3 = [0,1], p4 = [0,-1], вывод: True

Дана строка s и массив строк wordDict. Необходимо вернуть True, если слово s можно составить из слов в массиве wordDict. Слово из workDict может быть использовано в s любое количество раз.

Пример: s = "applepenapple", wordDict = ["apple","pen"], вывод: True Пример: s = "catsandog", wordDict = ["cats","dog","sand","and","cat"], вывод: False

s = "catsandog"

mas = ["cats", "dog", "sand","and","cat"]

stroka = ''

strokak = ''

for i in s:

stroka += i

if stroka in mas:

strokak += stroka

stroka = ''

if strokak == s:

print(True)

exit()

else:

print(False)

Соседние файлы в предмете Информатика