Сайт «Плетиво» представляє авторську задачу і наступний алгоритм:
1. Кажемо відповідь
2. Ліземо в гаманець
3. Самооцінювання :)
Сайт «Плетиво» представляє авторську задачу і наступний алгоритм:
1. Кажемо відповідь
2. Ліземо в гаманець
3. Самооцінювання :)
Кількість відвідувачів платформи Canva до 2023 року перевищує 100 млн користувачів у 190 країнах світу. В Canva є можливість генерації фото з тексту. Ми попросили штучний інтелект Canva намалювати собаку, наприклад, так: «dog in the style of Claude Monet».
Які вони чудові!
Вінсент Ван Гог
Рембрандт
Пабло Пікассо
Леонардо да Вінчі
Сальвадор Далі
Клод Моне
Мрія тих, хто не вміє малювати: я кажу що мені треба людською мовою і мені малювальник все це малює. Було б дуже добре, щоб ми з малювальником хоч якось розуміли один одного. З часом, мабуть, захочеться щоб ще і гарно. Складна задача. Багато хто пробує, небагато хто може похвалитися результатами.
Розглянемо ще одну спробу: сервіс «Творець зображень». Дякую Максиму, що звернув мою увагу на даний сервіс. Ну, подумав я, ще один сервіс. І малює це чудо, мабуть, різноманітні абстракції, в кращому випадку — котиків, схожих на котиків. Але у сервісу «Творець зображень» виявилися дуже амбіційні батьки: компанія 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 рішень.
Анатолій Анатолійович
Особисто мені дуже подобаються задачі з кількома розв’язками. Вони навчають споглядати світ навколо з різних сторін.
Одну з таких задач і пропоную вашій увазі.
Я побачив одне рішення, моя учениця Анастасія – ще одне. А, можливо, їх ще більше – аргументованих рішень?
Спробуйте спочатку самостійно знайти кілька рішень, а лише потім переглянути вже знайдені, натиснувши "Детальніше"