Мрія тих, хто не вміє малювати: я кажу що мені треба людською мовою і мені малювальник все це малює. Було б дуже добре, щоб ми з малювальником хоч якось розуміли один одного. З часом, мабуть, захочеться щоб ще і гарно. Складна задача. Багато хто пробує, небагато хто може похвалитися результатами.
Розглянемо ще одну спробу: сервіс «Творець зображень». Дякую Максиму, що звернув мою увагу на даний сервіс. Ну, подумав я, ще один сервіс. І малює це чудо, мабуть, різноманітні абстракції, в кращому випадку — котиків, схожих на котиків. Але у сервісу «Творець зображень» виявилися дуже амбіційні батьки: компанія OpenAI, що створила платформу для генерації зображень DALL·E 3 та компанія Microsoft, що виклала цей сервіс на свій сайт bing.com Поважна спільнота.
І тоді шо ж воно вміє? Давайте спробуємо. Не знаю, яким художником захоплюєтесь Ви, а я задав сервісу наступний текстовий запит: «Українське сонце в стилі Леоніда Афремова». Пробував питати англійською, а потім з’ясував що сервіс розуміє і українську.
І мені показали такі чудеса:
Вау, сказав я, так це ж неймовірно схоже по стилю на Афремова! І я ніколи не бачив таких картин у Леоніда Аркадійовича, а нових він не напише. То, виходить, що це — генеративне мистецтво платформи DALL·E 3? А чому воно так гарно?!
А якби попросити Ван Гога намалювати українське сонце? Як би воно виглядало, яким би було?
Шановний DALL·E, я не знаю, як ти це зробиш (іноді краще не уявляти), але як би це показав Вінсент?
DALL·E відповідає, що так:
Як до цього відноситись, як це оцінювати? Не знаю, не цікаво. А от чим я хочу наразі зайнятися — знаю…
Чудовий сайт replit.com ми з учнями активно використовуємо як середовище програмування. Можливість збереження власних проєктів, можливість поділитися своїм розв’язком, чудова робота з бібліотеками, інструмент форматування коду — все це відомо і дуже зручно.
Наразі replit.com має в своєму арсеналі безкоштовний штучний інтелект (AI). Можна запостити умову задачі отримати код. AI вже розуміє умови і українською мовою. Просто умови, написані людською мовою, без адаптації.
І це серйозно змінює правила проведення олімпіад і конкурсів. Тепер мало не дозволяти учням користуватися під час олімпіад і конкурсів системами штучного інтелекту, тепер треба жорстко контролювати неможливість використання смартфонів, бо іноді невеличкий шматок коду, легко отриманий учасником від штучного інтелекту може серйозно деформувати принцип справедливості змагань.
Давайте подивимся як працює AI сайту replit.com на прикладі двох задач.
Задача «Різні-різні»
https://www.eolymp.com/uk/problems/5337
Умова:
Задано n чисел. Вияснити, скільки серед них різних.
Вхідні дані
У першому рядку задано кількість чисел n (1 ≤ n ≤ 10^6). У другому рядку задано n чисел, кожне з яких не перевищує 2 ·10^9 за модулем.
Вихідні дані
Виведіть кількість різних чисел серед заданих.
Приклад
Вхідні дані #1:
1
3
Вихідні дані #1:
1
Вхідні дані #2:
5
9 15 22 15 22
Вихідні дані #2:
3
Мій розв’язок:
input()
n = [int(x) for x in input().split()]
print(len(set(n)))
Розв’язок, запропонований AI:
n = int(input())
numbers = list(map(int, input().split()))
unique_numbers = set(numbers)
count = len(unique_numbers)
print(count)
Погодьтесь, зовсім непогано.
Друга задача — «Світлофори»
https://www.eolymp.com/uk/problems/993
Умова:
У підземеллі m тунелів і n перехресть, кожен тунель з'єднує якісь два перехрестя. Мишиний король вирішив поставити по світлофору у кожному тунелі перед кожним перехрестям. Напишіть програму, яка порахує, скільки світлофорів повинно бути встановлено на кожному з перехресть. Перехрестя пронумеровані числами від 1 до n.
Вхідні дані
У першому рядку записано два числа n і m (0 < n ≤ 100, 0 ≤ m ≤ n · (n - 1) / 2). У наступних m рядках записано по два числа i та j (1 ≤ i, j ≤ n), які означають, що перехресткя i та j з'єднані тунелем.
Вихідні дані
Вивести n чисел: k-те число означає кількість світлофорів на k-му перехресті.
Можна вважати, що довільні два перехрестя з'єднані не більше, ніж одним тунелем. Немає тунелів від перехрестя i до нього самого.
(зображеня з сайту eolymp.com)
Приклад
Вхідні дані:
7 10
5 1
3 2
7 1
5 2
7 4
6 5
6 4
7 5
2 1
5 3
Вихідні дані:
3 3 2 2 5 2 3
На сайті eolymp.com задачу по класифікації віднесено до групи «теорія графів». І це певною мірою може злякати учнів. Бо чули про алгоритми Дейкстри, про різні обходи графів і все це не такі вже прості задачі. Але тут задача проста, незважаючи на лякаючу картинку.
З умови нам відома кількість перехресть. Можна створити список на таку саму кількість елементів і заповнити цей список нулями. І коли будемо аналізуватися кожен тунель, то він починається з перехрестя і завершується перехрестям. Відповідно біля перехрестя де починається тунель ставиться один світлофор і біля перехрестя, де завершується тунель ставиться так само один світлофор. Відповідно, при опрацюванні кожного тунелю будемо збільшувати на одиничку значення двох перехресть — перехрестя початку і перехрестя завершення тунелю. Після опрацювання всіх тунелів у нас буде відома кількість світлофорів біля кожного перехрестя.
Це мій давній розв’язок цієї задачі. Чому у мене перехрестя (crossing) названі змінною s – не знаю, вибачайте:
n, m = map(int, input().split())
s = [0 for i in range(n)]
for _ in range(m):
i, j = map(int, input().split())
s[i - 1] += 1
s[j - 1] += 1
print(' '.join(map(str, s)))
А тепер передамо умову цієї задачі AI сайту replit.com
Без адаптації, методом copy-paste:
Ось перший варіант, запропонований AI:
n, m = map(int, input().split())
traffic_lights = [0] * n
for _ in range(m):
i, j = map(int, input().split())
traffic_lights[i-1] += 1
traffic_lights[j-1] += 1
print(" ".join(map(str, traffic_lights)))
Ще один варіант, запропонований AI:
def calculate_traffic_lights(n, m, tunnels):
intersections = [0] * n
for i, j in tunnels:
intersections[i - 1] += 1
intersections[j - 1] += 1
return ' '.join(map(str, intersections))
n, m = map(int, input().split())
tunnels = [list(map(int, input().split())) for _ in range(m)]
calculate_traffic_lights(n, m, tunnels)
print(calculate_traffic_lights(n, m, tunnels))
В останньому рядку я лише додав print, щоб вивести результат. Погодьтесь, все зрозуміло.
Звичайно, наразі не все ідеально на ниві AI. Але учень-програміст вже може достатньо ефективно консультуватися з AI в питаннях саморозвитку. Для вчителя це також цікавий інструмент, якість якого вже дозволяє серйозно його розглядати.
ps. Дякую Захару Зінчуку, який звернув увагу на якість запропонованих AI рішень.
Анатолій Анатолійович
Особисто мені дуже подобаються задачі з кількома розв’язками. Вони навчають споглядати світ навколо з різних сторін.
Одну з таких задач і пропоную вашій увазі.
Я побачив одне рішення, моя учениця Анастасія – ще одне. А, можливо, їх ще більше – аргументованих рішень?
Спробуйте спочатку самостійно знайти кілька рішень, а лише потім переглянути вже знайдені, натиснувши "Детальніше"
На гуртку i7, граємося математикою:
— Назвіть найбільший спільний дільник чисел 12 і 18?
— Шість.
— Добре, напишіть код що це визначить.
— print(math.gcd(12,18))
— Добре, назвіть найменше спільне кратне цих 12 і 18. Тобто НСК.
— Тридцять шість.
— Добре. Пишіть код, що це визначить.
— print(math.lcm(12,18))
— Ой, а ви де це взяли?
— ChatGPT підказав, у Python з версії 3.9
— Ну, тоді у нас сьогодні версія 3.8 і ChatGPT – гріх. Шукаємо НСК в нових умовах ))

