Совершенные числа

Привет всем!
Давненько не было увлекательных постов на тему программирования, математики и вычислительных экспериментов. Сегодня как раз будет такой. Несколько дней назад в ютубных рекомендациях (ох уж эти алгоритмы) промелькнул шортс, где молодой человек рассказал про так называемые «совершенные» числа. Так вот, оказывается, совершенное число — это такое число, сумма собственных делителей которого равна этому числу. Например, число 6 : считаем 1 + 2 + 3= 6. Далее идёт число 28. Его собственные делители 1, 2, 4, 7, 14, и их сумма 28. Далее эти числа дико возрастают: 120, 496, 8128…. Потом этот шортс с числами куда-то плавно уехал, а на его место подъехал какой-то садовник, который зачем-то жёстко наказал высокомерную певицу за наглость и унижение людей, а я так и остался в оцепенении от этих чисел. Шли серые рабочие будни, тренировки мелькали одна за другой, а я всё думал об этих совершенных числах: сколько же их всего в природе и как их найти? Конечно, есть довольно подробная статья в Википедии. Изучив её, немного прояснилось: оказывается всего их на данный момент известно ровно 51 штука. Первые девять были найдены до конца 19-го века. Дальше вы понимаете — лампочка Ильича и пошло-поехало. Но всё же, это всё было очень таинственно и притягивало как магнитом.

Я сам не заметил, как начал писать код. Было интересно реализовать два момента:

1. Хотелось бы загрузить все 8 ядер (12 потоков) моей ЭВМ по самые помидоры.
2. Хотелось бы реализовать прогноз времени финиша расчёта. Узнать, сколько секунд, часов, дней и лет понадобится для поиска собственных делителей хотя бы тех совершенных чисел, которые были найдены до начала 20-го века.

Прошло около недели беспокойных вечеров, помощь друга и вот скриншот софтины.



Как видно на этой картинке, было реализовано почти всё, что задумано. Чётные совершенные числа принадлежат степенному ряду Эйлера, формула которого приведена. То есть, нет смысла перебирать все числа в мире, достаточно прожарить всей мощью процессоров этот ряд и выявить в нём подходящие, то есть совершенные числа. Цикл поиска делителей любого числа является линейным алгоритмом, а значит, его можно раздробить на любое количество отрезков и перемалывать по-отдельности. Ну, как вы догадались, количество этих отрезков – это количество ядер на вашем железе. Затем делители осталось просуммировать и сравнить с претендентом на «совершенность». Если они равны, то и число совершенное! Если сумма больше, то такое число называют избыточным. Если же меньше – недостаточным. При этом сразу видно, что делители числа расположены неравномерно по числовой оси. Внизу их всегда больше. Алгоритм поиска делителей реализован максимально быстрый – пробег в цикле идёт не до самого числа, и даже не до половины, а до корня квадратного этого числа! При нахождении одного делителя – очевидно сразу известно и второе — парное ему — через лишь одну операцию деления. Реализована возможность загрузить любое количество имеющихся на вашем железе ядер. Скорость вычисления от этого меняется строго пропорционально.

Итого, что же мы имеем по скорости вычислений ? А в сухом остатке имеем следующее: первые восемь совершенных чисел моя ЭВМ находит примерно за полторы минуты ! Кстати, восьмое число по счастью имеет порядок n=31, а само число, стало быть 2^30 * 2^31, т.е. 2^61, что укладывается в разрядность 64-х битной ЭВМ. А вот дальше уже интересно. Следующее, девятое по счёту, известное науке число имеет порядок 2^121. И если, даже зная об этом числе, запустить его на проверку «совершенности», то ЭВМ показывает финишное время – март 2026-го года. Ну, то есть, нужно немного потерпеть. Далее в процессе вычислений, как водится, время финиша будет постепенно уточнятся, но прогноз всё равно неутешительный. Когда на работе запустили эту проверку на 20-ядерном Core i7 12700K, так над прогнозом ржали всем коллективом. Но дело даже не в этом. Ошибка здесь в том, что при максимально быстрых целочисленных операциях поиска делителя, само число не может быть больше 2^64. На лучшем во Вселенной языке программирования Си этот тип называется unsigned long long или же __int64. В случае же этого девятого совершенного числа, оно будет иметь разрядность 2^121, что сильно вываливается за границы возможного диапазона. Так как 121-разрядных ЭВМ нам пока не подвезли, то остаётся вариант расчётов с плавающей точкой. Срочно перегнал расчёты в тип double, что раздвинуло рамки поисков до 308-й степени двойки. Можно скачать первую версию и развлечься. Кстати, обычно математики ограничиваются поиском простых чисел Мерсенна из ряда 2^n — 1, из которых уже вытекают совершенные числа. На сегодня 51-е число Мерсенна равно 2^82589933 — 1. Найдено оно было в 2018-м году, и если записать это число на бумаге в клеточку, то написанная строчка будет длиной 250 км, потому что в тексте это число занимает 50 Мегабайт ! Такие новости, спасибо, что дочитали!

