Загрузка данных
# ======= ЗАДАНИЕ №2 (Логика) =======
def task_2():
print('w x y z')
for w in range(2):
for x in range(2):
for y in range(2):
for z in range(2):
# Вставляй условие из задачи сюда:
# or (V), and (/\), <= (->), == (≡), not (¬)
if not ((not (x <= y)) or (z <= w) or (not z)):
print(w, x, y, z)
# ======= ЗАДАНИЕ №5 (Алгоритмы) =======
# Перевод в 2СС
def task_5_2cc():
for n in range(1, 1000):
r = bin(n)[2:]
if r.count('1') % 2 == 0:
r = '10' + r[2:] + '0'
else:
r = '11' + r[2:] + '1'
res = int(r, 2)
if res > 19:
print(n)
# Перевод в 4СС (или любую другую)
def f_5_4cc(n):
r = ''
while n > 0:
r = str(n % 4) + r
n //= 4
return r
def task_5_4cc():
t = []
for n in range(1, 100000):
r = f_5_4cc(n)
# Условие суммы или количества цифр
if (r.count('1') + r.count('2')*2 + r.count('3')*3) % 2 == 0:
r = '31' + r + '02'
else:
r = '1' + r + f_5_4cc(n % 3 * 7)
res = int(r, 4)
if res < 4528:
t.append(n)
print(max(t))
# ======= ЗАДАНИЕ №6 (Черепашка) =======
def task_6():
from turtle import tracer, screensize, setpos, dot, done, forward, right, up
k = 20
tracer(0)
screensize(2000, 2000)
# Сюда алгоритм движения из задачи (forward, right и т.д.)
# Сетка точек
for x in range(-100, 100):
for y in range(-100, 100):
up()
setpos(x * k, y * k)
dot(2) # Размер точки
done()
# ======= ЗАДАНИЕ №8 (Комбинаторика) =======
from itertools import product, permutations
def task_8_iter():
k = 0
# product - если символы повторяются
# permutations - если символы НЕ повторяются
for i in product('012345678', repeat=5):
x = ''.join(i)
if x[0] != '0' and x.count('0') == 1:
t = x.index('0')
# Условия на соседей
if x[t-1] in '2468' and (t == 4 or x[t+1] in '2468'):
k += 1
print(k)
# ======= ЗАДАНИЕ №9 (Файлы/Таблицы) =======
def task_9():
f = open('9.txt')
k = 0
for line in f:
a = sorted([int(x) for x in line.split()])
a2 = [int(x) for x in a if a.count(x) >= 3] # Повторяющиеся
a3 = [int(x) for x in a if a.count(x) == 1] # Уникальные
if len(a2) >= 1 and len(a3) >= 1:
if sum(a2)/len(a2) > sum(a3)/len(a3):
k += 1
print(k)
# ======= ЗАДАНИЕ №13 (IP-адреса) =======
from ipaddress import ip_network
def task_13():
# Ставим 0 в конце адреса, если ищем адрес сети
net = ip_network('172.16.80.0/255.255.248.0', strict=False)
k = 0
for ip in net:
s = bin(int(ip))[2:]
if s.count('1') % 2 != 0:
k += 1
print(k)
# ======= ЗАДАНИЕ №14 (Системы счисления) =======
def task_14_calc():
# Поиск цифры в уравнении
for x in '0123456789abcdefghijk':
a = int('82934' + x + '2', 21) + int('2924' + x + x + '7', 21)
if a % 20 == 0:
print(a // 20)
def task_14_digits():
# Подсчет количества цифр или суммы в СС
n = 125 + 25**3 + 5**9
k0 = 0
while n > 0:
if n % 5 == 0: k0 += 1
n //= 5
print(k0)
# ======= ЗАДАНИЕ №15 (Логика/Графики/Отрезки) =======
def task_15_segments():
p = list(range(15, 41))
g = list(range(21, 64))
a = []
for x in range(1, 100):
# Если находим НАИМЕНЬШЕЕ A (проверяем ложность выражения)
if not ((x in p) <= (((x in g) and (not (x in a))) <= (not (x in p)))):
a.append(x)
print(a)
def task_15_del():
for a in range(1, 900):
m = 1
for x in range(1, 900):
# Если видим отрицание ДЕЛ, ставим != 0
if not (((405 % x == 0) <= (81 % x == 0)) or (a - x > 162)):
m = 0
break
if m == 1:
print(a)
break
# ======= ЗАДАНИЕ №16 (Рекурсия) =======
import sys
from functools import lru_cache
sys.setrecursionlimit(10**6)
@lru_cache(None)
def f_16(n):
if n <= 9: return 3*n
return f_16(n-4) + 2
# ======= ЗАДАНИЕ №17 (Последовательности) =======
def task_17():
f = open('17.txt')
a = [int(i) for i in f]
al = [i for i in a if 9 < i < 100] # Условие (например, двузначные)
k = []
for i in range(len(a) - 1):
# Сюда условия на пары элементов
if ((a[i] in al and a[i+1] not in al) or (a[i] not in al and a[i+1] in al)):
k.append(a[i] + a[i+1])
print(len(k), max(k))
# ======= ЗАДАНИЯ №19-21 (Теория игр) =======
# Одна куча
def f_game1(k, h):
if k >= 68: return h % 2 == 0
if h == 0: return 0
moves = [f_game1(k + 1, h - 1), f_game1(k * 2, h - 1)]
if (h - 1) % 2 == 0: return any(moves)
else: return all(moves)
# Две кучи
def f_game2(k1, k2, h):
if k1 + k2 >= 68: return h % 2 == 0
if h == 0: return 0
moves = [f_game2(k1 + 1, k2, h - 1), f_game2(k1 * 2, k2, h - 1),
f_game2(k1, k2 + 1, h - 1), f_game2(k1, k2 * 2, h - 1)]
# h-1 % 2 == 0 - ход игрока, который хочет выиграть (any)
# иначе - ход противника (all)
if (h - 1) % 2 == 0: return any(moves)
else: return all(moves)
# ПРИМЕЧАНИЕ ДЛЯ 19 ЗАДАЧИ: если Ваня выиграл после НЕУДАЧНОГО хода Пети,
# заменить последний all(moves) на any(moves).
# ======= ЗАДАНИЕ №23 (Пути) =======
def f_23(a, b):
if a > b or a == 8: return 0 # 8 - точка, через которую НЕЛЬЗЯ проходить
if a == b: return 1
return f_23(a + 1, b) + f_23(a + 2, b) + f_23(a * 2, b)
# Если нужно пройти через 14: f_23(3, 14) * f_23(14, 18)