Прикре.Пил

Блог непосредственно в ЖЖ не веду, профиль, в основном, для комментирования.
Моя домашняя страничка вот: nickolay.info
Мой блог тут: blog.kislenko.net. С 17.10.12 его анонсы транслируются сюда. Некоторые записи, связанные с подключением стилей и скриптов, могут отображаться в анонсе некорректно из-за фильтрации контента движком "ЖЖ", в этом случае их нужно смотреть в работе на оригинальной странице блога.
На комментарии отвечу скорее в своём блоге, чем здесь.

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

15:44 22.10.2020

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

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

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

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

читать далее в блоге ПерСа


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

12:29 22.10.2020

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

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

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

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

Ниже приводится листинг консольной программы на C++, проверенной в Visual Studio 2019.

читать далее в блоге ПерСа


Visual C++: изменяем интенсивности RGB для загруженной в приложение картинки

14:11 21.10.2020

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

 for (int x = 0; x < bitmap1->Width; x++)	{
  for (int y = 0; y < bitmap1->Height; y++)		{
   Color pixelColor = bitmap1->GetPixel(x, y);
   int R = pixelColor.R + pixelColor.R * trackBar1->Value / 100.;
   int G = pixelColor.G + pixelColor.G * trackBar2->Value / 100.;
   int B = pixelColor.B + pixelColor.B * trackBar3->Value / 100.;
   R = System::Math::Max(R, 0); R = System::Math::Min(R, 255);
   G = System::Math::Max(G, 0); G = System::Math::Min(G, 255);
   B = System::Math::Max(B, 0); B = System::Math::Min(B, 255);
   Color newColor = Color::FromArgb(R,G,B);
   bitmap1->SetPixel(x, y, newColor);
  }
 }
 pictureBox1->Image = bitmap1;

Можно сбросить рисунок к исходному состоянию и сохранить изменённый рисунок в формате PNG, JPEG или BMP.

Интерфейс построен как обычно в таких случаях на PictureBox, помещённом на Panel. Следует помнить, что стандартный SetPixel в .NET - не самое быстрое решение из возможных.

Вот скриншот приложения в работе, а под катом прикреплён исходник, написанный на C++/CLI в Visual Studio 2019.

читать далее в блоге ПерСа


Матчу - быть!

21:08 20.10.2020

Инсайд от действующего чемпиона мира по шахматам Пьера Собаккина:

В декабре я буду играть новый матч на первенство мира. С программой Stockfish 11. В ближайшем выпуске "Альманаха" (это будет №5) я объявлю все детали - положение о матче, дату начала, расписание, состав оргкомитета, состав штаба чемпиона и пр.

(...)

Я и сам сперва хотел выбрать Stockfish 12... но отбор проходил 11, и я думаю, что принципиальнее в таком случае с ним и играть.

Уверен, что это будет истинное торжество православия шахматного мастерства и спортивного принципа.

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

читать далее в блоге ПерСа


Ударения в UTF-8

15:47 18.10.2020

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

Что со стандартным символом ударения? А ничего, его по-прежнему и Блокнот, и Notepad++ отображают криво:

ударение всё ещё отображается после символа а не над ним
ударение всё ещё отображается после символа а не над ним

Точней, ударение отображается криво, как минимум, в моноширинных шрифтах, таких как Courier New, а именно они всегда установлены по умолчанию в редакторах кода или неформатированного текста.

читать далее в блоге ПерСа


Сплошные открытия

10:19 18.10.2020

100 дней протестов в Хабаровске. Чудо-город всё-таки.

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

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

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

Чеченцы режут головы не только в РФ, но там террористов просто пристреливают. Между тем, Бобокулова, вероятнее всего, уже на свободе, а сожжённую ей квартиру, где она отрезала голову ребёнку, купили её же родственники "на добрую память" о совершённом их родственницей акте шахады. Хозяевам квартиры Мещеряковым собранных пожертвований едва хватило на покупку скромной однушки в том же самом районе.

Рекордная в РФ смертность от COVID за сутки, судя по демонстративному отсутствию каких бы то ни было мер, власти открыли для себя COVID как фактор "стабилизации" и заодно "оптимизации" пенсионного и других фондов.

читать далее в блоге ПерСа


Простейший макет сайта в 2 колонки

14:56 17.10.2020

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

Ниже показана разметка файлов index.html и styles.css, предположительно имеющих кодировку Юникода UTF-8 и сохранённых в одной папке.

Валидаторы HTML и CSS считают код корректным.

читать далее в блоге ПерСа


Ставангер-2020: первый живой турнир чумного времени

14:01 11.10.2020

Первый (пост)ковидный "очный" топ-турнир в Ставангере собрал на этот раз всего 6 гроссмейстеров. Играют без масок и перчаток, как в старые добрые времена. Необычен регламент - если основная партия (120 минут с добавлением 10 секунд на ход начиная с 41-го) завершается вничью, то следом проводится Армагеддон с тем же цветом фигур (10 минут против 7 с добавлением секунды на ход, начиная с 41-го). За победу в основной партии при этом начисляется 3 очка, в Армагеддоне – 1.5, за поражение в Армагеддоне – 1 очко, за поражение в основной партии – ноль. Соглашение на ничью до 30-го хода запрещено.

Время начала трансляций - 18 ч. Мск (22 Нск), неудобно, учитывая ранние подъёмы, поэтому почти не смотрю.

В целом же - "классика", может, и умирает, но ещё помучается. Организаторы даже не слишком испортили качество игры необычным Армагеддоном. При моём невысоком шахматном уровне, я затрудняюсь точно сформулировать отличие от коротких форматов, но игра воспринимается по-другому - как более логичная и качественная, что ли. Плюс никаких искусственных проблем с дисконнектами, mouse slip и т.п.

Отмечу в этой заметке запомнившиеся моменты турнира, если таковые будут.

читать далее в блоге ПерСа