1 часть решается 1 таблицей: решается таблицей. Вот сама таблица, вода и молоко не в бутылке, лимонад и вода не в банке, так как, сосуд с лимонадом находится между кувшином и сосудом с квасом, то получается, что лимонад и квас не в кувшине , так как стакан находится около банки и сосуда с молоком, то получается, что молоко находится не в банке и не в стакане. Получилось, раз молоко, не в банке не в стакане и не в бутылке, то он в кувшине. А значит остальные не могут быть в кувшине, раз там уже молоко. Теперь получается что вода не в кувшине, не в банкек и не в бутылке, получается она в стакане, а это значит что больше ничего в стакане быть не может, раз там уже вода. Теперь мы видим, что лимонад, не в банке, не в кувшине и не в стакане, значит он в бутылке. А это значит что оставшийся квас уже не в бутылке, так как он больше нигде не может быть он в банке.
Получается так в 1 действии: кувшин с молоком, бутылка с лимонадом, банка с квасом и стакан с водой.
Бутылка Стакан Кувшин Банка
Молоко \ - \ - \ + \ - \
Лимонад \ + \ - \ - \ - \
Квас \ - \ - \ - \ + \
Вода \ - \ + \ - \ - \
ответ: молоко в кувшине, лимонад в бутылке, квас в банке, вода в стакане.
КОНЕЦ.
// Внимание! Если программа не работает, обновите версию!
begin
var n:=ReadInteger('Количество строк в массиве:');
var m:=ReadInteger('Количество столбцов в массиве:');
Writeln('*** Исходный массив [',n,',',m,'] ***');
var a:=MatrRandom(n,m,-99,99);
a.Println(5); Writeln(5*a.ColCount*'-');
a:=a.ConvertAll(x->x.IsOdd?x+10:x-10);
a.Println(5)
end.
Пример
Количество строк в массиве: 5
Количество столбцов в массиве: 10
*** Исходный массив [5,10] ***
66 -57 -2 69 45 -44 35 -96 -48 87
20 -32 -14 -41 -78 2 95 5 61 99
13 -7 86 58 -57 3 -58 14 -48 16
85 42 -57 90 -88 56 53 92 14 -97
84 87 93 93 -29 -32 24 42 89 -62
56 -47 -12 79 55 -54 45 -106 -58 97
10 -42 -24 -31 -88 -8 105 15 71 109
23 3 76 48 -47 13 -68 4 -58 6
95 32 -47 80 -98 46 63 82 4 -87
74 97 103 103 -19 -42 14 32 99 -72