У грудні 2022 року на сайті «Плетиво» вийшла стаття про виготовлення електросвічок і мініліхтарів для військових на основі тернопільської свічки. Головна перевага цих пристроїв полягає в тому, що вони можуть безперервно світити понад три місяці. Для забезпечення цілодобового освітлення в підземних спорудах нашим військовим варто виготовляти і передавати прості конструкції. Наприклад, електросвічки за версією діда Василя Мельника. В пам’ять про загиблого на війні єдиного онука, Василь Йосипович виготовляє вже п’яту тисячу електросвічок. Наразі він надає перевагу такій конструкції:
Запобіжник, як бачите, виготовлений із пивної пляшки.
Я роблю мініліхтарики з вимикачем і двома світлодіодами:
Ліхтарик такої конструкції виходить досить міцним, невеликим, зручним у використанні, зручно включається-виключається, його можна носити з собою.
Останнім часом отримав запит від військових на мініліхтарики з червоним кольором світла. Як відомо, червоне світло в темний час доби погано видно здалеку. Це забезпечує більшу безпеку для військових, оскільки ворогу важче помітити таке світло. Крім того, червоне світло допомагає легше орієнтуватися на місцевості, не осліплює, у військових не виникає відчуття потемніння в очах при його використанні.
Метою цієї статті є розібратися у виготовленні ліхтариків з червоним кольором світла для військових і орієнтуватися по цінах.
Для початку розберемося зі світлодіодами. Ось чудова картинка з сайту komcat.net.ua, де можна побачити Vf (пряме падіння напруги) для світлодіодів різних кольорів:
Якщо послідовно з’єднати дві пальчикові батарейки, то ми отримаємо напругу в три вольти. Білі та сині світлодіоди будуть справно працювати при такій напрузі. А от червоні, як ми бачимо з таблиці, не зобов'язані функціонувати у таких умовах. Хоча існують червоні світлодіоди, що працюють при трьох вольтах, я бачив такі на Розетці, але частіше за все при купівлі червоного світлодіода ви отримаєте екземпляр з прямим падінням напруги, як зазначено в таблиці, 1,8–2,1 вольта. Для нормального функціонування такого світлодіода при напрузі в три вольта потрібно послідовно зі світлодіодом підключати струмообмежувальний резистор. Розрахувати його опір можна, наприклад, на цій сторінці, де також можна ознайомитися з відповідною теорією.
Ось одна з моїх версій мініліхтарика з червоним світлом, що використовує вимикач і обмежувальний резистор:
Світлодіоди з’єднані паралельно, а єдиний струмообмежувальний резистор розрахований за допомогою цього калькулятора.
Очевидний мінус цієї конструкції — час роботи. Оскільки одночасно світять чотири світлодіоди, таку конструкцію навряд чи можна рекомендувати для безперервного цілодобового освітлення. Також потрібно враховувати, що така конструкція на чотирьох світлодіодах світла дає небагато. А якщо збільшити кількість світлодіодів, відповідно, зменшиться час роботи мініліхтарика. Цей виріб — одноразовий: коли батарейки розрядяться, його доведеться викинути, а шкода, адже там є і вимикач, і світлодіоди.
Тому пропоную ще одну версію мініліхтарика з червоним кольором світла: бокс для батарей, п’ять світлодіодів, вимикач.
Переваги очевидні: батарейки можна легко замінити, при такій кількості світлодіодів можна спробувати не встановлювати струмообмежувальний резистор, а конструкція дає трохи більше світла.
Далі про витрати.
Я не отримую кешбеків від AliExpress чи продавців і не займаюся рекламою. Мої посилання лише інформативні. Де сам купую сьогодні — ті посилання і надаю. Якщо ціни зростуть, шукатиму інші варіанти.
Тримач (холдер) для двох пальчикових великих батарейок АА. 10 тримачів — 127 гривень. Наприклад, тут
Вимикачі, які я використовую в мініліхтариках, поки що виявилися найбільш надійними, якщо при пайці їх не перегрівати. 100 штук — 317 гривень. Наприклад, тут
На світлодіоди бувають знижки, можливо, краще пошукати на AliExpress перед купівлею. Щодо цін, то останній раз я купував 100 червоних світлодіодів за 77 гривень тут
Різні кольори гумок — щоб воїни легше знаходили свій ліхтарик. А ще гумки дозволяють зачепити ліхтарик за цвях або гілку, якщо потрібно, і не дають випасти батарейкам. Якщо є можливість і початкові навички користування паяльником, то виготовлення таких ліхтариків — справа нескладна. І потрібна. Бо ліхтарі на світлині вже поїхали на тестування.
Анатолій Анатолійович,
серпень 2024 року
Сьогодні у нас практична робота на тему «Умілі та не дуже ледачі руки». Іграшку, яку ми будемо робити, я побачив у якомусь журналі ще в дитинстві. Вона, відповідно, давня, але, на мою думку, цікава. Куля може бути не лише декоративною, а й стати чудовим пакуванням для невеликого подарунку. Це також може бути невеликий шкільний проєкт з розподілом ролей і задач, кресленням, аналізом алгоритму складання, презентацією процесу або результату. Команди можуть створювати кулі різних розмірів, возитися з транспортиром та здивовано дізнатися, що циркулем можна не лише кидатися.
Нам потрібні олівець, папір і ножиці. Якщо пощастить знайти, можна скористатися циркулем і лінійкою.
Починаємо. Малюємо на папері коло. Якщо немає циркуля, можна обвести склянку, пляшку або інший підходящий предмет. Рекомендую діаметр приблизно 10 см: так і зручно збирати, і куля виходить середнього розміру. Намальоване коло ділимо на п'ять рівних частин. Тим, хто знайомий з геометрією, можна згадати, що кут між осями у цьому випадку: 360/5 = 72 градуси. Можна скористатися транспортиром. У мене при діаметрі кола 5 см відстань між точками, що ділять його, склала приблизно 29 мм. Це можна перерахувати для інших діаметрів або поділити приблизно.
Кожну сторону цього п'ятикутника ділимо навпіл. У ці точки вставляємо голку циркуля і, використовуючи діаметр, що дорівнює довжині сторони п'ятикутника, малюємо кола. У результаті отримуємо фігуру у формі п'ятилисника. Якщо циркуля немає, викручуємось якось інакше.
Кожну пелюстку підрізаємо до половини, а краще трохи більше:
Це і є потрібна нам заготовка-п'ятилисник. Таких вирізаємо 12 штук. Гарно виходить, якщо заготовки одного кольору. Ефектно вигладають кулі з цупкого паперу, коли обидві його сторони - кольорові. Якщо папір не дуже цупкий, вирізати п'ятилисники можна не по одному, а відразу кілька штук одночасно.
Далі — збірка:
Проріз пелюстки «1» заготовки «А» заводимо в проріз «1» заготовки «B». Пелюстку «2» заготовки «С» надягаємо на пелюстку «2» заготовки «A», а пелюстку «3» заготовки «С» - на пелюстку «3» заготовки «B». Тим самим ми зчепили три заготовки. Вийшла «квіточка» з трьох пелюсток. Далі беремо інші заготовки і зчіплюємо з цими трьома. Коли всі дванадцять заготовок будуть зчеплені між собою, вийде кулька.
Я тут змайстрував дослідний зразок і поклав його на сканер. Вийшло не ідеально, але ідею можна зрозуміти:
Перед тим як вплести останні п'ятилисники, можна покласти в кулю невеликий сюрприз, подарунок або цукерку. Нехай той, хто буде діставати подарунок, спробує не порвати кулю, а акуратно її розплутати )
Успіхів!
Розглядаємо чудову гру — такнішки. В ній є критичне, логічне, латеральне мислення, розділення задачі на частини, вміння чути інших, навички колективної роботи. Це гра, для якої не потрібні ні костюми, ні декорації, лише ведучий і гравці, багато років я зі своїми учнями граємо в такнішки.
Враховуючи ситуацію з енергопостачанням в Україні, гра може багатьом чудово зайти як на уроках інформатики, так і в укриттях. Ви можете зустріти цю гру як «ситуаційний пазл», «данетки» або «lateral thinking puzzle». На сайті «Плетиво» в 2019 році описана авторська гра «Оплески», що є певною мірою модифікованими «такнішками».
Такнішки — розвага з категорії «на любителя», тобто в одному класі йде «на ура», в іншому викликає щиру байдужість. Треба пробувати. Або змінювати складність завдань. Значну роль в грі має ведучий.
Отже, «такнішки»
Умови
Грає група не менше ніж з двох осіб. Один з гравців — ведучий. Решта — гравці.
Обладнання та пристосування
Не потрібні.
Правила
Ведучий коротко описує гравцям певну ситуацію. Завдання гравців — за допомогою додаткових запитань зрозуміти і пояснити ведучому цю ситуацію повністю. Ведучий має право відповідати на запитання «так» або «ні» (звідси і назва «такнішки»). Ще ведучий може сказати «не має значення». Роль ведучого достатньо творча, при необхідності він може розбавляти гру додатковими поясненнями, жартами, допомагати групі, коли вони зайшли в глухий кут і знижується цікавість. Під час гри, на прохання гравців ведучий може повторити умову задачі. Я своїм учням ставлю додаткову умову — якщо вони до кінця уроку не розв’язали такнішку, то я не кажу відповідь, ми переносимо обговорення на інший час або інший рік. І коли з’являється трохи часу, учні самі мені нагадують, що у них є незакрита такнішка. Ось, мабуть, і все.
Опис
Наведу приклад однієї з «такнішок», яку я грав з учнями восьмого класу. Було весело )
Ситуація: Коли Жан прийшов додому, Жаклін уже спала. Жан ліг спати. Вночі він прокинувся і відчув, що хоче пити. Вгамувавши спрагу, він знову ліг спати, а прокинувшись вранці, виявив, що Жаклін мертва. Розкажіть, що сталося.
А ось гра...
Жан хотів убити Жаклін?
Ні
Якби не він, Жаклін би була жива?
Так
Коли він прийшов додому, Жаклін була жива?
Так, це є в умові такнішки
До того, як він прокинувся вночі, вона була жива?
Так
Вона померла після того, як він прокинувся вночі?
Так
Жан її вбив?
У певному сенсі так
Він її застрелив?
Ні
Задушив?
Ні
Отруїв?
Ні. Ви, до речі, ще багато чого не перелічили. Спробуйте якось узагальнити
Він її вбив якимось предметом?
Ні
Він дав їй щось випити або з'їсти?
Ні
Він взагалі хотів її вбити?
Ні
Він убив її випадково, виходить?
Так
Жаклін була його дружиною?
Ні
Коханкою?
Ні
Домробітницею?
Ні
Жаклін жила з Жаном?
Так, в одній квартирі (мені здалося, що поняття потрібно уточнити)
Жан любив Жаклін?
Не має значення (здивоване гудіння серед гравців)
Вона була блондинкою чи брюнеткою?
Некоректне запитання
Вона була блондинкою?
Ні
Брюнеткою?
Ні
Вона була гарна?
Не має значення (знову здивоване гудіння)
Вона вночі спала поруч з ним?
Ні
Вона спала на іншому ліжку?
Ні
На дивані?
Ні
Вона взагалі спала лежачи?
Ні
Стоячи?
Ні
Вона спала не як всі люди?
Так
Вона людина?
Ні
Жаклін тварина?
Так
Птах?
Ні
Наземна тварина?
Ні
Водоплавна?
Так
Риба?
Так
Він утамував спрагу, випивши всю воду з її акваріума?
Так.
Кінець гри
Звичайно, є чимало сайтів з такнішками, є з чого обрати. Були випадки, коли такнішки пропонували учні, самі ж були і ведучими таких ігор. Щодо сучасних реалій, вчитель інформатики може назбирати ситуацій для такнішок, зберегти тексти на смартфоні та користуватися і в класі і в сховищі, якщо не дуже шумно. Або грати в такнішки можна і текстом. Наприклад, в чаті.
Рекомендую!
Анатолій Анатолійович
Розглянемо олімпіадну задачу. Задача нескладна, детально описана автором як в тексті умови, так і в тестових прикладах. Але в задачі є один цікавий момент, який необхідно знайти самостійно.
Задача: Коробка
Автор: Anton Tsypko
Джерело: Ukrainian Olympiad in Informatics 2021-2022, II stage, 13-th November
Розміщена: https://groups.eolymp.com/uk/problems/10923
Умова:
У Козака Вуса є коробка, яка може вмістити до k кілограмів включно. Якщо у коробці будуть речі, вага яких перевищує k кілограмів, то вона порветься. У нього також є п'ять м'ячів вагою a1,a2,a3,a4,a5 кілограмів відповідно. Також відомо, що вага кожного наступного м'яча більша за попередню. Визначте максимальну кількість м'ячів, які можна положити у коробку так, що вона не порвалася.
Вхідні дані
Перший рядок містить одне ціле число k (1≤k≤100).
Другий рядок містить п'ять цілих чисел a1,a2,a3,a4,a5 (1≤ ai ≤25). Гарантується, що кожне наступне число більше за попереднє.
Вихідні дані
Виведіть максимальну кількість м'ячів, які можна вмістити у коробку.
Примітка
У першому прикладі перші три речі сумарно важать 10 кілограмів, саме стільки можна вмістити у коробку.
У другому прикладі перші дві речі важать три кілограми. А три речі важать уже шість кілограмів, проте шість більше, ніж чотири. Тому третю річ взяти неможливо.
У третьому прикладі перші три речі важать шість кілограмів, а чотири речі важать уже десять кілограмів, тобто більше, ніж дев'ять. Тому відповідь три.
Ліміт часу 1 секунда
Ліміт використання пам'яті 256 MB
Вхідні дані #1
10
1 4 5 7 25
Вихідні дані #1
3
Вхідні дані #2
4
1 2 3 4 5
Вихідні дані #2
2
Вхідні дані #3
9
1 2 3 4 5
Вихідні дані #3
3
На перший погляд, не дуже зрозуміло, чому така проста задача була включена в олімпіаду. Але давайте не поспішати. Я пропоную розглянути один з варіантів розв’язку, пояснюючи алгоритм та ілюструючи його блок схемою. Саме використання блок-схеми, на мою думку, допоможе зрозуміти логіку роботи програми.
Припустимо, що всі п’ять м’ячів можуть розміститися в коробці. Тобто, вага п’яти м’ячів менша або дорівнює вазі, на яку розрахована коробка. В такому випадку нам потрібно вивести максимальну кількість м’ячів, тобто 5. І на тому завершити роботу програми.
Давайте представимо це блок-схемою. Введення і виведення даних представимо паралелограмами. Щоб не плутатися, при введенні даних будемо писати "input", а при виведенні — "print".
Розгалуження представимо ромбом, у якого один вхід (зверху) і два виходи. Якщо умова виконується, то програма переходить до виконання наступного блоку по стрілці «Yes», а коли умова не виконується, то програма переходить до наступного блоку по стрілці «No»:
Погодьтесь, з використанням блок-схеми логіка програми повністю зрозуміла. Якою би мовою ми потім не писали код. Єдина проблема — у нас є незакрита стрілка «No» – ми не вказали на блок-схемі, що робити, якщо умова не виконується. Тому стрілка червона. Але ми це скоро виправимо.
Варіант, коли в коробку влізуть всі п’ять м’ячів ми розглянули, можна більше до того не повертатися. А якщо п’ять м’ячів не можна розмістити (це якраз по червоній стрілці), давайте перевіримо, чи можна розмістити чотири:
if a1 + a2 + a3 + a4 <= k:
print(4)
Як це буде виглядати на блок-схемі? Так:
Погодьтесь, зрозуміла візуалізація.
Розбираємося далі.
Як казав один з моїх вчителів, Володимир Леонідович Дідковський, помилки дуже часто ховаються не перед очима, а саме на краях. Яка максимальна кількість м’ячів може поміститися в коробку? П’ять. Вірно, бо їх усього п’ять згідно умови. Один край умови ми розглянули – максимум. Розглянемо інший край – мінімум. А яка мінімальна кількість м’ячів може розміститися в коробці? Один? Ні, неправильно. Давайте абстрагуємся від тестових прикладів і представимо, що у нас є невелика коробка склеєна зі звичайного офісного паперу і п’ять цеглин. Скільки цеглин витримає така коробка? Нескільки. Нуль.
Ось варіант вхідних даних для такого випадку:
Вхідні дані
1
5 6 7 8 9
Вихідні дані
0
Звичайно, такого прикладу немає в умові задачі, треба самостійно розглянути умови «на краях». І якщо це зробити, то задача, по суті, нескладна. І за допомогою блок-схеми можна пояснити логіку її роботи без прив’язування до мови програмування.
Погодьтесь, все зрозуміло:
В коді на Python це буде так:
k = int(input())
a1, a2, a3, a4, a5 = map(int, input().split())
if a1 + a2 + a3 + a4 + a5 <= k:
print(5)
elif a1 + a2 + a3 + a4 <= k:
print(4)
elif a1 + a2 + a3 <= k:
print(3)
elif a1 + a2 <= k:
print(2)
elif a1 <= k:
print(1)
else:
print(0)
Розглянемо складну задачу. На сайті eolymp.com її складність — 55%, тобто більше половини програмістів, що за неї бралися, її не подолали, а кількість спроб розв’язку перевищує 14 тисяч. При цьому, якщо прочитати умову уважно — задача проста. Давайте розбиратися.
Задача «Слово чемпіон».
https://www.eolymp.com/uk/problems/330
Умова:
Дано деяке речення на невідомій мові. Назвемо слово у ньому чемпіоном, якщо воно є паліндромом і кількість літер у ньому максимальна. Літерами алфавіту у невідомій мові є літери латинського алфавіту та арабські цифри. Гарантується, що у реченні відсутні інші символи, крім літер, пропусків, розділових знаків та нелітерних дефіс (мінус) і апостроф.
Вхідні дані
Речення на невідомій мові.
Вихідні дані
Номер слова чемпіона.
Ліміт часу 0.5 секунди
Ліміт використання пам'яті 64 Mб
Перший приклад вхідних даних: Oo, it aaa is not bb.
Вихідні дані: 3
Другий приклад вхідних даних: Oo, it aaa issi not bbbbb.
Вихідні дані: 6
Звичайно, для початку необхідно розібратися з означеннями. Вікіпедія пише, що паліндром — це слово, число, набір символів, словосполучення або віршований рядок, що однаково читається в обох напрямках (зліва направо та справа наліво). У статті на вікі є купа прикладів паліндромів, в тому числі достатньо драматичних як то «Три психи пили Пилипихи спирт», але немає чіткої відповіді чи є паліндромом слово з однієї букви. ChatGPT каже, що однобуквене слово можна вважати паліндромом і тут з ним можна погодитися. Не питайте його про трьох випиваючих психів, в цьому питанні воно до смішного дурне.
З паліндромом визначились. Мовою Python визначити чи слово є паліндромом можна, наприклад, так:
word = 'abba'
print(word == word[::-1])
Тестові приклади підказують нам, що треба привести всі букви до єдиного регістру. Бо без цього слово 'abba' буде зараховане як паліндром, а слово 'Abba' — ні. Тому приводим весь текст до одного регістру, наприклад, зробимо всі букви маленькими. Треба враховувати, що об’єкт текстового типу в мові Python є іммутабельним, тобто його не можна змінити.
Відповідно, так робити не можна:
txt = 'Василь'
txt.lower()
А так — можна:
txt = 'Василь'
txt = txt.lower()
Наступний етап дослідження — розділові знаки. В реченні, згідно умови, є розділові знаки, і нам потрібно їх з речення вилучити. До розділових знаків належать: крапка, кома, крапка з комою, двокрапка, тире, три крапки, знак оклику, знак питання, лапки, дужки, скісна риска, абзац, проміжок.
Як багато! Звичайно, можна вилучати їх по черзі:
txt = txt.replace('.','')
txt = txt.replace(',','')
Але так довго. Тому варто пошукати алгоритм колективного вилучення розділових знаків. Нам допоможуть регулярні вирази. Ось як можна в один рядок вилучити з речення цілу купу розділових знаків:
txt = re.sub(r'[.,;:!?{}\[\]()"]', '', txt)
Ну і вишенька на нашому торті. В умові написано, що в реченні можуть бути нелітерний дефіс (мінус) і апостроф.
Тут важливо не полінуватися і дізнатися, що це таке — нелітерні знаки.
Вікіпедія не така вже і наукова, але простою людською мовою пише, що нелітерні орфографічні знаки — категорія знаків писемності, які не є літерами, але використовуються в написанні слів (тобто належать орфографії), а не розділяють слова (на відміну від знаків пунктуації, що належать до пунктуації).
Дефіс і апостроф ми повинні в нашій задачі рахувати як літери! Ми не можемо викинути з тексту дефіси, тому що вони можуть бути важливими для визначення паліндромності. Ось, наприклад два слова:
abba-abba
abbaab-ba
Перше — паліндром, друге — ні. Різниця — в місці дефісу.
Але якщо дефіс стоїть окремо, наприклад, обрамлений пропусками, то це вже не буква, а окрема частина речення. Приклад:
abba - abak bebebeb
Формально це вже тире, тобто знак пунктуації, а ми такі знаки з речення вилучаемо. Тому будемо вилучати дефіс лише в тому випадку, коли він буде в оточенні пропусків:
txt = re.sub(r' - ', ' ', txt)
Так само з апострофом. Він, згідно умови, може бути частиною слова, наприклад
abba'abba або abbaab'ba
або може бути окремим символом в реченні, тоді буде оточеним пропусками. Зідно умови наше речення на невідомій мові, може в цій мові існують такі конструкції:
abba ' abak bebebeb
Отже, для розв’язування даної задачі нам потрібно розібрати поняття нелітерних орфографічних знаків, або ілетрограм. Інакше ми не зможемо повністю зрозуміти умову.
В узагальненому вигляді, порада програмістам може бути традиційною: «Читайте умову уважно і цілком» :)
Варіант коду:
import re
txt = input()
txt = txt.lower()
txt = re.sub(r'[.,;:!?{}\[\]()"]', '', txt)
txt = re.sub(r' - | \' ', ' ', txt)
index_max = 0
len_max = 0
words = [x for x in txt.split()]
for index, word in enumerate(words):
if word == word[::-1] and len(word) > len_max:
len_max = len(word)
index_max = index + 1
print(index_max)
Обмін думками про значність зв’язку програмування з математикою — річ відома. Сьогодні на розгляд пропонується задача, для розв’язання якої математика таки згодиться.
Задача «Контрольна робота»
https://www.eolymp.com/uk/problems/1690
Умова:
Паралель восьмих класів написала контрольну роботу. В результаті рівно A% учнів отримали 5, рівно B% - 4, рівно C% - 3, а інші D% написали її на 2. Яка мінімальна кількість школярів повинна бути у паралелі восьмих класів для того, щоб могли бути отримані такі результати?
Вхідні дані
Вводяться 4 цілих числа від 0 до 100 - A, B, C, D (A + B + C + D = 100).
Вихідні дані
Виведіть єдине ціле додатнє число - мінімальну можливу кількість учнів у паралелі.
Приклад
Вхідні дані
40 50 5 5
Вихідні дані
20
Пропоную проаналізувати не лише один тестовий приклад, а сформувати кілька таких прикладів і розв’язати задачу спочатку аналітично. Оформимо все в таблицю:
A
|
B
|
C
|
D
|
Розв’язок
|
40
|
50
|
5
|
5
|
20
|
25
|
25
|
25
|
25
|
4
|
10
|
10
|
10
|
70
|
10
|
23
|
27
|
20
|
30
|
100
|
Всі, хто відвідував або відвідує уроки математики, мабуть, відчувають, що тут є простий математичний розв’язок. Так і є. Якщо знайти найбільше число, на яке діляться всі чотири числа умови, то задача стає зовсім простою.
Давайте знайдемо найбільше число, на яке діляться ці чотири числа: 40 50 5 5. Звичайно, це число 5. В математиці це число зветься найбільшим спільним дільником (НСД). І тоді виходить, що вісім учнів отримали п’ятірку (40/5), десять учнів отримали четвірку (50/5), один учень отримав трійку (5/5) і один учень отримав двійку (5/5). Разом виходить 20 учнів. А через те, що нас не питають в задачі, скільки учнів яку оцінку отримали, а питають загальну мінімальну кількість учнів, то можна порахувати так: (40+50+5+5) / НСД.
Перевірити саме цей алгоритм розв'язку можна на додаткових прикладах. І задача стає зовсім простою, бо НСД можна знайти у тому числі і підбором.
Але в Python є готова функція, яка обчислює НСД. І робить код простим і лаконічним:
import math
a, b, c, d = map(int, input().split())
print((a + b + c + d) // math.gcd(a, b, c, d))
Але не все так просто. Річ у тому, що цей код не завжди працює. Звернемся до документації Python. Функція gcd() з’явилась у версії 3.5. При цьому можна було вказати лише два аргументи функції. А вказувати чотири аргументи стало можливо лише з версії 3.9:
А якщо учень програмує на Windows 7, то, як відомо, остання версія, яка встановиться на дану операційну систему – це 3.8.10, тому для gcd() треба буде вказувати лише два аргумента. Це не проблема, але код все ж таки буде інший. Наприклад, в Python 3.8.10 цю задачу можна здати таким кодом:
from math import gcd
a, b, c, d = map(int, input().split())
nsd = gcd(gcd(a, b), gcd(c, d))
print((a + b + c + d) // nsd)
Якщо учень програмує на Windows XP, то остання версія Python для цієї операційної системи — 3.4.4, а, відповідно, фунцією gcd() учень не зможе скористатися взагалі і йому доведеться шукати НСД іншим шляхом.
Можна, звичайно, користуватися онлайн-середовищами. На replit.com та еolymp.com встановлені останні версії Python і багато учнів взагалі не зіштовхнуться з проблемою. Але учням, що планують своє майбутнє в IT, на мою думку, треба розповідати про різноманіття версій та подібні ситуації. Мова не про надглибоку деталізацію, а про загальні факти і приклади. Ну і про відвідування уроків математики, звичайно. Задачу з інформатики «Контрольна робота», що була щойно розглянута без застосування НСД розв’язати буде, IMHO, не так просто і гарно.
Сайт «Плетиво» представляє авторську задачу і наступний алгоритм:
1. Кажемо відповідь
2. Ліземо в гаманець
3. Самооцінювання :)