Дай-ка, думаю, и я пять копеек вложу своих в общую истерию по поводу технологической сингулярности))
Спойлер: прочтение этой статьи даст вам три первичных балла на ЕГЭ по информатике, если вдруг надо. Распорядитесь с умом моей болтовнёй, я обычно за неё деньги беру 😉
Как сэкономить на репетиторе и почему это ни у кого (почти) не получится? Разберём для начала несколько типичных задач из ЕГЭ по информатике.
Пример 1. Задание 7, объём графических файлов. (ссылка на задачу на сайте К. Ю. Полякова)
(№ 4789) Изображения размером 4х7 дюйма сканируются с разрешением 300 ppi и использованием 2 в 24 степени цветов. Заголовок файла занимает 6 Кбайт. Для хранения таких изображений выделено 640 Мбайт памяти. Сколько изображений удастся сохранить? В ответе введите целое число.
Теоретический минимум для решения задачи (очень упрощённо):
- Объём информации в растровом изображении (без заголовка и прочего такого, только графика) в битах - это количество точек в изображении (K) умноженное на цветопередачу (i), то есть, на количество битов в одной точке изображения (I = K * i)
- Количество цветов в палитре изображения - это двойка, возведённая в степень, равную количеству бит в одной точке (N = 2 в степени i, формула Шеннона-Хартли)
- В байте - восемь битов, в килобайте - 1024 байта, в мегабайте - 1024 килобайта и так далее.
Итак, чтобы решить эту задачу, находим объём изображения вместе с заголовком (объём заголовка выражен в килобайтах, поэтому и всё изображение будем измерять в них же).
- 4 * 300 = 1200 точек (ширина изображения)
7 * 300 = 2100 точек (длина изображения)
1200 * 2100 = 2 520 000 точек (то самое K) - Цветов в палитре изображения - 2 в 24 степени, то есть показатель степени даёт нам количество битов в одной точке - двадцать четыре штуки (то самое i).
- 2 520 000 * 24 = 60 480 000 битов (то самое I)
- делим на восемь, получаем байты: 7 560 000 байтов
делим байты на 1024, получаем килобайты: 7382,8125 килобайтов
прибавляем объём заголовка, 6 килобайтов: 7388,8125 килобайтов
И вот тут мы сталкиваемся с первым препятствием. Трое из четверых одиннадцати-мать-их-классников НЕ ЗНАЮТ соотношений единиц измерения информации и спрашивают: А ПОЧЕМУ МЫ ДЕЛИМ НА ВОСЕМЬ???
Далее. Чтобы получить КОЛИЧЕСТВО изображений, нам будет проще делить килобайты на килобайты, то есть общий объём (он пока в мегабайтах) на объём одного изображения. Переводим 640 мегабайтов в килобайты методом ужасно трудоёмкого умножения на 1024, делим и получаем:
(640 * 1024) / 7388,8125 = 88,6962553... (то есть дробь, нецелое число).
Нецелых изображений не бывает, поэтому отбрасываем дробную часть и получаем 88 (восемьдесят восемь) изображений.
Вот такой, подробный, как для первоклашек, способ семь из десяти учеников запоминают С ТРЕТЬЕГО, А ТО И С ЧЕТВЁРТОГО РАЗА.
Сложно?
Если бы я или ученик, который с седьмого класса информатику не задвигал, решал бы эту задачу, то он (или я) бы сделал вот так:
(640 * 1024) /(((4 * 300 * 7 * 300 * 24) / (8 * 1024)) + 6) = 88,69... = 88
То есть, в одно выражение. Понятно, что теорию для этого надо знать. Её не знает почти никто.
В школе же не дают ничего. А то что дают - нигде и никогда не пригодится, ага.
Да думать вас учат, думать. Вот и всё. А так-то - да, сама по себе информация ценности не представляет. Только и только В КОНТЕКСТЕ, применимо к определённым ситуациям, из которых жизнь, собственно, и состоит.
Теперь посмотрим, что скажет по поводу этой задачи навязшая на зубах нейронка ChatGPT:
Пример 2. Комбинаторика, задание 8. Количество комбинаций различных символов (ссылка на задачу на сайте К. Ю. Полякова)
(№ 5336) (ЕГЭ-2022) Определите количество пятизначных чисел, записанных в девятеричной системе счисления, которые не начинаются с нечётных цифр, не оканчиваются цифрами 1 или 8, а также содержат в своей записи не более одной цифры 3.
Прежде чем браться за такие задачи, я всегда спрашиваю у учеников: сколько в десятичной (то есть, нашей, нормальной, человеческой) системе счисления трёхзначных чисел? Каких только ответов я не слышал!
А вы знаете?))
На самом деле их 900, не больше, не меньше. Самое маленькое - 100, самое большое 999. Числа трёхзначные. В разряде единиц - числа от 0 до 9, т.е. десять вариантов единиц. То же самое в разряде десятков, от 0 до 9, десять штук вариантов. А вот с сотнями похуже, их там всего девять вариантов. Не потому, что сотни плохие, а потому, что ни одно число, кроме нуля, с нуля не начинается. Перемножаем все эти количества вариантов и получаем девятьсот.
В принципе, все вот такие задачи так решить можно, чтобы не использовать формулы из комбинаторики (это, если что, алгебра, 9 класс).
Давайте прикинем, как вообще будут выглядеть эти числа. Система счисления девятеричная, цифр всего девять, от нуля до восьми.
Числа в задаче пятизначные, содержат не более одной цифры 3, то есть, будет четыре группы чисел, где цифра три есть, и одна группа чисел, в которых цифра 3 не встречается (про эту группу дети, кстати, вообще забывают, им сказали, что не более одного раза, значит, один раз встречается, а то, что ноль - это тоже не более одного, пусть помнит Пал Саныч, ему нужнее).
То есть, если в числе встречается тройка, то вариантов цифр в том разряде, где эта тройка стоит будет всего один.
Посчитаем количество вариантов на каждой позиции. Помним о том, что в начале числа не будет нечётных цифр (а ещё нуля), в конце - единиц и восьмёрок, а система счисления - девятеричная:
Теперь нужно перемножить все количества вариантов в каждой группе и сложить получившиеся числа:
Теперь предложим эту задачу ChatGPT:
И вот они, ошибки! Не может число с нуля начинаться! И остальное условие задачи тоже катится в тартарары. Так что не, не, не.
Это были элементарные задачи. Посмотрим, что скажет нейросеть, если ей предложить написать код. В этом она, говорят, недурна.
Пример 3. Задание 25, Перебор чисел. Соответствие маске (ссылка на задачу на сайте К. Ю. Полякова)
(№ 4987) (А. Кабанов) Назовём маской числа последовательность цифр, в которой также могут встречаться следующие символы:
— символ «?» означает ровно одну произвольную цифру;
— символ «*» означает любую последовательность цифр произвольной длины; в том числе «*» может задавать и пустую последовательность.
Например, маске 123*4?5 соответствуют числа 123405 и 12300425. Среди натуральных чисел, не превышающих 109, найдите все числа, соответствующие маске 1?34567?9 и делящиеся на 17 без остатка. В ответе запишите в первом столбце таблицы все найденные числа в порядке возрастания, а во втором столбце — соответствующие им частные от деления на 17.
Я показываю ученикам, что можно решать эту задачу как минимум двумя способами. Способ первый, когда чисел, которые должны быть обработаны, самих по себе мало, а в маске преимущественно встречаются не звёздочки, а знаки вопроса, как, например, в этой задаче. Здесь у нас только два знака вопроса, звёздочек нет, сам бог велел.
1. Неизвестные цифры обозначим в виде переменных x и y, например.
2. Представляем число как сумму некоторых слагаемых:
100000000
x0000000 (это будет, соответственно, x * 10000000)
3456700
y0 (это, получается, y * 10)
9
Или ещё проще:
103456709
x0000000
y0
3. Если число делится на 17, то выводим сначала его, потом - частное от его деления на 17.
Вот код на Python и результат его работы:
Способ второй, когда чисел действительно много, а из-за звёздочек в маске приходится обрабатывать несколько (порой несколько десятков) числовых промежутков, и циклов придётся писать слишком много, хоть они и однотипные.
1. Задействуем специальный модуль (набор команд) для работы с маской.
2. В цикле перебираем все числа, кратные, в данном случае, 17 (так в задаче - они должны делиться на 17).
3. Если число соответствует маске, то выводим его, а так же частное от его деления на 17.
Этот способ вполне хорош. Если в маске одни звёздочки - делаем только им и не заморачиваемся с оптимизацией - времени на экзамене на это не будет.
А вот что предлагает нам для решения этой задачи ChatGPT:
Пример 4. Тоже 25-е задание, но из позапрошлогодних, поиск делителей числа (ссылка на задачу на сайте К. Ю. Полякова)
(№ 2562) (Демовариант 2021 г.). Напишите программу, которая ищет среди целых чисел, принадлежащих числовому отрезку [174457; 174505], числа, имеющие ровно два различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти два делителя в таблицу на экране с новой строки в порядке возрастания произведения этих двух делителей. Делители в строке таблицы также должны следовать в порядке возрастания.
Способ решения очень простой. даже оптимизировать не будем, незачем. Писать будем на Python.
Произведение этих двух делителей, на минуточку, это и есть само число.
1. Перебираем все числа на заданном числовом промежутке.
2. Для каждого числа создаём массив, в который будем помещать найденные делители.
3. Для каждого числа на промежутке от 2 до половины самого числа (самый большой делитель числа, если это не само число, не больше его половины) перебираем все числа, которые могут оказаться делителями, все подряд, все-все, вообще все.
4. Если число из промежутка делится на найденное число - делитель найден, помещаем его в массив.
5. Если длина массива равна двум, то есть в нём два элемента, два делителя найденных, то выводим этот массив. Во-первых, и числа будут перебраны в порядке возрастания, во вторых, делители в массиве тоже будут расположены в порядке возрастания.
Это ответ. Как видим, Пал Саныч не обманывает:
А вот ChatGPT посчитала себя умнее одесского раввина (кстати, получилось):
А вот что эта программа должна вывести по мнению самой нейросети:
Вывод: грамотный ученик при помощи нейросетей усвоит мою науку, я думаю, значительно быстрее, чем без них. Неграмотный ученик, а их подавляющее большинство, такой, думать не желающий, неизбежно от меня по мозгам получающий, не сможет использовать нейросеть для своего развития, потому что развиваться не хочет. А вот как захочет - тогда сможет, потому что станет уже каким надо 😉
Так что как помощника я ChatGPT вполне рассматриваю. И применяю уже. Четвёртая версия сильно круче версии 3.5, однозначно. Но... Не друг. Не товарищ. Инструмент. И фиг она меня сковырнёт с пьедестала венца творения 😜
Длинно сегодня получилось, да?
Обнимаю.
Ваш Пал Саныч Рябчиков