Судоку

Задача:

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

Доска судоку будет не полностью заполнена, где пустые клетки будут позначены как '.'.

Например, на картинке показан частично заполненный судоку, который является правельным:

Сортировка вставкой/Insertion sort

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

Сортировка выбором/Selection sort

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

Преимущества:

  1. Простой в применении
  2. Сортировка на месте(не использует дополнительного места)

Пузырьковая сортировка/Bubble sort

Пузырьковая сортировка является одним из самых простых алгоритмов сортирования. Хотя многие говорят, что этот алгоритм не стоит даже рассматривать, я бы все равно предпочел написать о нем в паре строк. Алгоритм действительно является плохим в плане производительности и его не стоит использовать в приложениях так, как его сложность в хутшем, да и в лучшем случае, будет О(n^2). Пузырьковая сортировка называется так лиш потому, что больший елемент перемещается в конец массива как пузырек)).

Создание виджетов в Yii2

Мне нравится Yii Framework тем, что это полностью обьектно-ориентированный инструмент для разработки веб-сайтов.

Недавно я искал виджет для работы с Google Place API, который бы мог предугадывать введенные клиентом даные. Картинка виджета показана вначале статьи.

Для создания виджетов в Yii2 не нужно знать многого и если вы любитель JavaScript и прочих фишек для розработки UI, тогда это статья для вас. Для создания виджета нужно зделать следующие шаги.

Алгоритм быстрой сортировки (Quick sort algorithm)

Алгоритм быстрой сортировки - это алгоритм из серии "разделяй и властвуй", поэтому разобьем алгоритм на три части: разделение, властвование и комбинирование.

Для наглядности позначим сортируемый массив  А[p...r].

Разделение.

В этой части массив А[p...r] разбивается на две части, а именно на А[p...q-1] и А[q+1...r], где элементы А[p...q-1]  меньше или равно значению A[q], а элементы подмассива А[q+1...r] больше или равны значению A[q]. Где элемент q - вычисляется при исполнении процедуры разбиения.

Очередь или Queue

Еще одним абстрактным простым типом данных есть Очередь/Queue.

Очередь реализует принцып первый вошел первый вышел (FIFO - first in first out). Каждый из вас уже видел очередь в своей жизни, когда стоял за билетами в кино или теарт. Очередь имеет голову(head) и хвост(tail), которые соответственно есть люди в начале очереди и в конце. Самый первый человек в очереди уйдет первым, последний - соответственно последним)).

Стек/Stack

Одной из самых простых абстрактных структур даных есть Стек. Стек работает по принцыпу "последний зашел первый ушел" (LIFO - last in first out). Стек поддерживает две основные операции: pop i push. Конечно можно расширять функционал структуры. Если использовать простые типы даных, то стек, конечно, реализуется с помощью массивов.

Как программно создать блок в Drupal7

Так как же программно создать блок. Для создания собственного блока в Drupal 7.x нужно зделать 4 вещи:

1) Создать папку с именем модуля.

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

2) Создать файл с расширением .info.

Создадим файл custom_login.info. Нужно назвать файл так как называется модуль. Далее поместим следующий текст в даный файл.

Шаблон Factory Method

Проблема:

Давайте представим, что перед нами стоит задача представления даных в виде html страницы, xml файла и, к примеру, как csv файл и нам нужно написать класс, который будет вызывать нужный нам класс для отображения даных. Назвем наши классы HtmlDataView, XmlDataView, CsvDataView соответственно. Часто программисты для этой задачи используют либо условные операторы, либо switch-оператор. Назвем главный класс для обработки даных DataViewManager. Следующий код показывает, как можно решить эту задачу неправельным путем.