Здравствуйте, Константин Юрьевич!
Посмотрел решение к задаче ege2 № 185
template = '*0** ***0 00** 00**'.split()
val = 1
def f(x, y, z, w):
f = ( ((not x) and y) == z) and w
return int(f)
def tbIst( f, val ):
res = []
for x in range(2):
for y in range(2):
for z in range(2):
for w in range(2):
if f(x, y, z, w) == val:
res.append( "{}{}{}{}".format(x, y, z, w))
return res
def match( s, p, template ):
if len(s) != len(template): return False
res = True
for i in range(len(s)):
res = res and (template[...
...
Очень, очень красивое решение!
Но возникает вопрос, а может ли этот код послужить примером для ученика на ЕГЭ?
Во первых : код содержит 42 строки, но в спецификации 2023 года написано, что однобальная программа высокого уровня должна содержать от 10 до 20 строк, а у нас базовое задание и 42 строки!?
Во вторых: код содержит около 1020 символов, с учетом § 8. № 7. ГДЗ Информатика 10 класс, где написано, что секретарь может набирать текст со скоростью 256 символов в минуту, следовательно, даже ему потребуется для набора данного текста около четырех минут против трех. Можно предположить, что ученику для набора данного текста, даже без учета времени на обдумывание каждой строки, потребуется времени как минимум раза в два больше!?
Откуда приходим к выводу, что данный код, может послужить отличной демонстрацией возможностей питона при решении данной задачи, но, ни как не приемлемым способом ее решения на экзамене.
Критикуя, предлагаю следующее решение:
Анализируя выражение (((not x) and y) == z) and w и таблицу, понимаем, что ее третий столбец имеет заголовок W. Используя это пишем код с заголовком XYWZ:
print('x y w z')
for x in range(2):
for y in range(2):
for w in range(2):
for z in range(2):
if ((((not x) and y) == z) and w)==True:
print(x,y,w,z)
Запустив программу, получаем следующую распечатку:
x y w z
0 0 1 0
0 1 1 1
1 0 1 0
1 1 1 0
Анализируя ее, приходим к выводу, что на втором месте в заданной таблице может стоять только столбец с заголовком Z, кроме того, из второй строки заметим, что в случае, когда Z и W = 1, то X = 0, а Y = 1, что возможно, если столбцы распечатки расставить в следующем порядке YZWX
Спасибо!