Электронный компас.

Друзья-товарищи!

Свершилось! Поступил в продажу электронный компас авторства вашего покорного слуги. Несколько слов об электронном компасе. История разработки этого устройства уходит корнями аж в 2005-й год, когда я, с подачи моего однокашника Глазырина Кости, узнал о выходе в свет микросхемы фирмы Honeywell, внутри которой находились двухосевые высокочувствительные магнитные датчики, способные реагировать на слабое магнитное поле Земли. Тогда мной была разработана схема с 24-мя двухцветными светодиодами, расположенными по окружности. Таким образом, куда бы не повернулся компас — красный огонёк всегда должен был перебегать на Север, а зелёный — на Юг. Такой компас был бы с одной стороны — забавная безделушка, а с другой — вполне полезный для грибников гаджет.

Но, как это часто бывает, первый блин вышел комом — к сожалению, добиться нормальной работы компаса в те годы (18 лет назад, какой ужас!) не удалось по нескольким причинам: малая разрешающая способность встроенного АЦП применяемого микроконтроллера, стыдно сказать — полное отсутствие программной реализации увязывания обеих магнитных осей и, конечно, отсутствие алгоритма калибровки, а также программно-аппаратной компенсации наклона компаса относительно горизонта. Все эти причины послужили отказом от дальнейшей разработки электронного компаса.

И вот, осенью прошлого года, спустя столько лет и, несмотря на засилье смартфонов с «компасными» приложениями, я решил вернуться к этой теме и разработать удобный в использовании компас. Заручившись согласием крупной фирмы-производителя МастерКит, за несколько дней удалось разработать компас, лишённый недостатков первоначальной версии. Благодаря научно-техническому прогрессу теперь на борту компаса мы имеем: три ортогональных магнитных оси, три ортогональных оси акселерометра, полностью цифровая обработка сигналов и вычислительные мощности достаточные для расчёта компенсации наклона, с учётом малого энергопотребления. Кстати, об энергопотреблении. Ради общей компактности пришлось пойти на компромисс и поставить батарейку CR2032, не очень ориентированную на отдачу тока 12мА в холодную погоду (<15°С). Увы, в такую погоду гаджет нужно держать во внутреннем кармане одежды, изредка доставая его, для ориентирования на местности. А вот длительность работы от одной батарейки при этом не подкачала: минимум 5000 циклов включений-отключений длительностью по 5 секунд. Можно сказать — он вечный, если не считать неизбежный саморазряд батарейки.

Как многие знают, легендарная компания МастерКит ориентирована на продажу разнообразных конструкторов для самостоятельной сборки и пайки. То есть, купив продукт, нужно приложить некоторые усилия для получения конечного результата, хотя и не секрет, что для радиолюбителей сам процесс пайки, когда сидишь весь в клубах канифольного дыма, уже является райским наслаждением. Но в данном случае, размеры применяемых электронных компонентов слишком малы и запаять их без специального оборудования просто невозможно. Поэтому, было решено продавать компас уже смонтированным.

Что по корпусу ? Оригинальный корпус — это самое дорогое в разработке любого гаджета, так что пришлось ориентироваться на что-то готовое. Но прозрачных корпусов на рынке оказалось не так чтобы много. В итоге, дизайн компаса рассчитывался под прозрачный вариант из семейства корпусов BOX-KA08, продающийся отдельно на Али-Экспресс и в других интернет-магазинах. Данный корпус обладает примитивным дизайном, морально он уже довольно устаревший, но вполне способный выполнять свои функции — защиту электронного модуля от внешних воздействий. Конечно, корпус ещё нужно самостоятельно доработать напильником, просверлив отверстие под кнопку включения — это и есть те необходимые усилия, которые нужно приложить. Если вариант с готовым корпусом не подходит, то переходим к плану «Б»: дизайн компаса отлично подходит под изготовление корпуса по распространённой технологии лазерной резки из оргстекла и фанеры. Такой набор для сборки, конечно, появится в продаже, но желающий может изготовить его самостоятельно при наличии доступа к лазерному станку ЧПУ, благо фирм, оказывающих подобные услуги довольно много. Чертежи для изготовления будут доступны всем желающим в виде готовых файлов. И, наконец, имеется план «В» уже для совсем продвинутых моддеров — взяв за опору STEP-модель компаса, можно задизайнить свой авторский корпус и напечатать его на 3D-принтере у друга, не забыв вырезать на лазерном станке ЧПУ прозрачное окно под светодиоды. Короче, было бы желание. Если его вообще нет, рад сообщить, что электронный компас нормально работает и безо всякого корпуса. Качество пайки компонентов — выше всяческих похвал.

