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

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

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

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

 

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

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

  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. Г.С.Белозёров “Конспект лекций по алгебре и геометрии”

Голубь

image

Крошечный мозг голубей работает так же, как наш
(«Science-News»)

Этих городских птиц принято считать почти такими же глупыми, как курицы, и презрительно называть «крысами с крыльями». А между тем настоящий голубь – не только символ мира, отважный почтальон, но и просто умница. Эксперименты показали, что они вполне способны к абстракции, разделяя предметы по категориям.

Ученые из Университета Айовы провели опыты с тремя голубями, которым одна за другой демонстрировались фотографии 128-ми различных предметов из 16-ти групп: дети, бутылки, пироги, машины, собаки, утки, рыбы, цветы, шляпы, ключи, печенье, ручки, телефоны, карты, обувь, деревья. Параллельно им предъявлялись карточки, на одной из которых был нарисован символ соответствующей группы – например, абстрактное дерево, – а на второй – символ другой группы, не связанной с изображением на фотографии. Голубям нужно было, клюнув, выбрать лишь одну из них: за правильное решение они получали награду.

«Наши птицы тренировались различать предметы параллельно по всем 16-ти категориям, – комментируют ученые, – примерно так, как обучаются дети». Эффективность методики оказалась поразительной: вскоре голуби стали безошибочно относить фотографии к нужной группе, и более того, после предъявления незнакомых снимков успешно отнесли их к той или иной категории.

Разумеется, это далеко не первое указание на поразительные способности «птичьих мозгов» справляться с задачами, которые долгое время считались прерогативой человеческого разума. Но теперь вы, возможно, перестанете презрительно относиться к своим соседям по городским джунглям – и обзывать их «крысами с крыльями».

Источник: http://naked-science.ru