?

Log in

No account? Create an account

Верхняя запись Прикре.Пил

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

17:12 18.02.2019

То есть, заставить консольное приложение QT печатать в консоль объекты вашего класса (в моём примере - myclass) и, наоборот, ожидать ввода значений полей класса из stdin, используя при этом стандартные "конвейерные" операторы << и >>

Самым адекватным (навскидку) мне показался показанный ниже способ с применением QTextStream. Проверено в QT 5.10.1 с применением шаблона "Консольное приложение Qt".

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


17:08 18.02.2019

Создав проект с применением шаблона "Консольное приложение Qt" нужно, тем не менее, подключить к файлу проекта widgets, потом заинклудить и QCoreApplication, и QApplication, по крайней мере, при других условиях строка у меня не выводилась.

Вот оба файла проекта, который решил проблемку. Проверено в QT 5.10.1 с применением шаблона "Консольное приложение Qt"

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


11:30 17.02.2019

Таких задачек нет, кажется, и у Гика в бессмертной "Математике на шахматной доске", и, увы, уже не будет, в связи с тем, что Евгения Яковлевича тоже с нами нет с 2016-го.

В заметке приведены (в основном) не программки, а только формулы, из которых, впрочем, легко сделать программки.

Возможно, где-то в решениях есть ошибки, всё без гарантий.

1. На сколько различных полей может перейти шахматный слон за один ход?

Если исходную позицию слона обозначить (r,c) и нумеровать клетки шахматной доски слева направо (c) и сверху вниз (r) с единицы, имеем:

Слева вверху: min (r, c) – 1

Справа вверху: min (r, 9 – c) – 1

Слева внизу: 8 – max (r, 9 – c)

Справа внизу: 8 – max (r, c)

(для доски 8 x 8). Сложите эти 4 значения, чтобы получить ответ.

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


12:38 15.02.2019

Здесь нас интересовала не подматрица с минимальной суммой элементов и не подматрицы из совпадающих элементов, а сумма всех подматриц в заданной матрице.

"Нативное" решение перебором даст временную сложность алгоритма порядка O(n6), что весьма избыточно.

Если же для каждого элемента матрицы Ai,j найти количество подматриц, в которые он входит, вычислительные затраты можно намного сократить.

Предположим, что индекс элемента равен (i,j), тогда, при нумерации с нуля, имеем для этого элемента количество подматриц S(i,j) = (i + 1) * (j + 1) + (N - i) * (N - j), где N - размерность матрицы (подумайте, что изменится, если матрица - не квадратная).

Нам остаётся просто выбирать в матрице две разные позиции, которые создают подматрицу, охватывающую данный элемент и считать сумму для этого элемента по формуле Sum += S(i,j) * A[i][j]. Таким образом, мы обходимся временной сложностью алгоритма порядка O(n2).

Ниже показан соответствующий код, который был проверен в консоли Visual Studio 2015.

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


Деревья на Javascript

17:38 14.02.2019

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

вид приложения "Деревья" в работе (скриншот)
вид приложения "Деревья" в работе (скриншот)

Открыв приложение, можно выбрать настройки из списков и перерисовать картинку или нажать "Сохранить", чтобы вывести в новую вкладку понравившуюся картинку (а оттуда сохраните её средствами браузера, например, нажав комбинацию клавиш Ctrl+S). Ниже - ссылка и исходники.

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


13:19 14.02.2019

Задача состояла в том, чтобы удалить из бинарного дерева натуральных числовых значений все значения, кратные заданному k. Вот само дерево из кода:

           1
         /   \
        2     3
       / \   /
      4   5 8
     / \   / \
    6   7 9  10

В коде используются структура для описания бинарного дерева, стандартная очередь queue при печати узлов дерева "по уровням" и конвертирование бинарного дерева в двусвязный список и обратно для "чистки" вершин.

Не факт, что будет предсказуемо работать при любом k, корректное удаление вершин из дерева - вообще задача непростая, но могут пригодиться, по меньшей мере, заполнение и вывод дерева из программки. Запускалось в консоли Studio 2015.

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


12:03 14.02.2019

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

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

Для теста использовался вот этот же граф, из которого удалено рёбро между 2 и 3 вершинами, а все остальные рёбра направлены слева направо или сверху вниз (как они проходят, видно из листинга).

Код выполнялся в консоли Visual Studio 2015.

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