Где производство? Изначально, изготовление печатных плат, монтаж и установка ПО должны были осуществляться в России. Но, уже довольно давно в РФ наблюдается такое явление как санкции, которые, как известно, не работают. Выяснилась забавная вещь: не только людей, сложное оборудование, да и бизнес целиком можно вежливо за ручку проводить под санкционный пресс, но и отдельные виды микросхем, которые невооружённым глазом-то не всякий и увидит. Внезапно, ВСЕ (две) сложные микросхемы применяемые в данном компасе находятся под санкциями и, под страхом юридических последствий не могут быть массово запаяны крупными российскими производителями, несмотря на то, что физически эти микросхемы в России на складах присутствуют. Как говорил мерзким голосом один персонаж из Шрека: «Вот такой вот метафизический парадокс!!!». Таким образом, собирать электронные модули пришлось в Китае, хотя итоговые стоимости с учётом доставки и там и там были бы примерно одинаковы. Для России осталась лишь операция по заливке прошивки и итоговой проверки работоспособности.

Вот и вся история! Что ж, спасибо, что дочитали до конца. Да, и если вам взбредёт в голову побродить по осеннему лесу в поисках грибов, ориентируясь по электронному компасу или просто подарить его любимому человеку (под предлогом, чтобы он никогда не терялся), то приобрести его можно тут или на любых других торговых площадках.

Обновление TimeCalc v1.5

Добавил вкладку Заметки. Всё что будет туда записываться попадёт в лог активного заказчика после сохранения логов.

Добавил Popup-меню в поле списка активных приложений. Там два пункта — сохранить или очистить всё с сохранением.

При сохранении формируются одноимённые папки по каждому заказчику, куда и записываются логи — это удобно. Скачать новую версию.

Обновление TimeCalc v1.4

Много полезных изменений:

  1. Добавил возможность выбора заказчиков в отдельной вкладке. Активный заказчик переключается сверху в комбобоксе.
  2. При закрытии утилиты формируются файлы отчётов по каждому заказчику.
  3. В строке с накопленным временем работы добавил название компьютера — это удобно, если работы проходят на разных машинах.
  4. Исправлены баги в случае нахождения нескольких ключевых слов в одном активном процессе.

Финальную версию качаем на странице TimeCalc.

Домашний хомяк и Интернет

Где-то с полгода назад появился у нас сирийский хомяк. Шуша. Живёт хомяк своей хомячьей жизнью – шуршит себе потихоньку, грызёт чего не попадя. Иной раз и собственное жильё сгрызает, и это при избытке-то нормальной пищи. Короче, моих домочадцев Шуша радует своей непосредственностью. Приятно взять её на руки, погладить по мягкой шёрстке, поиграть. Но есть нюанс. Клетка с хомяком стоит в кабинете, а там – я. Запах от хомяка иногда стоит – мама не горюй, а что поделать – животное. Переместить клетку в другие помещения нельзя – везде сквозняки, а сирийским хомякам сквозняки противопоказаны. Но время идёт, запах не пропадает, и мне как охотнику, иногда волей-неволей вспоминается простое правило, что в пищу годится, в целом, любое животное, которое питается преимущественно растительной пищей. Незыблемое правило номер два: что добыто, должно быть употреблено. Ну, там, бобёр, рябчик, даже грач и дятел, а если совсем прижало, то и грызун пойдёт, чего уж там.

