Python Информация
.docx
Имеется массив целых чисел 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)