БлогNot. Блог ПерСа

памятка беларусь россия политика реклама ссылки дата excel сервис javascript программирование textprocessing виртуальность философия личное эзотерика шахматы маразм форум большевизм война преступление кыштовка c++/cli люди ретро перепост избранное литература интернет php графика форматы блог статистика картинка символ софт google android коммуникатор алгоритм random c++ цвет сон пародия музыка учебное studio все теги все комментарии свежие изменения


[1-15] [16-30] [31-45] ... [2581-2595] [2596]


Генерируем снежинку Коха в SVG-файле

Сам по себе алгоритм построения кривой Коха достаточно проработан, а прилагаемый скрипт отличается тем, что генерирует содержимое SVG, которое можно скопировать из поля ввода и сохранить как файл этого типа. Также снежинка выводится в контейнер resultSVG "как есть", если ваш браузер показывает этот формат, вы её увидите, у меня в актуальных Firefox и MS Edge всё сработало.

Листинг с комментариями легко увидеть из исходника прикреплённого файла .html в кодировке Юникода UTF-8. Страница статьидалее...
10.11.2020, 14:39 [56]


Наилучшее перемешивание символов в строке

Очевидно, целью такого перемешивания может быть расстановка наибольшего количества символов строки не на своих исходных позициях. Это не всегда возможно для всех символов, если в строке есть повторы, также задача не всегда решается единственным образом (для "pop" получится "opp" или "ppo").

В коде, который запускался из консоли Visual Studio 2019, используются стандартный алгоритм shuffle и генератор псевдослучайных чисел Mersenne Twister 19937 generator.

Ниже приводится листинг программы и результаты тестирования. Перемешивание реализовано как шаблон класса. Страница статьидалее...
10.11.2020, 13:15 [55]


Рисуем плазму на канве HTML с помощью Javascript

Небольшой Engine для разливки плазмы.

В коде также показано как при необходимости сбросить имеющийся цикл анимации, чтобы начать новый (переменная requestId, внешняя по отношению к функциям анимации; в идеале, стоило бы сделать ещё одну обёртку над requestId, plasmaEngine и startPlasma). Для начала работы достаточно нажать кнопку "Плазма", также это можно сделать после изменения коэффициента масштабирования.

Коэффициент:

Ниже приводится исходный текст скрипта без обрамления HTML, предполагается, что он будет сохранён в кодировке Юникода UTF-8. Страница статьидалее...
10.11.2020, 12:12 [65]


Ночной Митяев

Сон прошлой ночью - кот, переодетый человеком, пел под гитару на какой-то очень знакомый мотив, а я только потом сообразил - над Митяевым же глумление!.. Почему-то всегда люто ненавидел его "Западную Сибирь", видимо, как эталонную халтуру, ну и сейчас послушал - мало что изменилось :)

Более поганое ощущение от упоминания наших краёв оставляла, разве что, "Маша Распутина", на дурнину вывшая "Я родила-а-ась в Сибири" :)

Но это я отвлёкся, мой-то сон совсем из другой темы.

Текст под катом, весь без мата... Страница статьидалее...
09.11.2020, 17:13 [51]


Studio: читаем файл в кодировке Юникода UTF-8

В этой заметке мы прочитаем текстовый файл из консольного приложения Visual Studio 2019 на C++ посимвольно и целиком.

Везде предполагается, что читаем из текущей папки, при запуске приложения из среды в режиме отладки это будет та же папка, где помещается файл с текстом программы, при отдельном запуске исполняемого exe-файла, соответственно, его папка. Файл с именем input.txt имеет произвольное содержимое, но сохранён в кодировке Юникода UTF-8.

1. Читаем файл посимвольно. Учитывая, что полноценной поддержки Юникода в консоли Visual C++ нет, получится так: Страница статьидалее...
09.11.2020, 13:54 [56]


QT: рисуем цветовой круг HSV

Не просто "радужный круг" скриптом, а более-менее правильный круг в цветовой модели HSV (перед выводом на форму цвет пересчитывается в RGB функцией hsvToRgb).

Вот как это выглядит, если увеличить размер окна, круг перерисуется.

цветовой круг HSV
цветовой круг HSV