Хотів пошуткувати зі штучним інтелектом.
Тепер відчуваю себе першокласником, якого поставили в куток за дурні запитання ))
Одного чудового ранку понеділка три друга – Вова, Петрик і Степан знайшли скарб з цукерками. Кожен в цей день з’їв купу цукерок, а дослідник Петрик записав всі кількості в зошит, бо йому було цікаво дізнатися загальну кількість цукерок у скарбі. У вівторок і середу щасливі дні продовжилися і хлопці радісно споживали смакоту. Але в четвер на перманентно-радісні обличчя хлопців звернула увагу Оленка. За допомогою різноманітних і не завжди коректних методів впливу вона дізналася про скарб і швидко сформувала у хлопців комплекс провини на предмет «треба було ділитися». Починаючи від четверга Оленка також взяла участь у смачних дегустаціях. В неділю цукерочний скарб вичерпався. Оленка заявила хлопцям, що вона в цій історії – постраждала сторона, бо почала брати участь у щасті лише з четверга, коли всі інші раділи вже на повну. Петрик дістав зошит, і порахував на Python кому скільки дісталося цукерок:
names = ['Вова', 'Петрик', 'Степан', 'Оленка']
vova = [15, 20, 22, 7, 12, 23, 16]
petryk = [13, 14, 12, 11, 13, 12, 9]
stepan = [12, 2, 13, 14, 15, 16, 17]
olenka = [29, 30, 31, 28]
sweets = [sum(vova), sum(petryk), sum(stepan), sum(olenka)]
print(names)
print(sweets)
Проста і гарна програма видала чесну статистику:
['Вова', 'Петрик', 'Степан', 'Оленка']
[115, 84, 89, 118]
Розумна Оленка переглянула код програми, результат, і, звичайно, все зрозуміла. Але вирішила пошуткувати і включила режим «я – дівчинка, я в цифрах не розуміюсь, мені намалювати краще». Петрик колись давно, ще коли не було ChatGPT читав, що для неймовірно популярної мови Python написано величезне море бібліотек. Відповідно, щось повинно бути і для візуалізації даних, це ж популярна задача. Петрик продовжив дослідження і здивовано дізнався, що для візуалізації на Python давно існує бібліотека Matplotlib, але ще більш цікавим для Петрика був факт, що не треба возитися з встановленням цієї бібліотеки в свій локальний Python, розбиратися з PIP та іншими деталями. Достатньо в коді свої програми на Replit вказати використання зовнішньої бібліотеки. І розумний Replit самостійно розбереться з її підключенням і всіма необхідними налаштуваннями. Відповідно, щоб для Оленки зробити картинку-діаграму треба дописати в програму Петрика всього ТРИ рядочка.
import matplotlib.pyplot as plt
names = ['Вова', 'Петрик', 'Степан', 'Оленка']
vova = [15, 20, 22, 7, 12, 23, 16]
petryk = [13, 14, 12, 11, 13, 12, 9]
stepan = [12, 2, 13, 14, 15, 16, 17]
olenka = [29, 30, 31, 28]
sweets = [sum(vova), sum(petryk), sum(stepan), sum(olenka)]
print(names)
print(sweets)
plt.pie(sweets, labels=names, autopct='%.0f%%')
plt.show()
Яка краса! – сказала Оленка. Після чого вся компанія почала ще більше поважати Replit і знову-таки радіти Пайтону. Треба, — сказав Петрик, — знайти відповідну бібліотеку і порахувати вірогідність знаходження ще одного скарбу з цукерками. Це ж Python, обов’язково повинно на цю тему щось бути!
Звичайні шестигранні гральні кості бувають різні: праві і ліві, азіатські і європейські. Особливу увагу приділяють гральним костям для казино. На кожному екземплярі, зазвичай, проставляється логотип закладу та індивідуальний номер, для ускладнення шахрайства. На гранях костей для казино висвердлюють ямки, які заповнюються фарбою з такою самою щільністю, як вийнятий з ямок пластик, після чого кості полірують, щоб поверхня була ідеально гладкою. Такі кості називають «гладкокрапковими». Найчастіше, як пишуть, у казино зустрічаються кості з червоного прозорого пластику. Казино можуть продавати кості як сувеніри з недійсними серійними номерами:
Фото звідси
Всі ці складнощі щодо костей в казино мають просту мету – кості повинні видавати результати з максимальною рівномірністю. Давайте припустим, що в непрозорий кубик хтось всередину не по центру вплавить металеву кульку. Це скоріше за все змінить рівномірність результатів випадінь цифр і це шахрайство. Або хтось зробить кубик прозорим, але з нерівномірного пластику або некубічної, «витягнутої» або дещо «перекошеної» форми, – це, звичайно, також може змінити результати рівномірного випадіння цифр. Саме це і є, сподіваємось, причиною такого серйозного відношення до якості гральних костей у казино.
Ми можемо використовувати гральні кості для будь-яких своїх ігор. І хоч у нас тут не казино, ми хочемо мати нормальні гральні кості, без омани і хитрування, не витрачати купу грошей на щось, що називають «професійним».
Ось звичайні гральні кості, куплені в спортивному магазині:
Невеличкі, коштують по 2 гривні за штуку. Ставимо собі просту задачу – відібрати з них дві найкращі кості по рівномірності випадіння цифр. Наприклад, для використання в нашій грі. Звичайно, щодо ігор треба бути певною мірою обережними, бо, наприклад, грати в нарди канонічно заборонено в ісламі. Але зараз у нас тут не гра, а наукове дослідження, що буде складатися з суми експериментів і аналізу їх результатів.
Як інструмент для проведення аналізу нашого дослідження чудово підходить комп’ютер. Ми можемо скористатися електронною таблицею або написати програму мовою програмування. Звичайно, все можна порахувати за допомогою ручки і паперу, але використання комп’ютера виправдано – це зменшить об’єм ручної роботи і кількість помилок. А ще у нас є вже готовий математичний апарат дослідження – стандартне відхилення (standard deviation). Ще його називають середньоквадратичним відхиленням показників розсіювання значень випадкової величини відносно її математичного сподівання, тобто центру розподілу. Якщо це комусь здається дуже складним, то, запевняю, там дуже прості математичні обрахунки. Cтандартне відхилення просто рахується на листочку з ручкою і калькулятором, але на комп’ютері простіше і швидше. Чим менше величина стандартного відхилення, тим нам краще, тим рівномірніше випадають цифри. Якщо, наприклад, ми кинули гральну кість 12 разів і випало рівномірно: двічі одиниця, двічі двійка і т.д., то стандартне відхилення буде дорівнювати нулю.
Ось один з варіантів опрацювання результатів дослідження в електронній таблиці:
Перший експеримент, перше кидання кості. Випала, наприклад, одиниця. Ми записуємо в перший рядок (бо перший експеримент) одиничку в перший стовбчик (бо випала одиниця). При другому киданні цієї ж кості випала, припустим, трійка. Тоді записуємо одиничку в другий рядок (бо другий експеримент) в третій стовпчик (бо випала трійка). І так далі. В електронній таблиці потім дуже легко буде порахувати кількість випадіння кожної цифри, відсотки та однією формулою обрахувати стандартне відхилення.
Звичайно, таку роботу можна проводити в парах – один учасник проводить експерименти, інший нотує їх результати. А ще можна порадіти існуванню електронних таблиць, бо рахувати стандартне відхилення на сотні експериментів вже достатньо довго.
Безумовно, задачу аналізу дослідження можна вирішити мовою програмування. І знову таки, чудовий завдяки своїй універсальності Python в стандартній бібліотеці має модуль statistics, в якому є функція обрахунку стандартного відхилення. Ось один з варіантів програми, що допоможе в аналізі:
Код тут
Важливим в даному дослідженні є його прикладна сутність: ми за допомогою комп’ютера обирали дві гральні кості з найкращим показником рівномірності, причому обирали з науковим підходом і використанням чудового інструменту на ім’я комп’ютер. А ще розібралися з математичним апаратом такого дослідження. Це ж дослідження? Безумовно. З результатами? З результатами. Весела прикладна забава, частково відповідаюча на дитячі запитання «нашо та математика, для чого вона?!».