Но помня о детях, такие нехорошие мысли надо решительно отгонять — всё это грубые кровожадные шутки чёрного юмора. И вот спустя какое-то время меня осенило – а ведь домашний хомяк может быть полезен для науки! Говорят, что хомяки в колесе могут пробежать много километров. Точных данных нет. На форумах пишут 6 – 10 км за ночь. Естественно, учитывая свою страсть к телеметрии и обширный опыт подключения всего на свете к Интернету, я решил подключить и хомяка. Сказано – сделано. На озоне заказал датчик магнитного поля (Холла) за 168руб, а запасной WiFi датчик микроклимата собственного производства у меня уже был. В субботу на колесо приклеили магнитик, на клетку установили датчик Холла. Дальше доработал напильником программное обеспечение и пошло-поехало. Как обычно, отправка данных идёт на сайт narodmon.ru. Мой датчик там уже пять лет висит и собирает данные о давлении, влажности, температуре, освещённости, уровне СО2. Теперь вот добавился датчик “Хомяк Шуша”. Правила сайта таковы, что из всей информации от датчиков расположенных в квартире на всеобщее обозрение можно выдавать только атмосферное давление. Никому не интересны климатические показатели внутри вашего помещения – они индивидуальны. Разве что атмосферное давление везде одинаково (плюс-минус этаж). Администрация отказала мне в публикации данных пробега хомяка на всеобщее обозрение даже за деньги(правила есть правила), но приватно я могу делится с любым пользователем narodmon.ru по запросу. Нужно только скачать приложение narodmon и зарегистрироваться. В будущем, я смогу публиковать графики активности хомяка на своём личном сайте – как только запилю на нём соответствующий скрипт.

Итак, каковы же итоги первой ночи ? Сколько же пробежала Шуша ? Наша лаборатория располагает следующими данными. Вот график.

Пробег хомяка за ночь

Как и все графики на Народном Мониторе, он строится так: каждые 5 минут передаётся одно значение. В нашем случае это суммарный пробег за 5 минут. После передачи текущего значения, в памяти датчика оно обнуляется и подсчёт начинается заново. То есть, при помощи пролёта магнитика вблизи датчика магнитного поля подсчитывается количество оборотов колеса. Затем количество умножается на диаметр и на число Pi. В моём случае один оборот колеса равен 0.58метра. На графике видно, что бегать Шуша начала в 21.00 и, с регулярным отдыхом, закончила зарядку в 23.00, пробегая за 5 минут примерно по 100 метров. Проинтегрировав данный график, суммарный пробег составил 1623 метра. Что сказать, результат не впечатлил. Я-то думал она всю ночь бегает, наматывая километры. Чтож, будем наблюдать дальше. Возможно, активность зависит от пола, времени года, температуры, влажности и так далее. В среднем, сирийские хомяки живут 2-3 года.

Ну и напоследок. Я случайно посмотрел накопившееся данные с моего датчика по освещённости комнаты за время с 2017-го по 2020-й год. Освещённость здесь представлена в Люксах.

Освещённость в комнате за 3 года

Обратите внимание на чудовищную разницу в зависимости от времени года. Она составляет от 10 до 100 раз! Сколько солнечного света мы недополучаем зимой относительно лета! А на этом пока всё. Спасибо за внимание!

TimeCalc v1.3

Обновил утилиту TimeCalc до версии 1.3

Напомню, что это программа для фрилансеров по подсчёту времени в любых используемых ими программах. Теперь время работы в вашем приложении будет насчитываться только в том случае, если мышка двигалась в течении последней минуты. В итоге, потраченное время работы уже значительно ближе отражает реальность. Пустое время просиживания штанов перед монитором не считается. Вообще, я посмотрел современные подобные программы и главное отличие моей в том, что от неё сводит олдскулы — она не подключается к Интернету, никаких регистраций, личных кабинетов и СМС. Просто висит в трее и тихо считает — чинно, благородно, по-старому.

Решение «новогодней» задачи Касперского на 2022-й Год

Наступает Новый Год, и по традиции у нас тут известное нумерологическое развлечение. На десятку рассмотрим наиболее простые семейства решений — с одной парой блуждающих скобок. Даже не пытайтесь найти решение при помощи только четырёх арифметических действий — их нет. Одно единственное появится только через двести шестнадцать лет. Вот оно:

10 — 9 + 8 * 7 * 6 * 5 * 4 / 3 — 2 — 1 = 2238

Но у нас пока 2022-й год на носу. И вот почти все ( а вместе с тривиальными, их 19 штук) существующие решения с одной парой скобок из почти двенадцати миллионов знаковых и скобочных перестановок:

