Одного чудового ранку понеділка три друга – Вова, Петрик і Степан знайшли скарб з цукерками. Кожен в цей день з’їв купу цукерок, а дослідник Петрик записав всі кількості в зошит, бо йому було цікаво дізнатися загальну кількість цукерок у скарбі. У вівторок і середу щасливі дні продовжилися і хлопці радісно споживали смакоту. Але в четвер на перманентно-радісні обличчя хлопців звернула увагу Оленка. За допомогою різноманітних і не завжди коректних методів впливу вона дізналася про скарб і швидко сформувала у хлопців комплекс провини на предмет «треба було ділитися». Починаючи від четверга Оленка також взяла участь у смачних дегустаціях. В неділю цукерочний скарб вичерпався. Оленка заявила хлопцям, що вона в цій історії – постраждала сторона, бо почала брати участь у щасті лише з четверга, коли всі інші раділи вже на повну. Петрик дістав зошит, і порахував на 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, в якому є функція обрахунку стандартного відхилення. Ось один з варіантів програми, що допоможе в аналізі:
Код тут
Важливим в даному дослідженні є його прикладна сутність: ми за допомогою комп’ютера обирали дві гральні кості з найкращим показником рівномірності, причому обирали з науковим підходом і використанням чудового інструменту на ім’я комп’ютер. А ще розібралися з математичним апаратом такого дослідження. Це ж дослідження? Безумовно. З результатами? З результатами. Весела прикладна забава, частково відповідаюча на дитячі запитання «нашо та математика, для чого вона?!».
Є такий ефект – відбиття. Це ніби літера стоїть на березі, а її відображення ми бачимо у воді. Українська літера "Г" у відбитті буде виглядати як літера "L". Але є такі літери, що однаково будуть виглядати і в реальності і у відбитті. Я вибрав усі такі літери в українській абетці, набудував слів з таких букв (і самостійно і за допомогою сайтів, що таке вміють). З цих слів побудував фрази, що однаково виглядають і в реальності і у відбитті. Обрав фразу, що найбільше сподобалась і на її основі побудував дане відео.
У вірусному YouTube-відео дослідник Sasha Ternopolskiy, без аналізу вольт-амперних характеристик світлодіода спаяв кілька простих пристроїв, що складаються з двох пальчикових батарейок і трьохвольтового світлодіоду. Спаяв і став досліджувати — скільки ці пристрої будуть світити без виключення. Згідно його відео – вистачило більше ніж на рік. Він назвав свій виріб тернопільською свічкою. В даній статті я буду називати цей пристрій електросвічкою.
В коментарях під відео люди з відповідною освітою поміряли струми і напруги і не здивувались. Річ в тому, що під час роботи такої електросвічки напруга на батарейках падає, струм і яскравість горіння світлодіоду також падають. Святлодіод горить менш яскраво, але горить. При цому дуже мало споживає, тому може горіти довго. Навряд чи цей пристрій можна назвати ліхтариком, скоріше — маяком.
Пару таких свічок горить в мене вдома, вже більше двох місяців цілодобово. Біля двох десятків ми з учнями повісили в шкільне бомбосховище. Діти логічні, самі вишукували важливі місця розташування, крім того, саме учні-програмісти придумали поставити біля виходів зі сховища такі електросвічки з синім кольором світла. По принципу – якщо ти в бомбосховищі бачиш синій маяк – то цє вихід. Все через те, що синій колір світла відрізняється від кольору інших електросвічок і кольору ліхтарів смартфонів. Нічого більше синім кольором не світить. Якщо не буде світла в бомбосховищі, то до запуску генератора електросвічки не дадуть відвідувачам стукнутися головою об шо не треба. Електросвічки також установлені в туалетах шкільного бомбосховища.
Працюють вони в сховищі, не виключаючись, цілодобово більше двох місяців також. Світлодіод в них запаяний, обслуговування і включення вони не потребують. Саме такий тип свічок я рекомендую для використання в якості маяка. Як один з варіантів – щоб діти не боялися виключення світла. Звичайні свічки більш небезпечні, особливо дітям. Електросвічки до того ж є дешевшими. Звичайно, дуже малим дуже дітям не можна такий пристрій давати, щоб не відламали і не ковтнули світлодіод.
Такі електросвічки можуть дуже допомогти нашим людям на тих територіях, де немає електрики. А якщо малі діти вдома? Або лежачі хворі? Свічка, що працює місяцями — дуже згодиться. Волонтери ж можуть завезти що завгодно куди завгодно.
Електросвічку можна носити просто в кишені. Світло виключають будь де, під’їзди теж темні. Виймаєш з кишені – вона світить, не займаєшся в темряві її включенням. Поклав в zip-пакет, щоб ні за що не чиплялася та носи в кишені. Ось так:
А який романтично-практичний подарунок така електросвічка — цікавій дівчині! Це не просто лайфхак, так можна собі життя влаштувати. Дарую ))
Я запропонував таку електросвічку військовим. Поставили вимогу – свічки повинні виключатися і мати можливість миттєвого виключення. Логічно. Відправив першу партію. Сказали, що влаштовує. Через волонтерів почав робити на інші підрозділи. Різні типи. Аналізую зворотній зв’язок – кажуть, що корисний пристрій.
В даній статті я хочу розказати все детально і з цінами. Настільки детально, щоб практично кожен міг такий пристрій зробити, в першу чергу військовим. Це нескладно. Діти в школі роблять.
Починаємо з батарейок. Нам треба пальчикові батарейки. Вони бувають двох розмірів – AAA, які називають міні-пальчикові, і трохи більші за розміром – пальчикові. Вони мають офіційне маркування: AA. Я беру в роботу більші з цих батарейок, вони мають більшу ємність. Отже, тип батарейок обрали – АА, на них так і написано - AA.
Тепер з внутрішнім наповненням. Якщо коротко, батарейки AA бувають сольові і лужні. Лужні називаються англійською alkaline battery. Лужні батарейки мають, згідно відкритих даних, значно більшу ємність, тому рекомендую саме їх — лужні (можна казати алкалайнові) батарейки розміру АА.
Скільки вони коштують? Я в своєму місті знайшов Enerlight і VIDEX за 12 гривень/штука, Energizer біля 20, а в АТБ побачив Generator ENERGY в пакуванні шість штук, це найдешевший варіант. Виходить біля 9 гривень за батарейку. Знайти недорогі батарейки — важливо, коли виробляти багато пристроїв власним коштом. Алкалайнова батарейка зазвичай важча за сольову, важить близько 24 грамів.
Батарейки купили. Щоб робити більш-менш надійні пристрої для військових, неправильно складати електросвічки з сірникових коробок, треба спробувати зробити більш надійно, наприклад, паяти.
Я використовую для паяння електросвічок простий паяльник на 40 Вт, звичайний, з базару, харківський. Якщо купувати новий, то, мабуть сьогодні 200-300 гривень. Що ще треба?
Каніфоль для паяння не дуже дорого коштує, попитайте в магазинах господарських товарів. Мабуть, пару десятків гривень. Я не купував, у мене багато є.
Окреме питання – припій. Тут є певна проблема. Зараз в магазинах дуже багато припою, який звичайний паяльник не розплавляє. Припій з високою температурою плавлення. І здивований паяльщик не розуміє що відбувається – він не може паяти щойно купленим припоєм. Просто треба купити інший.
Як купити правильний припій? Треба консультуватися в магазинах або у тих, хто розбирається – у ремонтників, наприклад. Я купую припій, частіше за все, в Китаї, так дешевше. При купівлі звертаю увагу на відгуки користувачів і кількість продажів у продавця. І обов’язково звертаю увагу на температуру плавлення припою. Останній раз купував з температурою плавлення 183°C. Паяльник його чудово плавить і паяння виходить нормальне. В Китаї по грошах це виходить близько 150 гривень за 100 грамів припою разом з каніфоллю. Таким паяти зручно. Такий самий припій, що нормально плавиться я купив у своєму місті в кінці 2022 року за 130 гривень (50 грамів). Теж нормально плавиться, заявлено, що тип припою – POS61.
Світлодіоди можна спробувати купувати на OLX, я купую знову-таки, в Китаї. Ціни різні, але чимало продавців продають приблизно однаково – близько 50 гривень за 100 штук. Реально соромно, коли деякі намагаються продавати в Україні по 20 гривень за один. Ціну світлодіоду я вам сказав – біля 50 гривень за 100 штук з доставкою з Китаю в Україну. Чекати посилку з Китаю зазвичай треба 2-4 тижні. Ключові слова для пошуку, наприклад, на Аліекспрес: «100pcs 5mm led diode». При купівлі звертайте увагу, щоб світлодіод був розрахований на напругу не менше трьох вольт. Струм споживання світлодіода при трьох вольтах — зазвичай 20мА.
Світлодіоди можна купувати двох типів.
Той, що зліва, в якому більше прозорого пластику, дає більш направлене світло, я його ставлю в пристрої для військових. Більш направлене світло – можна використати як ліхтарик. Світлодіод справа дає більш розсіяне світло, їх я ставлю у цілодобово включені електросвічки, що використовуються як електросвічка. А купую в даний час лише такі, що на світлині зліва - вони і як невеличкий ліхтарик чудово працюють і як електросвічка.
Батарейки, до речі, погано паяються. Якщо місце пайки подряпати ножом, тоді паяються значно краще. Якщо багато робити, то дряпати вручну – довго і незручно, я купив в господарському магазині таку абразивну цяцю за 20 гривень:
Зарядив її в дріль, так значно швидше і зручніше. Розумні люди підказали, що зветься ця річ - фреза і використовується, зазвичай, для манікюру. Ось дві батарейки, та що справа – подряпана саме такою фрезою.
Там де подряпали – пальцем не беремося, бо палець жирний.
Якщо припій нормальний і з каніфоллю, то торкаємося паяльником подряпаної частини батарейки і припой у вигляді проволоки подаємо в це місце. Як це детально робиться – в інтернеті купа відео, як треба паяти. Отже, батарейки після подряпання паяються нормально:
Пропаювати батарейки треба недовго, бо вони не люблять нагрівання. Паяти треба акуратно, щоб не перемкнути плюс і мінус батарейки, а то буде коротке замикання, батарейка почне сильно грітися і може навіть вибухнути. Якщо нема досвіду, можна купити захисні окуляри, так буде спокійніше.
Після того, як подряпано і припій нормально пристав, зв’язуємо батарейки скотчем і паяємо перемичку з проводу між плюсом однієї батарейки і мінусом іншої:
Перевертаємо. Якщо електросвічку розраховуємо на цілобову роботу, то запаюємо світлодіода: довгий вивід до плюса батарейки, коротший - до мінусу:
На тому все. Якщо електросвічка готується для військових, або це електросвічка, щоб читати, то вона повинна виключатися. Бо так вона і більш безпечна (для військових) і довше буде яскравою (щоб читати).
Варіант перший: запаюємо один вивід світлодіода, а другий вивід згинємо, щоб скористатися для фіксування гумкою для грошей (знову ідея з відео Sasha Ternopolskiy):
Ось як з гумкою:
Тут використано дві гумки для грошей. За одну (на фото - червону) можна зачепити електросвічку за цвях або за гілку або ще за щось. Військові розберуться. А друга (жовта) – фіксує притискання другого виводу світлодіоду до батарейки. Ну і якщо жовта гумка порветься, то є резервна. Часто включати і виключати, знімаючи жовту гумку і відгинаючи незапаяний вивід – не дуже бажано, бо з часом відломиться світлодіод в місті пайки. Але виключати можна. Якщо терміново треба виключити – то я рекомендую військовим просто відірвати світлодіод. І вкрай уважно ставитися до світломаскування, щоб така електросвічка не нашкодила. Про це все написано в невеличкій інструкції, яку додаю до кожної електросвічки. Кому треба – скачати можна тут.
На світлині – все налаштовано, але електросвічка не горить. Це тому що під незапаяний вивід вставлений запобіжник – складений вдвічі шматок ізоляційної стрічки. Це транспортний захист, так свічка їде до військових. Вже на місті запобіжник військові знімуть.
Майстер Василь Мельник запропонував більш якісну конструкцію запобіжника. Він використовує в своїх електросвічках запобіжники, виготовлені з пивних пластикових пляшок. Запобіжник у вигляді полоси, вирізаної з пляшки і зігнутий буквою Г примотується до батарейок скотчем. Таким чином, запобіжник не загубиться, він зручний. До того ж він темного, контрасного кольору. Вважаю таку конструкцію запобіжника найкращою. Ось електросвічка з пластиковим запобіжником від Василя Мельника:
Підготовлену електросвічку разом з інструкцією – в zip-пакет і на відправку.
Zip-пакети, до речі, дуже зручні і коштують біля 25 гривень сто штук.
В лівому верхньому куті останньої світлини - електросвічка трохи іншої конструкції – зі змінними батарейками. Для неї використовується бокс для батарейок розміру AA, ось такий:
Там, де виходять проводи, зроблено не по військовому, швидко обірветься, клейовий пістолет це може вирішити:
Запаюємо світлодіод, для ізолювання використовуємо термоусадку, продається в електромагазинах, недорого.
Очевидно, що така свічка має свої переваги – немає місця пайки, де через згинання-розгинання може ламатися світлодіод і є можливість замінювати батарейки. В першу чергу це може бути зручно тим, кому треба більш-менш яскраве світло. Або можна будувати такого типу електросвічки з кількома паралельно включеними світлодіодами з використанням колодки:
Або просто запаявши кілька світлодіодів. Два або три. Ось так, наприклад:
Сіли батарейки за пару місяців, дуже впала яскравість – треба просто замінити батарейки на нові. В Китаї такий бокс для батарейок коштує біля 12 гривень за штуку. Колодка, яку можна використати, щоб встановлювати різну кількість світлодіодів - біля 4 гривень.
Пошукові фрази: «Battery holder AA», «Lock Wire Connectors».
Ще одна версія свічок. З вимикачем. В даному випадку достатньо надійно виглядаючий вимикач паяється замість перемички, а світлодіод запаюється обома виводами. Таку електросвічку легко виключити і можна паяти два-три світлодіоди паралельно, створивши трохи ліхтарик. Ціна вимикача, що на фото - біля 4 гривень в Китаї:
Як на мене, одна з найкращих конструкцій з використанням вимикача — це версія з двома світлодіодами:
Саме таку конструкцію я обрав для постійного виготовлення. Гумка — для того, щоб зачепити цей пристрій за цвях, гілку, ще щось. Коли не треба — можна вимкнути і таким чином значно подовжити час яскравого горіння світлодіодів. Два світлодіода дають непоганий світловий потік, виходить не лише електросвічка, а невеличкий ліхтарик.
Всі ціни в Китаї, що вказані в даній статті включають як товар, так і його доставку в Україну.
Кілька слів про пакування. Для військових електросвічки їдуть різними дорогами, а пристрій достатньо ніжний. Тому раджу пакувати надійно, щоб не відламати світлодіоди. Гарно підходять пластикові банки і судочки. Якщо є вільне місце, його можна заповнити поролоновими кухонними губками - щоб свічки надійно були зафіксовані в коробці.
Ось такі конструкції на даний час вдалося побудувати на основі ідеї «Sasha Ternopolskiy», саме він мене зацікавив спробувати. Якщо у вас є ідеї вдосконалення електросвічок для військових, пишіть на Ця електронна адреса захищена від спам-ботів. Вам необхідно увімкнути JavaScript, щоб побачити її. , бо одна голова – добре, а далі ви знаєте.
І ще я попрошу розповсюдити цю статтю з дуже простих причин — може є десь такі самі люди, що можуть допомогти іншим, в першу чергу нашим військовим. Волонтери, з якими я співпрацюю кажуть, що таке потрібно. Кажуть на основі зворотного зв’язку на вже передані електросвічки.
Приєднуйтесь!
Анатолій Анатолійович
PS.
Чудово, коли можна ділитися досвідом. Майстер Ігор робить свічки інакше. Він використовує плоскі світлодіоди:
Вони бувають на 0.5, 1 ват, 3 вати. Я буду пробувати напівватний, бо в електросвічці пріоритетно важливим вважаю час роботи. Трьохватний світлодіод буде споживати один ампер, це дуже багато, відповідно це більше навіть не свічка, а реально ліхтарик. Можливо, такий підійде для військових медиків, де важливо роздивитися всі деталі. А щоб цей ліхтарик не з'їв батарейки за кілька годин, Ігор знайшов дуже цікаві вимикачі, що витримують струм в один ампер і дуже зручні для паяння до батарейок:
Відповідно, його свічка-ліхтарик виглядає так:
Якщо у вас є свої напрацювання, діліться! ))
Сьогодні буде неолімпіадне програмування. Коли нема куди поспішати, є електрика в розетці і ароматний чай в улюбленій чашці. Сідайте поряд. Будемо розв’язувати задачу з сайту eolymp.com з номером 1536. Англійською ця задача зветься «Sweet Child Makes Trouble», а українською - «Улюблена дитина заважає», зловити б того креативного перекладача.
Умова:
Діти завжди любимі, але іноді вони можуть примусити вас вести себе різко. У цій задачі ви побачите, як Тінтін, п'ятирічний хлопчик, створює проблеми для своїх батьків. Тінтін - веселий хлопчик і завжди зайнятий справами. Але не все, що він робить, приносить радість його батькам. Більше всього йому подобається гратись з домашніми речами, як наприклад годинник батька або гребінець матері. Після гри він не повертає їх на місце. Тінтін дуже розумний хлопчик з достатнь чіткою памяттю. Він засмучує своїх батьків тим, що ніколи не повертає речі, взяті для гри, на їхнє місце.
Подумати лише! Якось вранці Тінтін вдалось викрасти три предмети домашнього вжитку. Скількома способами він може повернути ці речі так, щоб жоден з предметів не попав на своє попереднє місце? Тінтін не бажає засмучувати своїх батьків і приносити їм неприємноісті. Тому він нічого не ховає у нових місцях, а просто перекладає предмети.
Вхідні дані
Вхідні дані складаються з декількох тестів. Кожний тест містить натуральне число, яке не перевищує 800 - кількість речей, які Тінтін взяв для гри. Кожне число знаходиться у окремому рядку. Останній рядок містить -1 (мінус один) і не опрацьовується.
Вихідні дані
Для кожного тесту вивести кількість способів, якими Тінтін може повернути взяті речі.
Приклад вхідних даних:
2
3
4
-1
Приклад вихідних даних:
1
2
9
Давайте розбиратися.
Розглянемо варіант, коли Тінтін взяв дві речі. Якщо одну річ позначити одиничкою, а другу - двійкою, то варіант перестановки один:
12 (стартовий)
21 (перестановка)
Розглянемо варіант, коли Тінтін взяв три речі. Одну річ позначимо одиничкою, а другу – двійкою, третю – трійкою. Пам’ятаємо, що згідно умови Тінтін не може класти речі на ті місця, звідки брав. Тобто, якщо в стартовій позиції одиничка на першому місці, но в жодній перестановці одиничка на першому місці бути не може. Тому варіанти будуть такими:
123 (стартова)
231 (перестановка)
312 (перестановка)
Це, до речі, підтверджує тестовий приклад, при трьох речах перестановок з даними умовами існує дві.
Розглянемо варіант, коли Тінтін взяв чотири речі. Тут варіанти перестановок будуть такими:
1234 (стартова)
2143 (перестановка)
2341 (перестановка)
2413 (перестановка)
3142 (перестановка)
3412 (перестановка)
3421 (перестановка)
4123 (перестановка)
4312 (перестановка)
4321 (перестановка)
Таку кількість ще можна перебрати вручну. А от цікаво, а для п’яти речей скільки перестановок? Очікувано буде чимало, але то скільки в цифрах? Тут можна, потайки від математиків, знайти рішення перебором:
start = '12345'
c = 0
for x1 in range(1,6):
for x2 in range(1,6):
for x3 in range(1,6):
for x4 in range(1,6):
for x5 in range(1,6):
if x1 != 1 and x2 != 2 and x3 != 3 and x4 != 4 and x5 != 5 and len(set([x1,x2,x3,x4,x5])) == 5:
c += 1
print(x1, x2, x3, x4, x5, sep = '')
print(c)
У нас вийшло 44 перестановки:
21453
21534
23154
23451
23514
24153
24513
24531
25134
25413
25431
31254
31452
31524
34152
34251
34512
34521
35124
35214
35412
35421
41253
41523
41532
43152
43251
43512
43521
45123
45132
45213
45231
51234
51423
51432
53124
53214
53412
53421
54123
54132
54213
54231
Особисто я десь глибоко всередині відчуваю, що десь поряд ховається розумний математичний розв’язок. Десь дуже глибоко. У нас вже ж є послідовність, залежність кількості перестановок від кількості речей. Ось:
Кількість речей – кількість перестановок:
2 – 1
3 – 2
4 – 9
5 – 44
Так як у нас не олімпіада, а посиденьки з електрикою і чаєм, то давайте, поки математики знову не бачать, заглянемо до них в енциклопедію цілочислових послідовностей, у нас вже є чотири елементи послідовності: 1, 2, 9, 44
Отримуємо щось страшне і по суті і англійською ))
І в довгих і страшних поясненнях для розумних математиків відшукуємо нам потрібну формулу! ))
Ну а далі вже просто. Тепер можна кликати математиків і ховати перебор. І розв’язати задачу, коли наступний член послідовності визначається формулою:
a(n) = n*a(n-1) + (-1)^n
У вигляді Пайтон-програми це може бути, наприклад, так:
while True:
c = int(input())
if c == -1:
break
else:
a = 0
for n in range(2, c + 1):
a = n * a + (-1) ** n
print(a)
Яка у них, математиків, гарна наука, так? )