Чудово працювати в школі. Спілкуєшся з живими, щирими, в гарному сенсі недовірливими людьми.
От побачив якось в інтернеті китайську дзиґу. Така дурнувата дзиґа, спочатку вона просто крутиться, потім валиться набік а потім взагалі встає на свою ніжку. Здивувася, запитав себе «а точно?». Купив таке щастя у китайців. Пів вечора крутили з котом ту радість. Краса!
Приніс в школу, розказав дітям, що це така дивна дзиґа. Що сказали діти? «А точно? А покажіть!». І от ти вже з дітьми в шкільному коридорі на підлозі стоїш на колінах, запускаєш ці дзиґи і ви разом дивуєтесь тому чуду, а за деталями того дива відправляєш дітей до вчительки фізики. Міжпредметні зв’язки і розумна вчителька фізики — чудове поєднання. Ось ці дзиґи, 100 гривень у китайців коштують:
І так весь час в школі: ніхто тобі не вірить на слово, всі все перевіряють, посміхаються, дивуються. Позитив у чистому вигляді. Це дуже цінна річ, особливо для тих, кому є з чим порівнювати, хто прийшов у школу довгими шляхами.
А ще тут знайшов неймовірну задачу з шістьма сірниками.
Ось умова:
Із чотирьох сірників можна скласти квадрат. Додаємо до цих чотирьох ще два сірника, кожний з яких зламаний навпіл, як на малюнку.
Зламаний сірник можна згинати. Ламати цілі сірники не можна. Яке максимальне число квадратів можна скласти з такого комплекту сірників?
Коли на небі роздавали творчі таланти, то я однозначно курив. І коли таланти роздавали в геометрії – також. Тому я легко розв’язав цю задачу, у мене вийшло аж два квадрати:
Десь в глибині душі я відчував, що можна більше, да і самооцінка щиро реготала.
Там, де я знайшов цю задачу пропонували три квадрати, і це дійсно гарне рішення:
Зрадівши гарному чужому рішенню, я додав цю задачу до цьогорічного екзамену з логіки для шкільних програмістів і запропонував цю задачу іншим своїм учням. І тут почалося чудо. Почалося те, що нечасто можна побачити у дорослих. Діти ламали сірники, пробували, посміхалися, сварилися. З сірниками, зі мною, з собою. Складали сірники на столі, в графічному редакторі, з травички на асфальті. Діти знайшли рішення, коли не два, як у мене квадрати, і не три, як я в інтернеті знайшов. Діти зробили цю задачу, склавши з сірників 5, 6, 8, 9, 11, 14 квадратів.
І ти тихенько питаєш дітей: «Дозвольте я сфоткаю Ваш розв’язок для статті з вказівкою авторства?». І розумієш. Як чудово бути вчителем.
Ну, а тепер роботи учнів, що поділились розв’язками. Творчість учнів і свято вчителя з шести сірників:
П'ять квадратів. Автор: Маргарита Василюк.
Шість квадратів. Автор: Олексій Бірюченко.
Шість квадратів. Автор: Анна Нікончик.
Вісім квадратів. Автор: Анастасія Гуланова.
Вісім квадратів. Автор: Вікторія Дем'янчук.
Вісім квадратів. Автор: Даниїл Самсонюк.
Вісім квадратів. Автор: Діана Супрун.
Вісім квадратів. Автор: Олександр Чорноус.
Вісім квадратів. Автор: Юлія Городова.
Дев'ять квадратів. Автор: Денис Романюк.
Дев'ять квадратів. Автор: Денис Романюк.
Одинадцять квадратів. Автор: Маргарита Василюк.
Одинадцять квадратів. Автор: Альона Білошапка (я трохи підрівняв сірники в ідеї Альони).
Чотирнадцять квадратів. Автор: Маргарита Василюк.
Чотирнадцять квадратів. Автор: Анна Нікончик.
Чотирнадцять квадратів. Автор: Денис Романюк.
Дивишся на це свято творчості та інтелекту і розумієш. Що діти більш творчі ніж ти. Що вони молодці. Що треба піти купити ще сірників, бо ці вже закінчуються. Що цікава задача і розумні діти подарували тобі, як вчителю, радість.