10 + (9 * 8 * 7 — 6 + 5 ) * 4 + 3 — 2 — 1 = 2022
(10 + 9 * 8 * 7 * 6 — 5 + 4 ) / 3 * 2 * 1 = 2022
10 + 9 * 8 * 7 * (6 — 5 ) * 4 — 3 — 2 + 1 = 2022
10 — 9 + (8 * 7 * 6 + 5 — 4 ) * 3 * 2 — 1 = 2022
10 * 9 + 8 * 7 * (6 * 5 + 4 + 3 / 2 — 1) = 2022
10 * 9 + 8 * 7 * 6 * (5 / 4 * 3 + 2) * 1 = 2022
10 * 9 — 8 * 7 * 6 * (5 / 4 — 3 * 2 — 1) = 2022
10 * (9 * 8 + 7 + 6 * 5 * 4 + 3 ) + 2 * 1 = 2022
10 * 9 * (8 + 7 — 6 * 5 / 4 ) * 3 — 2 — 1 = 2022
10 * 9 * 8 + 7 * 6 * (5 * 4 * 3 / 2 + 1) = 2022
10 * 9 * (8 — 7 ) * 6 * 5 / 4 * 3 — 2 — 1 = 2022

На 9-ку с одной парой скобок существует всего 6 семейств решений из уже двух с половиной миллионов возможных вариантов:

9 + 8 * 7 * 6 * (5 + 4 — 3 ) — 2 — 1 = 2022
9 * (8 + 7 * 6 * 5 + 4 + 3 ) — 2 — 1 = 2022
(9 * 8 * 7 + 6 — 5 ) * 4 + 3 — 2 + 1 = 2022
(9 * 8 * 7 * 6 + 5 + 4 ) / 3 * 2 * 1 = 2022
9 * (8 * 7 * 6 + 5 — 4 ) / 3 * 2 * 1 = 2022
9 * 8 * 7 * (6 — 5 ) * 4 + 3 + 2 + 1 = 2022

На 8-ку с одной парой скобок существует только один вариант-шедевр из 458752 существующих перестановок:

(8 * 7 * 6 + 5 — 4 ) * 3 * 2 * 1 = 2022
С факториалом их, конечно, уже больше:

8 + 7! * 6 / 5! * 4! / 3 — 2 * 1 = 8 + 5040 * 6 / 120 * 24 / 3 — 2 * 1 = 2022
8 + 7! / 6 / 5 * 4 * 3 — 2 * 1 = 8 + 5040 / 6 / 5 * 4 * 3 — 2 * 1 = 2022
8 * 7! * 6 / 5! + 4 + 3 — 2 + 1 = 8 * 5040 * 6 / 120 + 4 + 3 — 2 + 1 = 2022
8 * 7! * 6 / 5! + 4 + 3! / 2 — 1 = 8 * 5040 * 6 / 120 + 4 + 6 / 2 — 1 = 2022
8 * 7! * 6 / 5! + 4 * 3 / 2 * 1 = 8 * 5040 * 6 / 120 + 4 * 3 / 2 * 1 = 2022
8 * 7! * 6 / 5! + 4! / 3! + 2 * 1 = 8 * 5040 * 6 / 120 + 24 / 6 + 2 * 1 = 2022
8 * 7! * 6 / 5! + 4! / 3 — 2 * 1 = 8 * 5040 * 6 / 120 + 24 / 3 — 2 * 1 = 2022
8 * 7 * 6! / 5 / 4 + 3 + 2 + 1 = 8 * 7 * 720 / 5 / 4 + 3 + 2 + 1 = 2022
8 * 7! * 6 / 5 / 4! + 3 + 2 + 1 = 8 * 5040 * 6 / 5 / 24 + 3 + 2 + 1 = 2022
8 * 7 * 6! / 5 / 4 + 3 * 2 / 1 = 8 * 7 * 720 / 5 / 4 + 3 * 2 / 1 = 2022

На 7-ку без факториалов уже совсем никак, плюс одна пара скобок:

7 + (6 + 5!) * 4! / 3 * 2 — 1 = 7 + (6 + 120) * 24 / 3 * 2 — 1 = 2022
7 + (6! / 5 + 4!) * 3! * 2 — 1 = 7 + (720 / 5 + 24) * 6 * 2 — 1 = 2022
7 + 6! / 5 * (4 + 3 ) * 2 — 1 = 7 + 720 / 5 * (4 + 3 ) * 2 — 1 = 2022
7 + 6! / 5 * (4 * 3 + 2) — 1 = 7 + 720 / 5 * (4 * 3 + 2) — 1 = 2022
7! — (6 + 5!) * 4! + 3 + 2 + 1 = 5040 — (6 + 120) * 24 + 3 + 2 + 1 = 2022
7 * (6 — 5 + 4! * 3! * 2) — 1 = 7 * (6 — 5 + 24 * 6 * 2) — 1 = 2022
(7! * 6 / 5 + 4!) / 3 — 2 * 1 = (5040 * 6 / 5 + 24) / 3 — 2 * 1 = 2022
(7 * 6! / 5! * 4! + 3 ) * 2 * 1 = (7 * 720 / 120 * 24 + 3 ) * 2 * 1 = 2022
(7! * 6 / 5! * 4 + 3 ) * 2 * 1 = (5040 * 6 / 120 * 4 + 3 ) * 2 * 1 = 2022
Если решение со скобками для вас форменный зашквар, то имеются варианты с использованием степенной функции, а именно возведение в куб. Да! В уходящем году программа усовершенствована! Теперь поддерживается возведение в степени! Почему сразу в куб? Очень просто, потому что при возведении в квадрат таких решений не существует. Вот три из восьми существующих решений:

7 * 63 + 53 + 43 * 3 * 2 + 1 = 2022

73 * 6 + 5 — 43 + 3 * 23 — 1 = 2022

73 * 6 — 53 + 43 + 33 — 2 * 1 = 2022

А вот на 6-ку решение есть путём применения функции возведения в квадрат.

6²* 5² / 4 * 3² — 2² + 1 = 2022 , и родственное ему 6² * 5² / 4 * 3² — 2 — 1 = 2022

На 5-ку существует лишь одно красивое решение с использованием возведения в куб и в квадрат сразу без всяких скобок:

53 *4² + 33 — 2 ² — 1 = 2022

А вот на 4-ку решение пока что просматривается только в 2048-м году да ещё и со скобками и выглядеть будет так:

4 3 * (3 3 + 2 ² + 1) = 2048

Вот и всё, с Наступающим!

В следующем году ещё обязательно повозимся с этим! Добавим автоперебор всех степеней, сдвиги, авось так и четвёрку покорим!

Лао-Цзы.

Эта цитата Лао Цзы набрала больше всех лайков ещё при жизни автора.

И неудивительно, вот оцените глубину:

„Будьте последними. Идите по миру так, словно вас и нет. Не будьте компетентны, не пытайтесь доказать свою значимость – это не нужно. Оставайтесь бесполезными и наслаждайтесь. Вы оцениваете людей по их полезности. Я не говорю, что вы не должны делать ничего полезного. Делайте полезные вещи, но помните, что настоящий и величайший опыт жизни и экстаз приходят от делания бесполезного. Он приходит через поэзию, живопись, любовь, медитацию. Величайшая радость наполнит вас, только если вы способны сделать что-то, что нельзя свести к товару. Награда — духовная, внутренняя, она проявляется энергией. Итак, если вы чувствуете бесполезность — не волнуйтесь. Вы можете стать огромным деревом с большой кроной. И люди, которые вступили в полезную активность… им так нужно иногда отдохнуть в тени.

Обратите внимание, Лао Цзы ничего не знал о программистах, особенно о тех из них, кто в 2020-м году программирует (пишет игры, например или ОС) под ZX-Spectrum, ATM-Turbo, ZX-Evolution и т.д. Но как точно он описал их деятельность и мотивацию! Эти ребята приходят в экстаз от деланья бесполезного! А те уставшие, кто приходят с полезной работы, «отдыхают в тени» наслаждаясь игрой на древнем железе, ностальгируя, вспоминая далёкое детство.

Утилита TimeCalc v1.0

Баб-а-а-ах! Брызги шампанского! Свершилось! Вы давно меня просили, и я это наконец-то сделал!. Шучу. Никто меня не просил, некоторые даже, наоборот, убеждали не делать этого. Но ! Я всё же написал малюсенькую, но полезную программу под винду, которая скурпулёзно подсчитывает время нахождения в различных приложениях, именно когда они активны. Скажем вы самозанятый, сидите дома или даже на работе и у вас повременной доход. Отработали час в фотошопе, ворде, PCADe, или ещё где-то — получите, распишитесь — программка всё подсчитает. Или вам просто интересно, сколько часов отжирает у вас вконтактик. Вообще, для этих целей в мире давно уже много чего написано, но мы не ищем лёгких путей. К тому же, я сделал так как лично мне удобно и понятно. Рассмотрим внешний вид приложухи.

Мы видим верхнее окно, нижнее окно и статусный подвал. Никаких кнопок.

