ОГОНЬ

Итоговый результат

Шаг 1

Вначале откройте исходное изображение с моделью.

Далее, нам понадобится огонь. Подберите несколько изображений с текстурой огня на чёрном фоне – лучше несколько вариантов. Поменяйте режим наложения для всех текстур огня на Осветление (Screen), чтобы удалить чёрный задний фон.

Как и где вы будете размещать огонь на своём изображении – это будет на 100% зависеть от вас. Я предлагаю начать создание эффектов на краях изображения модели или объекта.  Я подобрал текстуру огня с небольшими языками пламени. С помощью трансформации, я выставил угол текстуры под внутреннюю часть руки.

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

Примечание переводчика: с помощью чёрной кисти, скройте лишние участки текстуры огня.

Я повторил предыдущий шаг, добавив несколько раз ту же самую текстуру огня, единственное, некоторые текстуры яотразил по горизонтали (flip it horizontally) для разнообразия, а также я использовал отдельные фрагменты огня.

Далее, мы проведём “заполнение” огнём. Подберите текстуры огня с крупными языками пламени, чтобы заполнить большие участки изображения. Также, поменяйте режим наложения для слоёв с текстурами огня на Осветление(screen). Я использовал одну текстуру огня дважды. Попробуйте использовать несколько небольших текстур огня вместо одной большой текстуры.

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

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

Повторите действие с добавлением огня, пока вас не устроит создаваемый эффект огня. Также, я добавил маленькие фрагменты огня на глаза модели. Мой результат на скриншоте ниже:

Как только вы завершили, сгруппируйте все слои с огнём в одну группу. Назовите новую группу “Огонь”.

Шаг 2

Обычно, большинство уроков завершается на данном этапе – но в действительности, мы находимся только в середине нашего пути! Теперь, давайте придадим нашему огню более цельный вид, таким образом, он будет выглядеть более реалистичным. В данный момент, огонь выглядит слишком прозрачным.