Реализовано в виде виджета QT 5.X и проверено в сборке QT 5.14.2. Ниже приводится содержательная часть кода (на момент написания) и архив с проектом. Страница статьидалее...
08.11.2020, 14:56 [60]


Как присвоить иксу десять...

Переменной x нужно присвоить значение 10. Как это делают...

2Pizza (читается "ту-пицца"):

x = 10;

Педант (стиль уже лучше):

x = 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1;

(а ты пересчитал единички?!)

Реальный программер:

for (int i = 0; i > -11; i--) 
{
    x = -i;
}

Гуру: Страница статьидалее...
07.11.2020, 15:15 [62]


Количество вхождений строки в текст

Как обычно, понадобилось, а нигде нет, везде про "количество вхождений символа в строку", особой практической ценности не имеющее.

Код примерно как для слияния строк, нативный Javascript без попытки поиска решения крутыми и медленными функциями массивов. Есть режим сравнения строк с игнорированием всех разделителей.

Ниже показан сервис в работ и его код (без обрамления HTML, предполагается использование кодировки Юникода UTF-8). Страница статьидалее...
07.11.2020, 12:44 [56]


12 циклов жизни нашей :)

Рассуждали позавчера в первом за трое суток сне, что сколько бы человек ни прожил на Земле, в его жизни всегда будет ровно 12 циклов.

Первый цикл начинается с года рождения, 12-й заканчивается понятно каким событием.

Начало цикла - это спусковой крючок обновлений, новая жизнь с новыми надеждами, которая к концу цикла, по великому закону энтропии, превращается в полную задницу.

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

У среднего человека началом цикла могут быть даже такие банальности как переезд, новая работа, женитьба или первая любовь.

Святой, по духу своему остающийся младенцем, сколь угодно долго может пребывать в том цикле, где он достиг просветления, ничего не делая и постигая почти бессмертие.

И хотя чаще всего новый цикл вызван к жизни внешними переменами, действует и обратная зависимость - накопившийся опыт может вызвать качественный сдвиг сознания и следом переход в новый цикл бытия.

В реальности первый год цикла всегда "комплексный", меняются и внешние обстоятельства, и роль в социуме, и самоощущение. Страница статьидалее...
07.11.2020, 12:41 [46]


Листочки

У многих пациентов всемирной виртуальной психушки, в которую ещё до всяких коронавирусов превратилась наша жизнь, наверное, есть привычка всегда держать под рукой у компа листочек бумаги и ручку - записать что-то в процессе работы или при входящем звонке, туда же чиркаются "одноразовые" номера телефонов, собственные мудрые мысли и т.п., "огалоченное" потом вычёркивается и получается неповторимый бред, который без жалости выкидывается при какой-нибудь из уборок. Сегодня, собираясь выбросить очередную кучку исчирканных листочков, накопившуюся у компа, я решил сначала просмотреть их - и набрал контента для целой заметки.

Отчего-то мысли с листочков совсем другие, чем из любого рода заранее предназначенных для фиксирования заметок. Нельзя сказать, чтоб это было более хаотично, чем обычно, но более правополушарно - точно...

Три ступени

Власти раннее начало
Лепит дьявол населенью
На фальшивых идеалах
И пустых предубежденьях

Дуракам заклеив уши,
Ложь ступенькою второю
Им заковывает души
Клятвой ужаса и крови

А небытия личина
Поменяет перед тризной
Дар свободы и любви на
Совершенство механизма

Страница статьидалее...
06.11.2020, 17:37 [48]


Заметки с коммуникатора. 39. Июнь-август 2020-го: "по башке планшетом"

Это, кажется, самый маленький файл серии, я не записал туда ни строчки с начала осени, не было то времени, то настроения, то мыслей. В итоге, файл сейчас попался на глаза и получил название не про COVID, а, как я часто делаю, по первому в нём высказыванию.

Все слова мои народные, так что больше, чем на 58-10 развести не пытайтесь.

Знания должны быть весомы, зримо тяжелы. Хорошим томом хоть по башке можно треснуть, а электронным планшетом что?

Страница статьидалее...
06.11.2020, 16:33 [59]


Excel: сортируем "смешанные" строки из цифр и букв

