Теперь мы поговорим о второй и основной по своей сути вкладке «Друзья«. Скриншот я уже выкладывал в предыдущих статьях. Выложу еще раз. Вот так она выглядит:
Автор: Роман Дмитриевич
Теперь мы поговорим о второй и основной по своей сути вкладке «Друзья«. Скриншот я уже выкладывал в предыдущих статьях. Выложу еще раз. Вот так она выглядит:
Автор: Роман Дмитриевич
[singlepic id=851 w=640 h=480 float=right] Компания Royal Wood предлагает услуги по шлифовке, грунтовке и покраске деревянных фасадов снаружи и внутри деревянных домов и бань профессиональными продуктами Tikkurila по очень выгодной цене!
Стоимость — от 25$/1м2.
За эту цену вы получаете:
— Помощь при подборе цветового решения для фасадов деревянного дома или бани от профессионального архитектора;
Мы понимаем как сложно, зачастую, бывает подобрать подходящий тон или цвет краски для деревянного дома или бани. Мы поможем подобрать для вас наилучшие цвета для окраски вашего коттеджа или сауны, сделаем пробные выкраски, если это будет необходимо.
— Шлифовку деревянной поверхности стен.
Профессиональная шлифовка профилированного бруса или оцилиндрованного бревна в деревянном доме поможет придать идеально гладкую структуру поверхности, подчеркнет природный рисунок древесины, подготовит деревянную поверхность к грунтовке и окраске.
— Защита деревянной поверхности стен с помощью нанесения грунтующего состава Pinja Oil — Tikkurila в 1 слой;
Используем Pinja Oil – пропиточный состав из профессиональной линейки Tikkurila для дерева на основе натурального масла. Защищает древесину, антисептирует и подготавливает ее для дальнейшего тонирования или окрашивания.
— Покраска деревянных фасадов с помощью нанесения на стены лессирующего антисептика Tikkurila в 2 слоя. Цвет на выбор.
Мы используем продукт Pinjasol Color – лессирующий анти-септик для наружных деревянных поверхностей. Колеруется по карте Valtti Color.
ИНТЕРЕСНО:
Фото домов, покрашенных красками и антисептиками Тиккурила ( Tikkurila)
Продукция Тиккурила с ценами, в наличии в Минске!
Другие новости:
Стильный каркасный дом площадью 130м2 для молодой семьи.
Каркасное домостроение в лучших традициях!
[gview file=»http://royalwood.by/wp-content/uploads/2013/06/Tikkurila_valtti.pdf» profile=»4″ save=»1″]

Автор: Роман Дмитриевич
Лучше всего иметь под рукой несколько антивирусных программ, дисков или флэшек.
Обычно у меня стоит антивирус Карсперского, триальная версия.
Существует небольшая проблема в использовании такой версии:) — сброс триала.
Как делается.
Актуально для Kaspersky Crystal
Осуществляется вводом в консоль следующий команд:
Для старой версии Kaspersky Internet Security 9.0.0.736 (2010) есть готовый батник
Иногда приходится чистить старые медленные компьютеры, захламлённые вирусами и системными файлами.
Для этого есть пара приспособлений.
Простой загрузочный диск можно сделать при поддержке Microsoft.
Windows Defender Offline — поможет удалить неудаляемые вирусы, из автозагрузки например.
Для единовременного акта зачистки можно использовать Microsoft Safety Scanner — программа скачивается на 10 дней и не конфликтует с большими антивирусами.
Автор: Sergey Bolshakov
Алгоритм поиска строки Бойера — Мура считается наиболее быстрым среди алгоритмов общего назначения, предназначенных для поиска подстроки в строке. Был разработан Робертом Бойером и Джеем Муром в 1977 году. Преимущество этого алгоритма в том, что ценой некоторого количества предварительных вычислений над шаблоном (но не над строкой, в которой ведётся поиск) шаблон сравнивается с исходным текстом не во всех позициях — часть проверок пропускаются как заведомо не дающие результата.
Мы с Вами уже рассмотрели 2 подхода поиска подстроки: в лоб и Кнута — Морриса — Пратта.
И хотя последний можно отнести к правильным, сегодня мы разберем подход, являющийся классикой в решении данной задачи.
Простота, является характеристикой правильного решения и тривиальность данного подхода это подтверждает.
Основная идея алгоритм — начать поиск не с начала, а с конца подстроки. Наткнувшись на несовпадение, мы просто смещаем подстроку до самого правого вхождения данного символа.
Пример можете посмотреть в картинке заголовка 🙂
Можно заметить, что, как и в случае Кнута-Морриса-Пратта, мы так же можем осуществить предкомпиляцию выражения.
Для этого удобно в словарь заносить пары ключ = числовое значение символа(ord), значение = порядковый номер в подстроке.
А вот и реализация:
def bmPredCompil(x):
d = {}
lenX = len(x)
for i in xrange(len(x)):
# сколько символов с правого края до этой буквы
d[ord(x[i])] = lenX - i
return d
Осталось осуществить сам поиск со сдвигом:
def boyerMurSearch(s, x):
d = bmPredCompil(x)
# k - проход по s
# j - проход по x
# i - место начала прохода по s
lenX = i = j = k = len(x)
while j > 0 and i<=len(s):
# совпали, двигаемся дальше (от конца к началу)
if s[k-1] == x[j-1]:
k -= 1
j -= 1
# иначе, продвигаемся по строке на d и начинаем с правого конца подстроки снова
else:
i += d[ord(s[i])]
j = lenX
k = i
if j <= 0:# нашли
return k
return None # не нашли
Вот собственно и все! 🙂
Реализация, как и сама идея, достаточно прозрачна.
Автор: Pavel Petropavlov
Когда то давно, мы уже рассматривали пример решения задачи рекурсивным образом, на примере задачи по размену денег. Пришло время вспомнить некоторые классические подходы и начать хотелось бы с задачи о путешествии шахматного коня.
Решение приведенное ниже относится к так называемым алгоритмам с возвратом.
Разделяй и властвуй -основная идея рекурсии. Т.е. мы сложную задачу делим на маленькие простые решаем их по отдельности в цепочке. В случае данной задачи, можно рассмотреть подзадачу, которая состоит в том, чтобы либо выполнить какой-либо очередной ход, либо обнаружить, что дальнейшие ходы невозможны.
Итак, каждый ход мы будем характеризовать 3-мя числами: его порядковым номером i и парой координат x, y. История ходов будет храниться в матрице списков, в соответствующей ячейке записываем порядковый номер хода. Соответственно, если в ячейке 0, значит туда мы еще не ходили.
Важно определиться с вычислением новой координаты. Можно заметить, что у коня есть 8 позиций-кандидатов (u, v) куда может прыгнуть конь.
Будем получать новые координаты прибавляя соответствующие смещения, хранящиеся в 2х списках dx, dy и отслеживать допустимость хода (находимся в пределах доски).
Характерной чертой данного алгоритма является то, что каждый шаг, выполняемый в попытке приблизиться к полному решению, запоминается таким образом, чтобы от него можно было позднее отказаться, если выяснится, что он не может привести к полному решению. Такое действие называется возвратом. А класс алгоритмов, как не трудно догадаться, алгоритмы с возвратом.
Очень советую читать именно алгоритм, тем более Питон в этом сильно помогает. Это даст куда больше толку. чем множество лишних слов!)
#Задача о коняшке
def knightsTour(x0, y0, done, size=5):
#создаем шахматную доску в виде 2го списка
h = [[0 for j in xrange(size)] for i in xrange(size)]
#начальная координата(1го хода)
h[x0][y0] = 1
#Возможные ходы
dx = [2, 1, -1, -2, -2, -1, 1, 2]
dy = [1, 2, 2, 1, -1, -2, -2, -1]
def CanBeDone(u, v, i):
h[u][v] = i
done = tryNextMove(u, v, i)
if not done:
h[u][v] = 0
return done
def tryNextMove(x,y, i):
#eos - показывает все ли варианты возможных 8ми ходов мы рассмотрели
#done - показывает удачна ли данная ветка решения
#k - порядковый номер рассмотренной попытки из 8 допустимых
env = {'done': False, 'eos': False, 'u': x, 'v': y, 'k': -1}
def next():
x = env['u']
y = env['v']
while env['k'] < 8:
env['k'] +=1;
if env['k'] < 8:
env['u'] = x + dx[env['k']]
env['v'] = y + dy[env['k']]
if (env['u'] >= 0 and env['u']=0 and env['v'] break
env['eos'] = (env['k']==8)
if i < size**2:#если доска не заполнена
next()
while not env['eos'] and not CanBeDone(env['u'], env['v'], i+1):
next()
done = not env['eos']
else:
done = True
return done
tryNextMove(x0, y0, 1)
print h
Привожу пример заполнения шахматной доски.
Автор: Pavel Petropavlov