Разбор резервного дня // КЕГЭ по информатике 2024
Vložit
- čas přidán 27. 06. 2024
- Смотрим задания с резервного дня экзамена
Ссылка на вариант: kompege.ru/variant?kim=25057064
ОТКРЫТЫЙ КУРС kompege.ru/course
Подписка на полезные материалы: vk.cc/c3R4Og
За мат, КАПС, политоту, флуд - перманентный бан.
Связаться с автором: cabanovalexey
Группа ВК ege_info_open
Тренажёр КЕГЭ: kompege.ru
--------------------------------------------------------------------------------------------
Ссылки на каналы других годных преподавателей:
Евгений Джобс / @evgenijjobs
Alex Danov / alexdanov
Андрей Рогов / devinf74
Леонид Шастин / @leoshastin
PRO100 EGE / @pro100ege68
Таймкоды (спасибо @antr0i)
00:00 Приветствие
02:20 Задание 1
04:00 Задание 2
06:36 Задание 3
10:59 Задание 4
13:28 Задание 5
17:07 Задание 6
22:31 Задание 7
24:55 Задание 8
28:19 Задание 9
30:45 Задание 10
33:34 Задание 11
38:46 Задание 12
40:51 Задание 13
42:43 Задание 14
45:09 Задание 15
46:57 Задание 16
48:50 Задание 17
54:32 Задание 18
58:03 Задание 19-21
1:00:43 Задание 22
1:13:48 Задание 23
1:16:13 Задание 24 (идеи и размышления)
1:44:55 Задание 24 (рабочее решение Евгения Джобса)
1:52:18 Задание 25
1:56:17 Задание 26
2:12:10 Задание 27
02:39:45 Ищем ошибку в индексах
03:10:00 Нашли ошибку!
3:13:24 Окончание и напутствия
Спасибо за детство, легенда
Таймкоды
00:00 Приветствие
2:20 Задание 1
4:00 Задание 2
6:36 Задание 3
10:59 Задание 4
13:28 Задание 5
17:07 Задание 6
22:31 Задание 7
24:55 Задание 8
28:19 Задание 9
30:45 Задание 10
33:34 Задание 11
38:46 Задание 12
40:51 Задание 13
42:43 Задание 14
45:09 Задание 15
46:57 Задание 16
48:50 Задание 17
54:32 Задание 18
58:03 Задание 19-21
1:00:43 Задание 22
1:13:48 Задание 23
1:16:13 Задание 24 (идеи и размышления)
1:44:55 Задание 24 (рабочее решение Евгения Джобса)
1:52:18 Задание 25
1:56:17 Задание 26
2:12:10 Задание 27
3:13:24 Окончание и напутствия
я уже сдал экзамен, нахрена я это смотрю.. интересно)
Сдал экзамен на 80 баллов (мог написать намного лучше, сам виноват). Хочу выразить огромную благодарность за ваш труд! У вас самые лучшие "уроки" на ютубе, даже сложные задания становятся лёгкими с вашим решением и понятным объяснением. Удивительно что всё это бесплатно)
2:19 - 3:49 1 задание
3:55 - 6:31 2 задание
6:37 - 10:57 3 задание
11:00 - 12:54 4 задание
12:59 - 13:23 вариант от Е. Джобса
13:29 - 17:05 5 задание
17:08 - 22:27 6 задание
22:27 - 24:53 7 задание
24:56 - 27:50 8 задание
28:19 - 30:29 9 задание
30:45 - 32:50 10 задание
33:36 - 38:45 11 задание
38:46 - 40:50 12 задание
40:51 - 42:39 13 задание
42:44 - 45:09 14 задание
45:10 - 46:54 15 задание
46:55 - 48:49 16 задание
48:59 - 54:31 17 задание
54:32 - 57:59 18 задание
58:04 - 1:00:43 19-21 задания
1:00:43 - 1:13:47 22 задание
1:13:49 - 1:15:00 23 задание
1:15:04 - 1:52:18 24 задание
1:52:18 - 1:56:13 25 задание
1:56:13 - 2:12:16 26 задание
2:12:16 - 3:13:05 27 задание
Здравствуйте,шеф. Огромное спасибо за подготовку , написал на 78 , доволен как слон . Открытый курс лучший!
Спасибо большое. С меня лайк, а с вас разбор). Лучший учитель информатики не страны, а МИРА!)))))
Эх... Уже сдал этот егэ, а сейчас сижу трясусь на сессии. Это просто ужас, но спасибо тебе за всё! Без тебя я бы не поступил куда хотел...
Коллаб века
Спасибо за разбор и за помощь в подготовке, вы лучший❤
У меня у одной вариант абсолютно другой был с длинючим выражением в 2м задании? 😢
нет
+++
Ахах, у меня тоже) Я вспотел пока его переписывал и скобки расставлял, но все получилось
@@user-nw1rb9fx2r дада да ахахха какая жиза
А какой ответ получился? И кто может задание кинуть?
Родя и Кабанов
Офигеть
Заранее извиняюсь за тупой вопрос, но откуда у автора канала полная копия КИМа, что я писал сегодня?
Он вроде как учитель и ученики просто оставляют после экзаменов файл на на рабочем столе с заданиями
@@sarmathype6473,неттт😂
Где ссылка на вариант на КЕГЭ?
1:56:19 Здесь ведь сказал "блин"? :)
По итогу в 22задании ответ 7?
Я в шоке, как 2 задание в уме можно решать...
Главное знать, что в каждой строке должно быть два нуля и две еденицы, а это задание очень предсказуемое, потому что такая задачка уже была не один раз. Так что опыт плюс прогноз творят чудеса
@@sarmathype6473тоже верно. Сейчас на моменте 24 задачи смотрю, и сижу втыкаю. В моменте не понимаю, что он и зачем пишет..
проверьте, пожалуйста, ответ в №17 в варианте от 19.06 (сибирь) - у меня количество 12
Напишите Евгению Джобсу
Решение задания 24 регулярными выражениями (резерв, более читаемое, идеальное):
s = open('24_17641.txt').readline(); import re
num = '[0-9]+'; znum = f'(?:\*{num})'; group = f'(?:0{znum}*|{num}{znum}*?\*0{znum}*)'
r = f'{group}(?:\+{group})*'; t = re.findall(r,s); print(len(max(t,key=len)))
Решение задания 24 регулярными выражениями (резерв, Сибирь):
s = open('24_17616.txt').readline().strip('*+')
import re; group = '(?:0(?:\*[0-9]+)*|[0-9]+(?:\*[0-9]+)*?\*0(?:\*[0-9]+)*)'
r = group+'(?:\+'+group+')*'; t = re.findall(r,s); print(len(max(t,key=len))). Но задача сложная, конечно.
Если заменить 17616 на 17641, получится верное решение задания №24 с другого резерва (которая разбиралась)
Мне ооооочень нужен файл на 24. Я вроде бы придумал самое адекватное решение
не знаю сработает ли, но вот:
'''
s = open('24.txt').readline().strip()
def f(s:str):
try:
if eval(s) == 0:
return True
return False
d = s.split('+')
mx = 0
k = 0
l = 0
for si in d:
if f(si) and '**' not in si:
l += len(si) if k == 0 else len(si) + 1
k += 1
mx = max(mx, l)
elif k == 0:
while si != '' and '**' not in si and not f(si):
si = si[1:]
if si != '':
k += 1
l += len(si)
mx = max(mx, l)
else:
while si != '' and '**' not in si and not f(si):
si = si[:-1]
if si != '':
l += len(si) + 1
mx = max(mx, l)
k = 0
l = 0
print(mx)
'''
Не особо понял решение, но оно точно неверное, так как для строки s = '7*8**1*9*0' выдаёт ответ 10 при правильном 5. Это первое. Во-вторых, try не может существовать без except, и без этого при запуске программы сразу вылезает invalid syntax. Для резерва Сибири программа выдала правильный ответ - 153, но это точно получилось случайно. А для другого резерва такое неэффективное решение зависает после индекса где-то чуть больше 751000. Серьёзно, это решение работает две минуты (а то и больше), в то время как моё решение регулярными выражениями работает две секунды для обоих резервов. Если неэффективность возникла из-за eval(), то это можно исправить, так как нужно рассмотреть два случая (как я делал регулярными выражениями):
1) ноль + от 0 до бесконечности групп (умножить + число)
2) число + от 0 до бесконечности групп (умножить + число) до следующей группы (0 + умножить) + от 0 до бесконечности групп (умножить + число)
Преимущества re.findall():
1) Работает эффективно, примерно за O(n);
2) Не нужно мучиться с индексами;
3) Можно посмотреть список и сразу увидеть, что программа делает не так, чтобы не искать ошибку непонятно где, а сразу исправить в нужном месте.
4) Написать решение через эту функцию быстрее
5) Решение через эту функцию короткое, и в нём можно быстро разобраться
6) Написать легче, думать меньше
7) Решает 50% всех 24-ых задач
Недостатки:
1) Не подходит для 50% задач
2) Долго изучать
Недостатков намного меньше, чем преимуществ, так что изучайте регулярные выражения.
Так что такое решение динамикой никак не самое адекватное
Моё решение 24:
f = open('24.txt', 'r')
s = f.readline().strip().replace('++', ' ! ').replace('**', ' ! ').replace('+*', ' ! ').replace('*+', ' ! ').replace('+', ' + ').split()
ans = 0
c = ''
for i in s:
if (i == '+') or ('*0' in i) or ('0*' in i) or ('0' == i):
c += i
else:
if len(c) and c[-1] in '*+':
c = c[:-1]
if len(c) and c[0] in '*+':
c = c[1:]
ans = max(ans, len(c))
c = ''
print(ans)
f.close()
Нормальное, адекватное решение, правильная идея, хорошая эффективность, только можно было его вот так записать покороче:
s = open('24_17616.txt').readline().strip().replace('++', ' ! ').replace('**', ' ! ')
s = s.replace('+*', ' ! ').replace('*+', ' ! ').replace('+', ' + ').split()
ans = 0
c = ''
for i in s:
if (i in '0+') or ('*0' in i) or ('0*' in i):
c += i
else:
c = c.strip('+*')
ans = max(ans, len(c))
c = ''
print(ans),
А замены на " ! " желательно всё-таки регулярными выражениями делать: так короче и быстрее. И вообще решение ими + f-строки получается короче и проще. Без f-строк, конечно, короче, но сложнее.
@@user-xd1ky9zj4f Хотел бы уточнить, а это решение разве учитывает незначащие нули?
@@user-sw1pg5zj2v В варианте резерва их по условию в задаче нет
def f(s):
s = s.replace('+', ' + ')
a = s.split()
m = 0
n = a[0]
for i in range(1, len(a), 2):
if eval(n) == 0:
n += a[i]+a[i+1]
else:
n = a[i+1]
if eval(n) == 0:
m = max(m, len(n))
return m
s = open('24_21.txt').readline()
s = s.replace('+', ' + ').replace('*', ' * ').split()
a = [i for i in range(len(s)) if s[i] != '+' and s[i] != '*']
m = 0
n = str(int(s[a[0]]))
for r in range(1,len(a)):
if a[r] - a[r-1] == 2 and s[a[r]][0] != '0' and len(s[a[r]])>1:
n += s[a[r]-1] + s[a[r]]
m = max(m, f(n))
elif a[r] - a[r-1] == 2 and (s[a[r]][0] == '0' and len(s[a[r]]) > 1):
n += s[a[r]-1] + s[a[r]][0]
m = max(m, f(n))
n = str(int(s[a[r]]))
elif a[r] - a[r-1] == 2 and len(s[a[r]]) == 1:
n += s[a[r]-1] + s[a[r]]
m = max(m, f(n))
else:
n = str(int(s[a[r]]))
print(m)
Ужасно неэффективное решение, посчитало примерно за 118.91299986839294 секунд. Ответ правильный, но разбираться в решении я не собираюсь, так как оно суперсложное для понимания. Трудно, что ли, решить несложным для понимания, да ещё и самым эффективным на данный момент способом - регулярными выражениями? И ещё задача была рассчитана, кажется, на то, чтобы придумать, как избежать eval(). Хотя есть пользователь, нормально решивший задачу и без regex - @greatdruk, не считая его расписывания c.strip('+*') на полстраницы и других лишних действий.
Как вариант s=open('24_17616.txt').read().replace('++',' ').replace('**',' ').replace('*+',' ').replace('+*',' ').split()
t=set()
for n in s:
if n[0]=='*':n=n[1:]
if n[0]=='+':n=n[1:]
if n[-1]=='*':n=n[:-1]
if n[-1]=='+':n=n[:-1]
if eval(n)==0:
t.add(len(n))
print(max(t))
Это неверное решение. Верный ответ мог получиться случайно. Программа находит все самые длинные куски, которые являются математически правильным арифметическим выражением и проверяет его на равенство нулю, но не учитывает, что, например, в выражении 69378+0*76900+12395+0*0*0*0*0*80711*0+0+0*0+72731+0+0 есть подходящие: 0*76900; 0*0*0*0*0*80711*0+0+0*0; 0+0. Чтобы учитывать всё правильно, изучайте регулярные выражения - самый простой способ это сделать.
@@user-xd1ky9zj4f
Покажите код, как надо