На самом деле, такие данные встречаются нередко, но по умолчанию Excel сортирует их "неправильно", если строка начинается с цифры или может состоять только из цифр - например, при обычной сортировке получится порядок "110 - 211 - 110а", хотя надо бы "110 - 110а - 211".

"Неправильная" сортировка чисел и строк в одном столбце Excel
"Неправильная" сортировка чисел и строк в одном столбце Excel

Наверное, наименее затратное решение всё же такое: все данные столбца хранить как строки, принудительно добавляя к ним в начале апостроф ' (без пробела после него).

В "тяжёлых случаях" переделать всё содержимое столбца в строки можно формулой вида

=ТЕКСТ(A2;"Основной") 

- для нашего примера мы могли бы ввести формулу в ячейку C2, растянуть её вниз, насколько нужно, нажать клавиши Ctrl+C для копирования, затем кликнуть по ячейке A2 и вставить назад только значения (вкладка Главная - кнопка Вставить - "Вставить значения"). После этого столбец "C" можно удалить.

После любого из решений при пересортировке всё равно придётся подтверждать, что мы сортируем "числа и числовые данные в текстовом формате раздельно", как видно на втором скрине. Альтернатива - писать макросы на VBA. Страница статьидалее...
04.11.2020, 18:15 [45]


Одна и та же программка в MVC и MVP

Кроме модели MVC, еcть ещё и подход MVP, впрочем, во многом производный от исходного. Доступных несложных листингов, иллюстрирующих сходство и различие MVC и MVP, я как-то не видел. Попробуем выложить такой код для простой игры с числами.

Ну и плюс люблю я всякие игры с числами, здесь уже есть 15, 24, 2048 и т.д., пусть ещё и "21" будет, только не в смысле "21 очко" :) Сама игра довольно примитивна, её правила можно описать так:

Игра для двух игроков, ход делается выбором числа 1, 2 или 3, которое добавляется к текущей сумме выбранных игроками чисел. В начале сумма равна нулю.

Игра выиграна тем, чьё выбранное число приводит к достижению нужной общей суммы, в нашем случае, значения 21.

Ниже показаны 2 листинга игры в MVC- и MVP-подходах. Они проверялись в консоли текущей версии Visual Studio 2019. Страница статьидалее...
03.11.2020, 15:21 [56]


Пишем и решаем игру в 15

"Пятнашки", ошибочно приписываемые Сэмюелу Лойду - игра не менее классическая, чем "Вампус", и программки для неё, конечно, писал почти каждый действующий программист на Земле :)

Ниже показана игра в 15 для консоли C++ (проверялась в актуальной версии Visual Studio 2019), позволяющая как сыграть "вручную", так и поискать решение автоматически.

Так как изначально генерируется правильная расстановка, а затем квадратики перемешиваются, решение должно существовать всегда. Константа MIX_NUMBER сознательно выставлена в небольшое значение, чтобы решения находились быстро. Если хотите "нерешалки", поставьте там, например, 1000. Класс игры позволяет вводить номера передвигаемых квадратиков в качестве ходов и проверяет корректность ввода данных.

Класс решалки куда более "эзотеричен", вообще говоря, он требует, чтобы была 64-битная платформа (sizeof(unsigned long long) == 8), а процесс решения может оказаться длинным при большом значении MIX_NUMBER. Для краткости решалка выдаёт порядок ходов в виде цепочки символов "l" (переместить квадратик слева от пустой клетки), "u" (сверху), "r" (справа) и "d" (снизу). Страница статьидалее...
22.10.2020, 15:44 [106]


Факториал от большого числа

Верно ли, что факториал от значения 2020 равен числу из этого файла (число нужно мысленно вытянуть в строчку) или нашему алгоритму просто не хватает возможностей даже на такое значение? Думается, что реализованное "школьное" умножение всё-таки других ограничений, кроме размера буфера, не имеет.

Для факториала от 100, по крайней мере, всё похоже:

Factorial from 100=
93326215443944152681699238856266700490715968264381621468592963895217599993229915
608941463976156518286253697920827223758251185210916864000000000000000000000000
Stirling's formula: 9.32485e+157

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

Ниже приводится листинг консольной программы на C++, проверенной в Visual Studio 2019. Страница статьидалее...
22.10.2020, 12:29 [71]


[1-15] [16-30] [31-45] ... [2581-2595] [2596]