1. Создайте новый слой ниже слоя с группой “Огонь”. Назовите этот слой “Задний фон для огня”.
2. С помощью небольшой круглой кисти, цвет кисти тёмно-красно-оранжевый цвет средних тонов (#8b2c0d), прокрасьте за изображением огня.

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

1. Создайте новый слой поверх слоя “Задний фон для огня”. Поменяйте режим наложения для данного слоя на Мягкий свет (Soft Light).
2. С помощью большой мягкой кисти, цвет кисти оранжевый, прокрасьте любые участки вашего объекта, где есть огонь.

Теперь:

1. Создайте ещё один новый слой поверх предыдущего слоя. Поменяйте режим наложения для данного слоя на Мягкий свет (Soft Light).
2. С помощью большой мягкой кисти, цвет кисти оранжево-красный (#dd4e05), прокрасьте участки, где есть огонь, включая поверхность вашего объекта.

Примечание переводчика: старайтесь щёлкать кистью, а не водить.

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

Далее, ещё раз создайте новый слой поверх предыдущего слоя. Поменяйте режим наложения для данного слоя наМягкий свет (Soft Light). Уменьшите непрозрачность данного слоя до, примерно, 70%. Прокрасьте кистью, но на этот раз, цвет кисти светло-оранжево-красный (#ff894f).

Примечание переводчика: то же самое, старайтесь щёлкать кистью, а не водить.

Далее, давайте применим функцию Наложить, если (Blend If):

1. Дважды щёлкните по слою, чтобы появилось окно Стилей слоя (Layer Style). Идём в нижнюю часть окна, в разделНаложить, если (Blend If).
2. Идём в настройки Подлежащего слоя (Underlying Layer) и удерживая клавишу (Alt)+сместите бегунок.

Насколько вы сместите бегунок, будет зависеть от ваших предпочтений; поэкспериментируйте, подберите наилучший вид. Я сместил бегунок, как на скриншоте ниже:

Сгруппируйте вместе 4 слоя, которые мы создали. Назовите новую группу “Заливка Огнём ”.

Шаг 3

Давайте добавим световые блики. Вы можете нарисовать их либо с помощью планшета, либо с помощью инструментаПеро (pen tool), как я это сейчас сделаю.

1. Выберите инструмент Кисть (brush tool). Установите Жёсткость (Hardness) кисти 0%, Непрозрачность (opacity) кисти 100% размер кисти, примерно. 2-5 px. Диаметр кисти будет зависеть от размеров вашего исходного изображения. В своей работе я использовал диаметр кисти 2px.
2. Далее, выберите инструмент Перо (Pen Tool). Создайте одиночные контурные линии вдоль различных краёв вашего объекта. Вы можете временно отключить видимость слоёв с группами “Огонь” и “Заливка огнём”, чтобы вам было удобно работать.

Вот так выглядят мои контурные линии:

Когда вас устроит количество созданных световых бликов (я также добавил световые блики на лицо мужчины):

1. Создайте новый слой поверх слоя с группой “Огонь”. Поменяйте режим наложения для данного слоя на Осветление(Screen). Убедитесь, чтобы цвет переднего плана был установлен на тот цветовой оттенок, каким вы хотите, чтоб были ваши световые блики – я выбрал светло-жёлто-оранжевый цвет.
2. Убедитесь. чтобы инструмент Перо (Pen Tool) был активен, далее, щёлкните правой кнопкой по рабочему документу и в появившемся окне, выберите опцию Выполнить обводку (Stroke Path). В окне настроек, не забудьте поставить галочку в окошке Имитировать нажим пера (Simulate Pen Pressure). Нажмите кнопку OK.

1. Продублируйте слой со световыми бликами. Поменяйте режим наложения для дубликата слоя на Перекрытие(Overlay).
2. Далее, идём Фильтр – Размытие – Размытие по Гауссу (Filter > Blur > Gaussian Blur). Добавьте пару пикселей для радиуса размытия  — достаточно, чтобы придать вашим световым бликам нежный эффект свечения.

1. Сгруппируйте оба слоя со световыми бликами. Назовите новую группу “Световые блики”.
2. Не забудьте включить видимость слоёв с группами “Огонь” и “Заливка огнём”.

Шаг 4

Далее, мы добавим свечение к огню.

1. Создайте новый слой поверх слоя с группой “Световые блики”.
2. Выберите большую мягкую круглую кисть, цвет кисти красный оттенок средних тонов (#d00f00). Прокрасьте кистью поверх модели или вашего объекта.

Далее, ещё раз примените функцию Наложить, если (Blend If). Я выставил бегунок, как показано на скриншоте ниже:

Поменяйте режим наложения для данного слоя на Осветление (Screen).

Создаёт ещё один новый слой, повторите предыдущий шаг, только на этот раз, цвет кисти оранжевый (#dd4900). Далее, ещё раз примените функцию Наложить, если (Blend If). Я выставил бегунок, как показано на скриншоте ниже:

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

Я прокрасил полностью правую сторону изображения. Для этого я использовал очень большую мягкую кисть, цвет кисти тёмно-красный (#9e0000). Убедитесь, чтобы эффект был очень мягким, примените размытие, если понадобится.

Уменьшите непрозрачность слоя до, примерно, 27%.

Сгруппируйте три созданных слоя, назовите новую группу “Свечение.

Шаг 5

1. Далее, мы усилим интенсивность огня, путём добавления тёмного оттенка на противоположную сторону изображения. Т.к. наш огонь- красный, то мы добавим синий оттенок.

2. Создайте новый слой, поменяйте режим наложения для данного слоя на Цветность (Color).
3. С помощью большой мягкой кисти, цвет кисти синий (#0e28df), прокрасьте противоположную сторону огня. В моём случае, полностью левая сторона изображения.
4. Уменьшите непрозрачность слоя до, примерно, 27%.

Шаг 6

Чтобы добавить и выровнять цвет, давайте добавим несколько корректирующих слоёв.

1. Вначале добавьте корректирующий слой Цветовой Баланс (Color Balance). Установите цвета Голубой (Cyan) +15,Пурпурный (Magenta) -20, и Жёлтый (Yellow) -9.

Далее, добавьте корректирующий слой Кривые (Curves). Установите кривую красного канала, как показано на скриншоте ниже. Не забудьте переключиться на красный канал.

1. Далее, перейдите на слой-маску корректирующего слоя Кривые (curves) и с помощью мягкой чёрной кисти, скройте эффект кривых на участках, где нет огня.

2. В заключение, создайте второй корректирующий слой Кривые (Curves). Щёлкните в центре кривой RGB. Потяните кривую вниз за опорную точку, чтобы затемнить изображение. (Прим.переводчика: главное, не переусердствуйте)

3. Далее, перейдите на слой-маску данного корректирующего слоя Кривые (curves) и с помощью большой мягкой чёрной кисти, скройте эффект кривых вокруг огня.

И мы завершили урок! Надеюсь, вам понравился этот урок и вы примените данный эффект огня в своих проектах!

Итоговый результат

Просто для размышлений.

Простите нас, родные россияне.

Пока еще вращается Земля,

Мы братьями Вам быть не перестали.

Вас предала не Родина моя.

 

Не люди, что на площадь выходили,

Пытаясь наболевшее сказать,

А те, кто нашу Родину купили,

Купили, чтобы выгодно продать.

 

Правители приходят и уходят,

Кого-то помнят долго и добром,

Но комом каждый президент выходит,

Как первый блин, в моем краю родном.

 

Нас ссорили с экранов и смеялись,

Что разругались братья в пух и прах,

Но верим, мы в душе людьми остались,

И понесем друг друга на руках;

 

Когда из нас кого-то ранят в спину,

Не будем о гражданстве вспоминать,

Я верю, что не может Украина

На братские народы наплевать.

 

Простите нас, что Вас не пропускаем

На собственных границах как врагов,

Простите, что каналам доверяем,

Где нас считают всех за дураков,

 

Показывают войны, истерию,

И получают в долларах паек,

Но нету Украины без России,

Как без ключа, не нужен и замок.

 

Мы все — одна семья, пусть разругались,

Но ссоры ведь случаются в семье;

И главное, чтоб мы людьми остались,

А не зверьми, готовыми к войне

 

За Землю, за туманные идеи,

Забыв о том, что детям нужен мир!

Я думать по-другому не умею,

А мы для власти нашей просто тир,

 

Хотят — на нас же армию направят,

Хотят — на воздух нам введут налог;

Но разлюбить Россию не заставят,

Пока мы вместе, с нами Бог!

 

Виктория Андреевна

Однозв’язні списки в моделюванні колоди гральних карт

  1. Завдання :

 

  1. На мові програмування Pascal реалізувати процедури:

— Підготовки стека вільних елементів об’ємом  120 заготовок карт

— Додавання нової карти в колоду після поточної карти

— Видалення з колоди карти, безпосередньо наступної за поточної картою

— Отримання доступу до наступній карті в колоді

  1. Скориставшись процедурами, реалізованими в завданні 1, а) наповнити колоду 62-ма гральними картами випадковим чином (значення полів генерувати за допомогою генератора випадкових чисел); б) запрограмувати алгоритм обробки колоди гральних карт, розділити колоду на 4 колоди по мастям.

 

 

  1. Хід роботи : В процесі виконання роботи , спочатку реалізую процедури із завдання 1. Далі, на базі реалізованих процедур ,  я рандомізую колоду гральних карт. В ході цього завдання, виконую особисте завдання свого варіанта, а саме — запрограмовую алгоритм обробки колоди гральних карт, розділивши колод на 4 колоди по мастям.

 

 

  1. Код програми :

 

program prog5;

uses crt;

const

maximum=120;

file_first=’deck_before.log’;

file_second=’deck_after.log’;

 

type karta_record=record

tag:0..1;

suit:1..4;

rank:2..14;

next:pointer;

title:string[6];

end;

 

struct_coloda=record

current, top, first, last:^karta_record;

end;

 

var

karta:karta_record;

coloda:struct_coloda;

i:integer;

error:integer;

fileo:text;

 

{создание карты}

procedure createCard(var karta:karta_record);

begin

karta.tag:=random(2);

karta.suit:=random(4)+1;

karta.rank:=random(13)+2;

case karta.rank of

2: karta.title:=’ДВА’;

3: karta.title:=’ТРИ’;

4: karta.title:=’ЧЕТЫРЕ’;

5: karta.title:=’ПЯТЬ’;

6: karta.title:=’ШЕСТЬ’;

7: karta.title:=’СЕМ’;

8: karta.title:=’ВОСЕМЬ’;

9: karta.title:=’ДЕВЯТЬ’;

10: karta.title:=’ДЕСЯТЬ’;

11: karta.title:=’ВАЛЕТ’;

12: karta.title:=’ДАМА’;

13: karta.title:=’КОРОЛЬ’;

14: karta.title:=’ТУЗ’;

end;

end;

 

{убрать карту после текущего указателя}

procedure removeInFront(var coloda:struct_coloda; var error:integer);

var temp:^karta_record;

begin

if coloda.current^.next=coloda.top then

begin

error:=1;

exit;

end;

temp:=coloda.current^.next;

coloda.current^.next:=temp^.next;

dispose(temp);

error:=0;

end;

 

{переход к следующей карте после текущей}

procedure stepForward(var coloda:struct_coloda; var error:integer);

begin

if coloda.current^.next=coloda.top then {если достигли конца колоды возвращаем ошибку}

begin

error:=1;

exit;

end;

coloda.current:=coloda.current^.next;

error:=0;

end;

 

{вставка карты после текущего указателя}

procedure insertInFront(var coloda:struct_coloda; karta:karta_record; var error:integer);

var temp:^karta_record;

begin

new(temp);

temp^.next:=coloda.current^.next;

coloda.current^.next:=temp;

coloda.current:=temp;

dispose(temp);

coloda.current^.tag:=karta.tag;

coloda.current^.suit:=karta.suit;

coloda.current^.rank:=karta.rank;

coloda.current^.title:=karta.title;

error:=0;

end;

 

{вывод колоды в файл}

procedure writeColoda(coloda:struct_coloda; var out_file:text; var error:integer);

var j:integer;

mast:string[5];

vid:string[6];

buff:^karta_record;

begin

if coloda.top=coloda.first then

begin

error:=1;

writeln(‘Нет карт’);

exit;

end;

buff:=coloda.current;

coloda.current:=coloda.first;

while coloda.current<>coloda.top do

begin

case coloda.current^.tag of

0: vid:=’шуба’;

1: vid:=’лицо’;

end;

case coloda.current^.suit of

1: mast:=’червь’;

2: mast:=’бубна’;

3: mast:=’трефь’;

4: mast:=’пика’;

end;

writeln(out_file,’   ‘,vid:4,’   ‘,mast:5,’   ‘,coloda.current^.title:6);

coloda.current:=coloda.current^.next;

end;

coloda.current:=buff;

buff:=NIL;

error:=0;

end;

 

{снять карту сверху}

procedure pop(var coloda:struct_coloda; var karta:karta_record; var error:integer);

var i:integer;

temp:pointer;

begin

if coloda.top=coloda.first then

begin

error:=1;

exit;

end;

if coloda.first^.next=coloda.top then

begin

coloda.current:=NIL;

coloda.top:=coloda.first;

karta:=coloda.top^;

error:=0;

exit;

end;

coloda.current:=coloda.first^.next;

temp:=coloda.first;

for i:=2 to maximum-1 do

if coloda.current^.next=coloda.top then

break

else

begin

temp:=coloda.current;

coloda.current:=coloda.current^.next;

end;

coloda.top:=coloda.current;

coloda.current:=temp;

temp:=NIL;

karta:=coloda.top^;

error:=0;

end;

 

{создание новой колоды}

procedure createColoda(var coloda:struct_coloda);

var i:integer;

begin

new(coloda.first);

coloda.top:=coloda.first;

for i:=2 to maximum do

begin

new(coloda.last);

coloda.top^.next:=coloda.last;

coloda.top:=coloda.last;

end;

coloda.top:=coloda.first;

coloda.current:=NIL;

coloda.last^.next:=NIL;

end;

 

{положить на верх карту}

procedure push(var coloda:struct_coloda; karta:karta_record; var error:integer);

begin

if coloda.top=coloda.last then{обработка переполнения}

begin

error:=1;

exit;

end;

coloda.current:=coloda.top;

coloda.top^.tag:=karta.tag;

coloda.top^.suit:=karta.suit;

coloda.top^.rank:=karta.rank;

coloda.top^.title:=karta.title;

coloda.top:=coloda.current^.next;

error:=0;

end;

 

{удаление всех элементов колоды из}

procedure crearColoda(var coloda:struct_coloda);

var i:integer;

begin

coloda.current:=coloda.first;

coloda.last:=NIL;

coloda.first:=NIL;

while coloda.current<>NIL do

begin

coloda.top:=coloda.current^.next;

dispose(coloda.current);

coloda.current:=coloda.top;

end;

end;

 

{разделение колоды на 4-ре по мастям}

procedure changeColoda(var coloda:struct_coloda);

var colodaC, colodaB, colodaT, colodaP:struct_coloda;

karta:karta_record;

out_file:text;

begin

createColoda(colodaC);

createColoda(colodaB);

createColoda(colodaT);

createColoda(colodaP);

while coloda.first<>coloda.top do

begin

pop(coloda, karta, error);

case karta.suit of

1: push(colodaC, karta, error);

2: push(colodaB, karta, error);

3: push(colodaT, karta, error);

4: push(colodaP, karta, error);

end;

end;

assign(out_file,file_second);

{$I-}

rewrite(out_file);

{$I+}

writeln(out_file, ‘Колода червь:’);

writeColoda(colodaC, out_file, error);

writeln(out_file, ‘Колода бубны:’);

writeColoda(colodaB, out_file, error);

writeln(out_file, ‘Колода трефь’);

writeColoda(colodaT, out_file, error);

writeln(out_file, ‘Колода пик’);

writeColoda(colodaP, out_file, error);

close(out_file);

end;

 

BEGIN

clrscr;

createColoda(coloda);

randomize;

for i:=1 to 62 do

begin

createCard(karta);

push(coloda,karta,error);

end;

assign(fileo,file_first);

{$I-}

rewrite(fileo);

{$I+}

writeColoda(coloda, fileo, error);

close(fileo);

changeColoda(coloda);

writeln(‘Колода до изменения была записана в файл’, file_first);

writeln(‘Колода после изменения была записана в файл’, file_second);

writeln(‘Нажмите любую клавишу для выхода из программы…’);

readkey;

crearColoda(coloda);

END.

 

  1. Результат програми :

 

 

Deck_before                                                                         

шуба    пика   ДЕВЯТЬ

лицо   червь   ДЕВЯТЬ

шуба   трефь   КОРОЛЬ

лицо    пика      ДВА

шуба   червь    ВАЛЕТ

шуба   бубна   ВОСЕМЬ

лицо    пика      ТРИ

лицо   трефь     ПЯТЬ

лицо   червь      ДВА

шуба   червь   ВОСЕМЬ

шуба   червь      ТРИ

шуба    пика      ТУЗ

лицо    пика      ТРИ

шуба   бубна     ПЯТЬ

лицо   трефь   КОРОЛЬ

шуба   червь      ДВА

шуба   бубна   КОРОЛЬ

лицо   червь   ВОСЕМЬ

лицо    пика     ПЯТЬ

лицо   червь   ВОСЕМЬ

шуба   трефь   ДЕСЯТЬ

лицо    пика    ШЕСТЬ

шуба   трефь     ПЯТЬ

лицо   бубна   ЧЕТЫРЕ

лицо   трефь      ТУЗ

лицо   бубна      СЕМ

лицо    пика    ВАЛЕТ

лицо   червь   ЧЕТЫРЕ

лицо   трефь   ВОСЕМЬ

лицо   червь      ДВА

шуба   бубна      ТРИ

лицо   трефь      ДВА

лицо   трефь      ТУЗ

шуба   трефь      ТУЗ

лицо    пика   ЧЕТЫРЕ

лицо   бубна   ВОСЕМЬ

шуба   бубна      СЕМ

лицо   червь      ТУЗ

шуба   бубна   ЧЕТЫРЕ

лицо   трефь   ЧЕТЫРЕ

шуба   бубна    ВАЛЕТ

лицо   червь    ВАЛЕТ

шуба    пика    ШЕСТЬ

лицо    пика      ДВА

шуба    пика      ТРИ

лицо    пика   ДЕВЯТЬ

лицо   трефь     ДАМА

шуба   трефь      СЕМ

шуба   трефь   ЧЕТЫРЕ

лицо   трефь   ДЕВЯТЬ

лицо   трефь   КОРОЛЬ

лицо    пика    ШЕСТЬ

шуба   бубна   ВОСЕМЬ

лицо   трефь   КОРОЛЬ

лицо   червь    ШЕСТЬ

шуба   трефь   ВОСЕМЬ

лицо    пика   КОРОЛЬ

лицо   трефь      ТРИ

шуба   бубна   ЧЕТЫРЕ

шуба   трефь      ТРИ

лицо   бубна      ТУЗ

лицо   бубна      ТУЗ

 

deck_after

 

Колода червь:

лицо   червь    ШЕСТЬ

лицо   червь    ВАЛЕТ

лицо   червь      ТУЗ

лицо   червь      ДВА

лицо   червь   ЧЕТЫРЕ

лицо   червь   ВОСЕМЬ

лицо   червь   ВОСЕМЬ

шуба   червь      ДВА

шуба   червь      ТРИ

шуба   червь   ВОСЕМЬ

лицо   червь      ДВА

шуба   червь    ВАЛЕТ

лицо   червь   ДЕВЯТЬ

Колода бубны:

лицо   бубна      ТУЗ

лицо   бубна      ТУЗ

шуба   бубна   ЧЕТЫРЕ

шуба   бубна   ВОСЕМЬ

шуба   бубна    ВАЛЕТ

шуба   бубна   ЧЕТЫРЕ

шуба   бубна      СЕМ

лицо   бубна   ВОСЕМЬ

шуба   бубна      ТРИ

лицо   бубна      СЕМ

лицо   бубна   ЧЕТЫРЕ

шуба   бубна   КОРОЛЬ

шуба   бубна     ПЯТЬ

шуба   бубна   ВОСЕМЬ

Колода трефь

шуба   трефь      ТРИ

лицо   трефь      ТРИ

шуба   трефь   ВОСЕМЬ

лицо   трефь   КОРОЛЬ

лицо   трефь   КОРОЛЬ

лицо   трефь   ДЕВЯТЬ

шуба   трефь   ЧЕТЫРЕ

шуба   трефь      СЕМ

лицо   трефь     ДАМА

лицо   трефь   ЧЕТЫРЕ

шуба   трефь      ТУЗ

лицо   трефь      ТУЗ

лицо   трефь      ДВА

лицо   трефь   ВОСЕМЬ

лицо   трефь      ТУЗ

шуба   трефь     ПЯТЬ

шуба   трефь   ДЕСЯТЬ

лицо   трефь   КОРОЛЬ

лицо   трефь     ПЯТЬ

шуба   трефь   КОРОЛЬ

Колода пик

лицо    пика   КОРОЛЬ

лицо    пика    ШЕСТЬ

лицо    пика   ДЕВЯТЬ

шуба    пика      ТРИ

лицо    пика      ДВА

шуба    пика    ШЕСТЬ

лицо    пика   ЧЕТЫРЕ

лицо    пика    ВАЛЕТ

лицо    пика    ШЕСТЬ

лицо    пика     ПЯТЬ

лицо    пика      ТРИ

шуба    пика      ТУЗ

лицо    пика      ТРИ

лицо    пика      ДВА

шуба    пика   ДЕВЯТЬ

 

  1. Використанні джерела :

 

 

http://lord-n.narod.ru/download/books/walla/programming/Spr_po_C/22/2205.htm

 

http://www.cyberforum.ru/turbo-pascal/thread1109025.html

 

http://algolist.manual.ru/ds/basic/simple_list.php

 

 

СЛАВЯНСКИЕ БОГИ

image

Славянские боги, славянские боги!
Вас били и жгли, волокли по дороге,
Забыв, что спасенье вы русской земли,
Вас в реку столкнули, и след замели.

Над Русью взметнулись макушки церквей,
Но, боги, вы в душах остались людей.
Перун был разгневан, и вот вновь и вновь
На Русь шлёт он грозы, и войны, и кровь.

Но в годы тревоги, и в годы ненастья
Нас Лада хранила от бед и несчастья,
Она берегла нас как добрая мать,
Чтоб духу славянскому быть нам под стать.

Вещают ученые и журналисты
(Философы в тон им на сей счет речисты)
О том, что Руси той заветной уж нет.
Остался взамен только красочный след

Кремли и деревни спалили враги,
Никто не боится уж бабы Яги,
И в реве моторов не слышно былин,
Давно не сзывает рог княжих дружин.

Но вслушайтесь только на митингах громких
Вы в возгласы русичей древних потомков,
Иль в ропот толпы под призыв крикуна —
Живой вы услышите глас Перуна!

Вглядитесь-ка пристальней в лица крестьянок,
Что доят коров или жнут спозаранок,
Иль полные счастья глаза матерей —
Не правда ли, взгляд их — свет Лады очей?

Славянские боги, славянские боги!
За тысячу лет подвести коль итоги,
Всё общество наше полно перемены,
И только вы, боги славян, неизменны.

Несете дух древней Руси вы поныне
И в радостях наших, и в нашей кручине,
Мечтой окрыляя жизнь в русском краю.
Славянские боги, я гимн вам пою!

Перестановка в математике

В данной работе будем рассматривать подстановки и перестановки, которые на са­мом деле являются равнообъемными понятиями. Для вычисления количества перестановок установлена очень простая формула: Р(n) = n!. Применяя эту формулу при решении практических задач, не следует забывать, что факториал — это очень быстро растущая функция, в частности, факториал растет быстрее экспоненты. Действительно, используя известную из математического анализа формулу Стирлинга:

 

или, ели более точно:

нетрудно показать, что:

В комбинаторике перестановка — это упорядоченный набор чисел 1, 2, …, n, обычно трактуемый как биекция на множестве {1, 2, …, n}, которая числу i ставит в соответствие iэлемент из набора. Число n при этом называется порядком перестановки. Как синоним слову «перестановка» в этом смысле некоторые авторы используют слово расстановка.

В теории групп под перестановкой произвольного множества подразумевается биекция этого множества на себя. Как синоним слову «перестановка» в этом смысле некоторые авторы используют слово подстановка. (Другие авторы подстановкой называют наглядный способ записи перестановки.)

Для определения и изучения определителей порядка n рассмотрим некоторые понятия, относящиеся к конечным множествам.

Пусть дано некоторое конечное множество N, состоящее из n элементов. Эти элементы пронумеруем с помощью первых n натуральных чисел 1, 2, …, n. Числа 1, 2, …, n можно помимо их естественного порядка упорядочить многими другими способами.

Определение.

Всякое расположение чисел 1, 2,…, n в некотором определенном порядке называется перестановкой из n чисел (символов).

Число различных перестановок из n символов равно произведению 1∙2…∙n=n! Если в некоторой перестановке поменять местами какие-либо два символа, не обязательно стоящие рядом, а все остальные символы оставить на месте, то получим новую перестановку. Такое преобразование называется транспозицией.

Пусть α1, α2,…, αn – некоторая перестановка чисел 1, 2,…, n. Говорят, что в данной перестановке числа αi и αj образуют инверсию (беспорядок), если αi ˃ α и i<j. Общее число инверсий в перестановке α1, α2,…, αn обозначим через inv(α1, α2,…, αn).

Перестановка называется четной, если inv(α1, α2,…, αn).– четное число или ноль и нечетной в противоположном случае.

Пример. Определить четность перестановки 5, 3, 1, 6, 4, 2.

Решение. Число 5 образует четыре инверсии с числами 3, 1, 4, 2. Число 3 образует две инверсии с числами 1 и 2. Число 1 не образует инверсий. Число 6 образует 2 инверсии с числами 4 и 2. Число 4 образует одну инверсию с числом 2. Общее число инверсий inv(5, 3, 1, 6, 4, 2)=9, следовательно, данная перестановка является нечетной.

Очевидно, что перестановка 1, 2,…, n четна при любом n, так как общее число инверсий inv(1, 2, …, n)=0.

Теорема.

Всякая транспозиция меняет четность перестановки. Определение. Всякое взаимно однозначное отображение множества первых n натуральных чисел на себя называется подстановкой n–ой степени.

Всякая подстановка может быть записана при помощи двух перестановок

 

где – это то число, в которое при подстановке переходит числоik, k=1,n

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

Всякая подстановка n–ой степени может быть записана в вид:

т.е. с естественным расположением чисел в верхней строке.

Очевидно, что при такой форме записи подстановки отличаются друг от друга перестановками, стоящими в нижней строке. Поэтому число различных подстановок n–ой степени равно числу перестановок из n символов, т.е. равно n!.

Определение. Подстановка называется четной, если общее число инверсий в двух строках любой ее записи четно, и нечетной – в противоположном случае.

Покажем, что четность подстановки не зависит от формы ее записи. Рассмотрим произвольную запись некоторой подстановки:

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

Сразу хочется отметить, что существует несколько видов простановок, такие как: Тождественная перестановка — перестановка е которая каждый элемент  отображает в себя: e(x)=x.

Инволюция — перестановка τ, которая является обратной самой себе, то есть τ∙τ=е

Беспорядок — перестановка без неподвижных точек.

Циклом длины l называется такая подстановка π которая тождественна на всём множестве Χ кроме подмножестваи  Обозначается . Число перестановок, содержащих k циклов, — есть числа Стирлинга первого рода.

Или:

Цикл — это последовательность элементов X0,…,Xk такая что

 

Транспозиция — перестановка элементов множества X, которая меняет местами два элемента. Транспозиция является циклом длины 2.

Определение. Всякая транспозиция меняет чётность перестановки.

Доказательство. Пусть в перестановке символы к и р меняются местами. При этом возможны два случая.

1) Символы к и р в данной перестановке стоят рядом, т.е. (…к, р…). После транспозиции получится перестановка (…p, k…). Если к и р составляли инверсию в данной перестановке, то после инверсии они уже не будут составлять инверсию и наоборот. Число инверсий, которые к и р составляли в данной перестановке с остальными символами, не изменится. Следовательно, число инверсий изменится на 1, т.е. чётность перестановки изменится.

2) Символы к и р в данной перестановке стоят не рядом, т.е. (…к, р…). После транспозиции получится перестановка (…p, k…). Число инверсий, которые к и р составляли в данной перестановке с символами, стоящими перед к и после р, не изменится. Если между к и р стоят m символов, то переставить к и р можно следующим образом: переставить к последовательно с каждым из этих m символов, затем переставить к и р, затем в обратном порядке переставить р каждым из этих m символов. Получим 2m + 1 транспозиций соседних символов. По доказанному каждая из них меняет чётность перестановки. Итак, чётность перестановки изменилась

Следствие. При n > 1 число чётных перестановок равно числе нечётных перестановок и равно 0,5×n!.

Пример. В подстановке

 

 

действительно перемещаемыми символами являются 1, 3, 4, 5, 6. Выберем любой из них, например, 3. , ,,,,

Поэтому цикл можно записать как (3 6 4 5 1)

Определение. Если в перестановке f = <a1,…,an> для элементов ai и aj имеет место неравенство ai > aj при i < j, то пара ij) называется инверсией. Обозначим I(f) — число инверсий в перестановке f.

Теорема. Произвольную подстановку f можно представить в виде суперпозиции I(f) транспозиций соседних элементов.

Доказательство.

Пусть f = <a1,…,1,… an>. Переставим 1 на первое место, меняя ее местами с соседними слева элементами. Обозначим последовательность этих транспозиций через t1. При этом все инверсии (и только они), в которых участвовала 1, пропадут. Затем переставим 2 на второе место и т. д. Таким образом, fot1ootn = e и по свойству группы f =, причем |t1| + |t2| +… + |tn|=I(f).

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

Отступление. Доказанная теорема утверждает, что произвольную перестановку можно представить в виде композиции определенного числа транспозиций, но не утверждает, что такое пред­ставление является эффективным. Метод сортировки, основанный на предшествующей теореме, известен как «метод пузырька». Заметим, что при перемещении элемента на свое место транспозициями соседних элементов все элементы остаются на своих местах, кроме перемещаемого элемента и того элемента, который стоит на целевом месте, а эти элементы меняются местами.

ИСПОЛЬЗУЕМЫЕ МАТЕРИАЛ

 

  1. Курош А.Г. «Курс высшей алгебры», Лань, 2008
  2. Кострикин А.И. «Введение в алгебру. Основы алгебры», МЦНМО, 2012.
  3. Г.С.Белозёров “Конспект лекций по алгебре и геометрии”