Можливо, хтось пропустив цю дивну історію.
Волонтер-водій штабу Благодійного Фонду Сергія Притули, а в мирному житті колекціонер Ігор Понамарчук подарував Фонду картину з сімейної колекції – «Квіти виросли коло четвертого блока» з серії робіт художниці Марії Примаченко, присвячених Чорнобильській трагедії. Директорка приватного музею «Духовні скарби України», дружина Ігоря Дар’я Добріян розповіла, що їхня родина ніколи б не продавала цей твір, якби не війна. Зусилля професіоналів з різних сфер суспільства зараз мають іти на допомогу армії в боротьбі проти росії, адже саме ЗСУ — наші найкращі колекціонери перемоги. Родина Марії Примаченко підтримала благодійний аукціон і вже відмовилася від роялті з продажу картини на користь Збройних Сил України. (звідси).
Картина «Квіти виросли коло четвертого блоку» була продана п'ятого травня 2022 року на аукціоні за півмільйони доларів.
Цитата Сергія Притули у фейсбуці:
« Ну і промінчики добра двом добродіям з-за кордону, які зробили спільну ставку і гідно оцінили роботу Примаченко! І окремо від себе хочу подякувати їм за запевнення в тому, що КАРТИНА ЗАЛИШИТЬСЯ В УКРАЇНІ І БУДЕ ПЕРЕДАНА ДО ОДНОГО З КИЇВСЬКИХ МУЗЕЇВ!!»
Так само Сергій Притула пояснив, куди підуть гроші від продажу картини:
125 бусів Volkswagen T5 для переднього краю фронту!
Ще раз: СТО ДВАДЦЯТЬ П’ЯТЬ БУСІВ!!!
Які будуть перевозити особовий склад, вантажі, які будуть використовуватись для евакуації, для роботи підрозділів аеророзвідки тощо. Все для того, щоб палити русню і рятувати наших!!!
Близько двох тижнів тому нам вдалось домовитись у Німеччині про викуп такої великої партії транспорту за максимально пільговою ціною. Після передоплати нам якраз не вистачало тої суми, яку ми вчора вторгували. Я збирався робити окремий допис-звернення до людей, щоб закрити цей проект, але одна картина зробила це замість усіх нас.»
Ну і дві світлини буси і квіти
Назва: Квіти виросли коло четвертого блока
Автор: Примаченко Марія Оксентіївна
Дата: 1990
Техніка: гуаш
Основа: папір
Розмір: 60 x 40 см
Code:
import turtle
shapes = ['circle', 'circle', 'circle','triangle', 'circle',
'square', 'circle', 'circle', 'triangle', 'circle',
'square', 'triangle', 'circle', 'square','square',
'triangle', 'circle', 'square', 'turtle', 'square',
'square', 'circle', 'circle', 'triangle', 'circle',
'circle', 'circle','triangle', 'circle', 'circle',
'square']
turtle.penup()
turtle.backward(450)
for s in shapes:
turtle.shape(s)
turtle.forward(28)
turtle.stamp()

Запропонував своїм учням і вчителям інформатики у фейсбуці цікаву, як на мене, задачу:
Це вся умова, нічого більше в умові немає. Щоб не допускати вгадування, всі розв’язки просив пояснювати. Варіант «Я – художник, я так бачу» як варіант не приймався, бо задача була заявлена як логічна і потребує, відповідно, логічного пояснення.
Можете спробувати самостійно розв'язати, а лише після того клікнути на "Детальніше" і дізнатися ще кілька версій розв'язку.