В нижнем окне мы можем ввести ключевые слова, относящиеся к нашей деятельности, например, название проекта, файла и даже целиком программы, где мы обычно заседаем. Как только название активного в данный момент приложения будет содержать ключевое слово — оно тут же попадёт в верхнее окошко и начнётся подсчёт времени. В подвале отображается активное приложение на данный момент и суммарное время работы. Это первая версия,так что она увеличивает время не взирая на неактивность клавиатуры и мышки. То есть программа не шибко умна, но это я со временем заборю. Не обманете её потом. Программа сворачивается в Tray, то есть в правый нижний угол и тихонько там себе на уме считает, подсчитывает. По выходу из программы она сохраняет лог в текстовый файл, а так же запоминает ключевые слова, так что не надо каждый раз вписывать их с утреца. С ключевыми словами я поработал хорошо, так что слова, содержащие элементы предыдущих слов, и повторюшки всякие в поиске не участвуют. Если вы её долго не закрываете, то на следующий день в верхнем окне появится новая порция списка активных приложений, потому что так мне удобно. Вот на картине видно, что Пикадах я проработал 3 секунды и 9 секунд, в калькуляторе 18 секунд, ну и в контактике 6 секунд. Это для скриншота просто так вышло. Короче вот. Мечтаю написать подобную для Anrdoid — чтобы было видно сколько часов в день отжирает вотцап — эта информация для некоторых критична. Но пока тренируюсь на кошках, то есть на винде. Написана на C++ Builder 6 . Кому надоть — налетай.

18.06.2020. Вышла версия 1.1

+ Критические внутренние улучшения.

+ Масштабирование окна.

19.06.2020 Вышла версия 1.2

Позволяет считать суммарное время проведённое на всех сайтах содержащих ключевое слово. Например, если написать youtube() ,то строка будет накапливать время потраченное на просмотр всех роликов youtube за день.

Новогодняя задача Касперского и её частичное решение

В годину буйства коронавируса и общего психологического давления, руки, трясясь от ужаса, доходят совсем до неожиданных вещей, которые мечталось реализовать, и, заодно, получить удовольствие. И вот свершилось: добил первую версию программы, которая решает любимую Новогоднюю Задачу Касперского.

Предыстория такова. Каждый год, числа так-эдак 28-го, Декабря-месяца, Евгений Касперский задаёт себе и своим единомышленникам задачу, требующую подбора решения вручную. Публикация нетривиальных решений этой задачи как правило сопряжена с получением ценных призов — например, пожизненной лицензии на его Антивирус. Я лично его программами не пользуюсь, хотя когда-то в крайних случаях использовал бесплатную полезную утилиту TDSSKiller. Соответственно, его подарки нам без надобности, а вот задача вставила не по детски. Кстати, перебирать решения в уме желания тоже нет, я же не математик-миллиардер какой-нибудь.

Итак. Есть числа 10 9 8 7 6 5 4 3 2 1. Нужно поставить между ними любые математические операторы так, чтобы итоговое выражение равнялось Новому Году. В этом году это число было, как вы понимаете, 2020.

Например: 10 + (9 * 8 * 7 — 6 + 5 ) * 4 — 3 + 2 — 1 = 2020

Кстати, в данном случае без скобок никак.

Операторы и функции могут быть ЛЮБЫМИ: 4 арифметических, скобки, факториал(это, кто забыл 5! = 1*2*3*4*5), сдвиги, возведение в степень и бог знает какие ещё функции, неведомые нам, простым людям, не окончившим 4-й факультет Высшей школы КГБ.

Как только решение или семейства решений найдено — отбрасывается левое число.

9 8 7 6 5 4 3 2 1 = 2020. Ищем решение дальше…

Например: 9 + (8 * 7 * 6 — 5 + 4 ) * 3 * 2 + 1 = 2020

Решений может быть много — сколько удастся найти. А меж тем, отбрасываем 9-ку.

8 7 6 5 4 3 2 1 = 2020. Тут без факториала уже никак:

8 * 7! * 6 / 5! + 4 + 3 — 2 — 1 = 8 * 5040 * 6 / 120 + 4 + 3 — 2 — 1 = 2020

8 * 7 * 6! / 5 / 4 + 3 + 2 — 1 = 8 * 7 * 720 / 5 / 4 + 3 + 2 — 1 = 2020

Отбрасываем 8-ку.

7! — (6 + 5!) * 4! + 3 + 2 — 1 = 5040 — (6 + 120) * 24 + 3 + 2 — 1 = 2020

А вот на 6-ку вариантов уже нет. Ближайший вариант с факториалами и двумя парами скобок будет в 2034-м году. А ближайший вариант из прошлого для 2017-го года.

6 * (5! — 4 — 3 ) * (2 + 1) = 6 * (120 — 4 — 3 ) * (2 + 1) = 2034

(6! / 5 + 4!) * 3! * 2 + 1 = (720 / 5 + 24) * 6 * 2 + 1 = 2017

На 5-ку — ближайший вариант ждёт нас в 2040-м году:

5! * (4 + 3! * 2 + 1) = 120 * (4 + 6 * 2 + 1) = 2040

И так далее отбрасываем до нуля. Евгений дошёл-таки до нуля, конечно, пользуясь знаниями полученными в секретной лаборатории! То есть, даже из нуля, можете ли вы себе представить, можно получить 2020 !

Для поиска решений с 6-и для 2020-го года нужно вводить более сложные, быстро возрастающие функции. А пока, можно развлекаться поисками семейств решений, которые так и не были найдены Евгением и его товарищами. К слову сказать, сам Евгений предлагает эту задачу для перебора решений вручную, а не так, с помощью какого-то, понимаешь, программирования. Но мне и так весело было.

Новогодняя задача Касперского и её частичное решение., изображение №1

Для того, чтобы не портить Евгению все последующие новогодние праздники, я публикую демо-версию приложения с возможностью анализа решений для прошлых, а не будущих годов. Программа поддерживает перебор вариантов,учитывая 4 базовых оператора, одну, две и три пары скобок и факториалы. Вложенные скобки не поддерживаются. В дальнейшем, по мере сил, буду добавлять разные возможности в программу. Я не профессиональный программист, так что, если у кого не запустится, пишите. Написана на C++Builder 6.0. Android для запуска не подойдёт. Только Windows.

У Евгения Касперского зачастую проскакивают и другие интересные задачи на комбинаторику. Будем посмотреть.

Вот ссылка на оригинальный пост с задачей:

https://e-kaspersky.livejournal.com/683875.html?thread=10098531#t10098531

Вот статья в Контактике.

https://vk.com/@e_kaspersky-otvety-na-zadachu-2020

Ссылка на моё приложение:

Скачать: Kasper Demo 2020 Release
Размер: 872.5 KB, дата: 07 Окт. 2020

Университет искусственного интеллекта

С интересом просмотрел вебинар «День открытых дверей» университета искусственного интеллекта, который вёл Дмитрий Романов, его основатель.

Вкратце суть такова. Сейчас технический мир захлёстывает очередная волна — технология программирования нейронных сетей, при помощи которой можно получать фантастически занятные результаты, скармливая хитрому алгоритму огромное количество данных. Примеры теперь повсюду: шокирующее приложение FaceApp, распознавание лиц, да и любых объектов в видеопотоке, распознавание речи, стилей музыки, самообучение роботов движению, автоматизированное перелопачивание тонн документов на предмет выявления искомой информации, синтез реалистичного изображения и, самое главное, многое такое, чего мы сейчас даже помыслить не можем. То есть это будет уже не волна, а цунами.

Дмитрий Романов начал заниматься алгоритмами обучения нейронных сетей 15 лет назад, а сейчас грамотно монетизирует полезные знания. Технология передачи знаний желающему такова: заплатив сумму, студент в течении полугода, по разу в неделю, изучает видеоролик, где, с уклоном на практику, преподаётся Python в части программирования нейросети. Для работы используется удобная платформа colab.research.google.com, ориентированная для работы с библиотеками Keras и Tenzorflow. Кроме программных ресурсов Google бесплатно предоставляет каждому желающему аппаратные ресурсы, сравнимые по мощности с видеокартой за 500т.р. , чего достаточно для реализации самых смелых фантазий.

По итогам обучения студент сдаёт экзамены, пишет дипломную работу и получает диплом государственного образца, а не сертификат, как это обычно принято в образовательном бизнесе. Теперь государство будет думать, что он — программист нейронных сетей.

С моей точки зрения, самая идеальная ситуация — это если крупная (или не очень) фирма засылает своего программиста в этот университет, где он сразу же решает конкретную задачу для этой фирмы, в виде диплома. В этом случае, программист на халяву прикасается к прекрасным тайным знаниям, а фирма получает передовое решение проблемы — всем профит, деньги потрачены не зря.

Имею опыт изучения английского языка с 2005 по 2007 год. По итогам двух лет обучения я стал бегло говорить, укоренилось знание времён, способность мгновенного выхватывания из памяти нужного времени при построении фраз, однако радость продлилась недолго, так как на практике за 10 последующих лет я встретил не более десятка иностранцев, и эти навыки были полезны, но крайне редки в использовании, и, как правило, сопряжены с совместным распитием горячительного.

Посмотрите эти два ролика про практическое применение нейронных сетей, от которых «волосы стынут в жилах».

Видеофейк на Арнольда нашего Шварцнеггера. Моё любимое. Тоже нейросети.

А вот и сам вебинар от 2.10.2019 :