20:23 12.02.2019

Примерно, как тут, но ещё и в формате лекция с заданиями + лабы.

Ориентировочное время - одна лекция + 2 пары выполнения, лабы, на самом деле, короткие. Со времён лицензированной версии 2007, впрочем, в более новых версиях больших отличий не будет.

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

Все файлы выложены на Яндекс.Диске в формате .pdf, если что-то обновилось, то у него изменится ссылка, поэтому лучше сохранять ссылки на эту страницу, а не на конкретные файлы.

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


19:38 12.02.2019

Ничто так успешно не узаконивает полицейский беспредел, как судебный произвол
(С) я, из свежих афоризмов

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

Во-первых, я сейчас довольно занят попытками выжить, во-вторых, это всё бессмысленно.

Методикой комментирования подобных опусов вы без труда можете овладеть сами.

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

Переведём на нормальный язык несколько ставших общеизвестными за последние сутки коренных высказываний, ниже - коренная фраза и перевод:

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


15:10 06.02.2019

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

По крайней мере одну такую библиотеку мне удалось обнаружить быстро, это particles.js.

Скачав или удалённо подключив её, мы можем просто прописать свойства объектов particles и interactivity согласно документации и получить работающее приложение!

В приведённом далее коде предполагается, что файл particles.js также находится в папке скрипта, я на всякий случай скачал его с этого адреса.

Библиотека умеет реагировать на клик мышью, наведение мыши и изменение размеров окна, все эти события использованы.

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

Вот мой исходник и картинка со снежинкой, в онлайн-демке просто изменены пути к картинке и библиотеке. Предполагается, что исходник будет сохранён как файл типа .html в кодировке Юникода UTF-8.

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


11:54 06.02.2019

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

В сущности, все эти приложения построены по одному и тому же шаблону.

А можно ли привести сам шаблон? :) Эта заметка как раз служит данной цели, потому что все действия прилагаемого листинга подробно закомментированы.

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

В исходнике даже есть подсказка, что нужно изменить, чтобы получить просто вот такой скучный эффект:

просто движущиеся частицы, скриншот одного кадра анимации
просто движущиеся частицы, скриншот одного кадра анимации

У нас же будет целая "колыхающаяся пелена":

а вот наше приложение, скриншот одного кадра анимации
а вот наше приложение, скриншот одного кадра анимации

А вы сумеете найти нужные строчки и объяснить, почему совсем небольшая коррекция кода так сильно изменяет наблюдаемую картину? :)

Ниже прилагается ссылка на приложение в работе и его листинг на момент написания (который можно сохранить как файл типа .html в кодировке Юникода UTF-8).

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


17:46 05.02.2019

То есть, если у вас, к примеру, почта login@password.ru, почтовым сервисом для которой служит gmail, создать семейную группу и аккаунт ребёнка, по-видимому, невозможно.

У меня стабильно зависало на шаге "Проверка данных".

Если указать родительской учётной записью login@gmail.com, всё проходит нормально, на устройство впаривается приложение Family Link, после чего всё работает и можно, например, установить Whatsapp, а самому иметь доступ к нему с web.whatsapp.com

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


14:51 05.02.2019

Понадобилось в работе, оставлю памятку.

"Веер" задан количеством лучей N и углом раствора лучей theta, начальная точка испускания лучей - крайняя правая точка окружности с координатами (width, cy), в которую переносится начало координат, но можно проделать аналогичные расчёты и для другой точки.

Вот какая картинка получается:

веер из хорд на canvas, скриншот
веер из хорд на canvas, скриншот

Расчёты сводятся к тому, чтобы по начальному углу отрисовки луча alpha0 (задан в градусах) получить центральный угол хорды alpha и затем по известной формуле вычислить её длину l. После этого для отрисовки очередного луча достаточно перевести полярные координаты (alpha0,l) в декартовы и соединить две точки линией.

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

Вот исходник примера, который может быть выполнен в браузере как файл типа .html:

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


11:41 03.02.2019

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

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

Выполнить это можно, например, на локальном хосте в Denwer как файл типа .php

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


Календарь

Февраль 2019
Вс Пн Вт Ср Чт Пт Сб
     12
3456789
10111213141516
17181920212223
2425262728  

Подписки

RSS Atom
Разработано LiveJournal.com
Дизайн yoksel