This media is not supported in your browser
VIEW IN TELEGRAM
from functools import *
@lru_cache(None)
def f(n):
if n < 3:
return 2
if n > 2 and n % 2 == 0:
return 2 * f(n-2) - f(n-1) + 2
if n > 2 and n % 2 != 0:
return 2 * f(n-1) + f(n-2) - 2
print(f(170))
В следующем посте добавлю пару слов про функцию
@lru_cache()
с аргументом None
Please open Telegram to view this post
VIEW IN TELEGRAM
@lru_cache()
#tpyfrom functools import *
@lru_cache(None)
def f(n):
if n < 3:
return 2
if n > 2 and n % 2 == 0:
return 2 * f(n-2) - f(n-1) + 2
if n > 2 and n % 2 != 0:
return 2 * f(n-1) + f(n-2) - 2
print(f(170))
В данном коде
@lru_cache(None)
используется для кэширования результатов функции f(n)
с помощью декоратора lru_cache
из встроенного в базовый Python модуля functools
. Аргумент None
указывает, что размер кэша неограничен.f(n)
результат сохраняется в кэше. При последующих вызовах функции с тем же аргументом, результат будет возвращен из кэша, вместо повторного выполнения вычислений.Таким образом, в данном коде использование
@lru_cache(None)
позволяет сэкономить время на вычислениях, так как функция f(n)
будет выполняться только один раз для каждого уникального аргумента.Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Интересный 23 номер с дополнительным условием отсутствия в траектории набора команд
'BACA
'. def F(a, b, s: str):
if a >= b or a == 28:
return a == b and 'BACA' not in s
return F(a+2, b, s+'A') + F(a+3, b, s+'B') + F(a*2, b, s+'C')
print(F(2, 40, ''))
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5 5 4 3
Используется для создания всех возможных перестановок элементов. Рассмотрим несколько примеров:
from itertools import permutations
nums = [1, 2, 3]
perm = permutations(nums)
for i in list(perm):
print(i)
На выходе мы получим:
(1, 2, 3)
(1, 3, 2)
(2, 1, 3)
(2, 3, 1)
(3, 1, 2)
(3, 2, 1)
from itertools import permutations
words = ['hi', 'world', '!']
perm = permutations(words)
for i in list(perm):
print(i)
На выходе мы получим:
('hi', 'world', '!')
('hi', '!', 'world')
('world', 'hi', '!')
('world', '!', 'hi')
('!', 'hi', 'world')
('!', 'world', 'hi')
permutations()
, который указывает, сколько элементов нужно взять для формирования каждого кортежа в результате:from itertools import permutations
nums = [1, 2, 3, 4]
perm = permutations(nums, 2)
for i in list(perm):
print(i)
На выходе мы получим:
(1, 2)
(1, 3)
(1, 4)
(2, 1)
(2, 3)
(2, 4)
(3, 1)
(3, 2)
(3, 4)
(4, 1)
(4, 2)
(4, 3)
Таким образом,
permutations()
представляет собой удобный инструмент для генерации всех возможных перестановок элементов.Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11 6 5 3
This media is not supported in your browser
VIEW IN TELEGRAM
Закрепим изученную теорию, разберем пример 8 номера:
import itertools
count = 0
for s in itertools.permutations('ЯРОСЛАВ', 5):
slovo = ''.join(s)
glas = [i for i in slovo if i in 'ЯОА']
sogl = [i for i in slovo if i in 'РСЛВ']
if len(sogl) > len(glas):
if all(x not in slovo for x in 'ЯА АЯ АО ОА ЯО ОЯ'.split()):
count += 1
print(count)
Please open Telegram to view this post
VIEW IN TELEGRAM
Используется для создания декартова произведения последовательностей. Давайте рассмотрим несколько примеров использования этой функции:
from itertools import product
seq1 = [1, 2]
seq2 = ['a', 'b']
result = list(product(seq1, seq2))
print(result)
Результат выполнения данного кода будет:
[(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b')]
from itertools import product
seq = ['a', 'b', 'c']
result = list(product(seq, repeat=2))
print(result)
Результат выполнения данного кода:
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('c', 'a'), ('c', 'b'), ('c', 'c')]
from itertools import product
word = 'bat'
result = product(word, repeat=2)
for item in result:
print(item)
Результат выполнения данного кода будет:
('b', 'b')
('b', 'a')
('b', 't')
('a', 'b')
('a', 'a')
('a', 't')
('t', 'b')
('t', 'a')
('t', 't')
Функция
product
из библиотеки itertools
является мощным инструментом для создания всех возможных комбинаций элементов последовательностей.Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Закрепим изученную теорию, разберем пример 24 номера:
from fnmatch import fnmatch
from itertools import product
s = open('24.txt').readline()
for v in product('ABCDEFGHIJKLMNOPQRSTUVWXYZ', repeat=5):
slovo = ''.join(v)
if fnmatch(slovo, '?B??D'):
s = s.replace(slovo, '**** ****')
print(max(len(x) for x in s.split()))
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Интересная задачка 13 номера c kompege.ru от Л. Шастина.
from ipaddress import *
for mask in range(32+1):
net = ip_network(f'175.122.80.13/{mask}', 0)
print(net)
Для решения необходимо знать:
Количество единиц в маске подсети указывает, сколько битов адреса IP отведено для сети, а оставшиеся биты - для узлов.
Для вычисления количества возможных значений маски подсети можно использовать следующую формулу: 2**n - 2
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Благодарим вас за ваш профессионализм и творческий подход. Желаем вам ярких впечатлений, вдохновения и море улыбок! С праздником
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
ipaddress
в Python предоставляет удобные инструменты для работы с IP-адресами, подсетями и масками. С её помощью можно выполнять различные операции, такие как проверка принадлежности адреса к сети, определение адреса сети по IP-адресу и маске, а также многое другое. Вот несколько основных функций и примеры использования:
from ipaddress import *
net = ip_network('123.80.87.27/255.255.240.0', 0)
address = f'{net.network_address:b}'
print(address.count('0'))
from ipaddress import *
net = ip_network('226.185.90.162/255.255.252.0', 0)
print(net) # 226.185.88.0/22
ip1 = ip_address('226.185.90.162')
ip2 = ip_address('226.185.88.0')
print(int(ip1) - int(ip2))
from ipaddress import *
net = ip_network('224.230.250.29/255.255.240.0', 0)
print(net.network_address)
from ipaddress import *
for mask in range(32+1):
net = ip_network(f'111.81.176.27/{mask}', 0)
print(net, net.netmask) # дальше найти нашу сеть 111.81.160.0
Библиотека ipaddress обладает богатым набором функций, делающих работу с IP-адресами и сетями более удобной и эффективной.
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Телеграм предоставляет обширные возможности форматирования текста, делая его более выразительным и привлекательным для читателей. Давайте рассмотрим основные возможности форматирования текста в Телеграме:
Жирный шрифт
- сочетание клавиш cmd (ctrl) + BПример текста
Курсив
- сочетание клавиш cmd (ctrl) + IПример текста
Пример текста
Зачеркнутый текст
- сочетание клавиш cmd (ctrl) + Shift + XМоноширный шрифт
- полезный формат для передачи промокодов, паролей пользователям, так же подходит для кода) - сочетание клавиш cmd (ctrl) + Shift + MПример текста
Цитирование
- сочетание клавиш cmd (ctrl) + Shift + "."Пример текста
Пример текста
Пример текста
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Работа с файлами в Python - это важный аспект программирования, позволяющий читать, записывать и обрабатывать данные в файлах.
В данной статье мы рассмотрим основные методы и приемы, которые помогут вам в ваших работах.
А в следующем посту рассмотрим несколько примеров открытия файлов с ЕГЭ.
file = open("example.txt", "r") # Открываем файл example.txt на чтение
content = file.read()
print(content)
file = open("example.txt", "r") # Открытие файла для чтения
for line in file:
print(line.strip())
file.close()
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
for s in open('9.txt'):
M = [int(x) for x in s.split()]
for s in open('9.txt'):
M = [float(x) for x in s.replace(',', '.').split()]
M = [int(x) for x in open('17.txt')]
s = open('24.txt').readline()
s = open('24.txt').readlines()
for x in s:
print(x)
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
s = open('24.txt').readline()
s = s.split('U')
mini = 999999
for i in range(len(s)-108):
r = 'U'.join(s[i:i+109])
mini = min(mini, len(r))
print(mini + 2)
Файлы к заданию: 24.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
s = open('24.txt').readline().split('T')
maxi = 0
for i in range(len(s)-100):
r = 'T'.join(s[i:i+101])
maxi = max(maxi, len(r))
print(maxi)
Файлы к заданию: 24.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Давайте повторим решение 17 номера на этом интересном примере с сайта kompege.ru.
M = [int(x) for x in open('17.txt')]
avg = sum(M) / len(M)
R = []
for i in range(len(M)-2):
x, y, z = M[i], M[i+1], M[i+2]
if x < avg or y < avg or z < avg:
if all('9' in str(a) for a in [x, y, z]):
R.append(x + y + z)
print(len(R), max(R))
Файлы к заданию: 17.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
from string import *
alphabet = digits + ascii_uppercase
print(alphabet)
s = open('24.txt').readline()
maxi = 0
for a in alphabet:
s = s.replace(f'{a}', f'{a} {a}')
if maxi < max([len(x) for x in s.split()]):
maxi = max([len(x) for x in s.split()])
print(a, maxi)
s = s.replace(f'{a} {a}', f'{a}')
print(maxi)
Файлы к заданию: 24.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
cnt = 0
for s in open('9.txt'):
M = [int(x) for x in s.split()]
if len([x for x in M if abs(x) % 10 == 3]) == 3:
A = [x for x in M if x > 0]
B = [x for x in M if x < 0]
if sum(A) ** 2 < sum(B) ** 2:
cnt += 1
print(cnt)
Файлы к заданию: 9.txt
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Turtle
, чем может быть полезна на ЕГЭ #tpyБиблиотека Turtle в Python - это отличный способ познакомить начинающих программистов с основами графики и обучить их создавать интересные визуальные проекты.
Зачем нужна библиотека Turtle в Python?
Как использовать библиотеку Turtle в Python?
Для начала работы с библиотекой Turtle в Python необходимо импортировать модуль turtle. Вот простой пример создания окна и отображения черепахи:
import turtle
# Создание окна
wn = turtle.Screen()
wn.title("Графика с помощью Turtle")
# Создание черепахи
t = turtle.Turtle()
# Движение и рисование
t.forward(100) # перемещение вперед на 100 пикселей
t.left(90) # поворот налево на 90 градусов
t.circle(50) # рисование окружности радиусом 50 пикселей
# Закрытие окна при клике
wn.exitonclick()
Вы можете создавать более сложные рисунки, анимации и игры, используя разнообразные команды и методы этой библиотеки.
Библиотека Turtle отлично подходит для тех, кто хочет начать свой путь в мир программирования!
Информатика ЕГЭ | itpy
Please open Telegram to view this post
VIEW IN TELEGRAM