Загрузка данных


# ==========================================
# ЗАДАНИЕ №2: Логика
# ==========================================
# В прогу -> В условиях: or (∨), and (∧), <= (→), == (≡), not (¬)
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):
                if not((not(x<=y)) or (z<=w) or (not(z))):
                    print(w, x, y, z)


# ==========================================
# ЗАДАНИЕ №5: Алгоритмы и СС
# ==========================================
# Перевод в 2СС
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'
    r=int(r,2)
    if r>19:
        print(n)

# Перевод в 4СС (с суммой цифр)
def f_task5(n):
    r=''
    while n>0:
        r = str(n%4)+r
        n = n//4
    return r

t_task5=[]
for n in range (1,100000):
    r = f_task5(n)
    if (r.count('1') + (r.count('2') * 2) + (r.count('3') * 3)) % 2 == 0:
        r = '31'+r+'02'
    else:
        r = '1'+r+f_task5(n%3*7)
    r = int(r,4)
    if r<4528:
        t_task5.append(n)
if t_task5: print(max(t_task5))


# ==========================================
# ЗАДАНИЕ №6: Черепашка
# ==========================================
from turtle import *
def run_turtle():
    k=20
    tracer (0)
    screensize (2000, 2000)
    # Здесь тело цикла для отрисовки фигуры (fd, rt и т.д.)
    for x in range (-100,100):
        for y in range (-100,100) :
            setpos (x*k, y*k)
            dot ()
    done()


# ==========================================
# ЗАДАНИЕ №7 & №11: Формулы
# ==========================================
"""
№7: 
- Фото: I = x * y * i (байт = 8 бит)
- Звук: I = k * u * i * t
- Передача: I = v * t
- Варианты: N <= 2^i

№11: 
- V = N * i (размер пароля)
- Мощность: N = 2^i
- Если i=7, минимальная мощность для 2^6+1
"""


# ==========================================
# ЗАДАНИЕ №8: Комбинаторика
# ==========================================
from itertools import product, permutations
k8=0
# Если цифры/буквы повторяются: product, если нет: permutations
for i in product ('0123455678', 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'):
            k8+=1
print(f"Задание 8: {k8}")


# ==========================================
# ЗАДАНИЕ №9: Файлы
# ==========================================
# f9 = open('99.txt')
# k9=0
# for line in f9:
#     a=[int(i) for i in line.split()]
#     a1=[int(i) for i in a if a.count(i)==3]
#     a2=[int(i) for i in a if a.count(i)==1]
#     if ((len(a1)==3 and len(a2)==4) and (a[0]>a[1]>a[2]>a[3]>a[4]>a[5]>a[6])) or \
#        ((len(a1)!=3 and len(a2)!=4) and (a[0]<a[1]<a[2]<a[3]<a[4]<a[5]<a[6])):
#         k9+=1


# ==========================================
# ЗАДАНИЕ №13: Сети
# ==========================================
from ipaddress import *
# net = ip_network('192.168.12.207/255.192.0.0', 0)
# for ip in net:
#     s = bin(int(ip))[2:]
#     if s.count('1') == s.count('0'):
#         pass # твой код здесь


# ==========================================
# ЗАДАНИЕ №14: Системы счисления
# ==========================================
# Перевод в 10СС
for x_14 in '0123456789abcdefghijk':
    a14=int('82934'+x_14+'2',21)+int('2924'+x_14+x_14+'7',21)+int('67564'+x_14+'8',21)
    if a14%20==0:
        print(f"Задание 14: {a14//20}")


# ==========================================
# ЗАДАНИЕ №15: Отрезки, ДЕЛ, Графики
# ==========================================
# Пример на ДЕЛ (если отрицание ДЕЛ, ставим != 0)
for a15 in range (1,900):
    m15=1
    for x15 in range (1,900):
        if (((405%x15==0) <= (81%x15==0)) or (a15-x15>162))==0:
            m15=0
            break
    if m15==1:
        print(f"Задание 15 (a): {a15}")


# ==========================================
# ЗАДАНИЕ №16: Рекурсия
# ==========================================
import sys
from functools import lru_cache
sys.setrecursionlimit(10**6)

@lru_cache(None)
def g16(n):
    if n<=9: return (3*n)
    return g16(n-4)+2

def f16(n):
    return g16(n-1)+g16(n-3)


# ==========================================
# ЗАДАНИЕ №17: Последовательности
# ==========================================
# f17 = open('17.txt')
# a17 = [int(i) for i in f17]
# al17 = [i for i in a17 if 9<i<100]
# res17 = []
# for i in range(len(a17)-1):
#     if ((a17[i] in al17 and a17[i+1] not in al17) or (a17[i] not in al17 and a17[i+1] in al17)) \
#     and ((a17[i]+a17[i+1]) % min(al17)==0):
#         res17.append(a17[i]+a17[i+1])


# ==========================================
# ЗАДАНИЕ №19-21: Теория игр
# ==========================================
# Две кучи
def game(k1, k2, h):
    if (k1+k2)>=68: return h%2==0
    if h==0: return 0
    # Возможные ходы
    moves = [game(k1+1, k2, h-1), game(k1+k2, k2, h-1), game(k2+1, k1, h-1), game(k2+k1, k1, h-1)]
    return any(moves) if (h-1)%2==0 else all(moves)
    # Если Ваня выиграл после неудачного хода Пети: any вместо all в конце


# ==========================================
# ЗАДАНИЕ №23: Динамика (пути)
# ==========================================
def f23(a, b):
    if a > b or a == 8: return 0 # Не идем через 8
    if a == b: return 1
    return f23(a+1, b) + f23(a+2, b) + f23(a*2, b)

print(f"Задание 23: {f23(3,14) * f23(14,18)}") # Обязательно через 14