написать SWI-Prolog 1.Составить запросы, протестировать факты и правила представленного первоначального варианта БЗ на прологе 2.Добавить одноместные и многоместные предикаты, характеризующие представленные семейства (непарнокопытные, хоботные, и т.д.)
Больше(слон,лошадь).
больше(лошадь, осел).
больше(осел,собака).
больше(осел,обезьяна).
больше(собака,кошка).
больше(кошка,мышь).
больше(Х,У):-больше(Х,Е),больше(Е,У).
непарнокопытные(лошадь).
непарнокопытные(осел).
семейство_псовые(собака).
приматы(обезьяна).
грызуны(мышь).
хоботные(слон).
вес(осел, 150).
имеет_копыта(осел).
непарнокопытные(Х):-млекопитающее(Х), имеет_копыта(Х), нечет_копыта(Х), вес(Х, Р), Р>149.
обитает(слон, азия).
обитает(слон, африка).
потребляет(слон, день, 300, кг, листья).
потребляет(слон, день, 300, кг, трава).
a: array[,] of real;
begin
write('n = '); readln(n);
setlength(a,n+1,n+1);
randomize;
writeln('исходная матрица:');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(-20,20);
write(a[i,j]:4);
end;
writeln;
end;
//транспонирование матрицы
for i:=1 to n-1 do
for j:=i+1 to n do swap(a[i,j],a[j,i]);
//вывод на экран
writeln('транспонированная матрица:');
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
end.
n = 4
исходная матрица:
-5 16 -10 5
-4 -20 6 14
-2 10 -4 -7
-16 1 -9 13
транспонированная матрица:
-5 -4 -2 -16
16 -20 10 1
-10 6 -4 -9
5 14 -7 13
// Внимание! Если программа не работает, обновите версию!
begin
var a:=SeqRandom(ReadInteger('n='),-99,99).Select(t->t/10).ToArray;
a.Println;
Writeln('1: ',a.Where(t->t<0).Sum);
a.Sort; // по возрастанию
a.Println;
Writeln('2: ',a[a.IndexMin+1:a.IndexMax].Aggregate(1.0,(x,y)->x*y))
end.
Пример
n= 13
-3 6 -2.3 -7.5 -1.6 8.4 -4.7 -2.8 9.9 -3.3 -0.7 0.9 -8.8
1: -34.7
-8.8 -7.5 -4.7 -3.3 -3 -2.8 -2.3 -1.6 -0.7 0.9 6 8.4 9.9
2: 114175.0608768
// PascalABC.NET 3.3, сборка 1600 от 23.12.2017
// Внимание! Если программа не работает, обновите версию!
begin
var (m,n):=ReadInteger2('Количество строк и столбцов в матрице:');
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(m,n,-20,20);
a.Println(4); Writeln(4*a.ColCount*'-');
Writeln('1: ',a.Rows.Where(r->r.All(t->t<>0)).Count);
Writeln('2: ',a.ElementsByRow.GroupBy(t->t).Select(t->(t.Key,t.Count))
.Where(t->t[1]>1).MaxBy(t->t[0])[0])
end.
Пример
Количество строк и столбцов в матрице: 7 20
*** Исходная матрица ***
-9 9 16 -5 18 -1 -12 -13 -19 -12 8 -19 -18 20 -16 9 -7 17 -19 1
8 2 18 -7 -16 3 15 19 -11 -10 -9 -4 16 -4 18 10 15 10 -17 6
-19 -15 -14 15 11 -13 3 0 1 -6 -17 -17 -14 -4 -2 10 11 3 -9 -6
5 -11 18 11 18 -8 -14 6 -18 -5 15 4 13 -5 -1 3 -4 -18 2 18
-20 -5 -2 16 -13 -13 -11 -1 19 -12 19 -9 -1 10 -19 13 -13 -5 18 -1
-19 18 -2 -14 -1 0 -10 12 17 16 -7 9 -20 -7 -6 -10 12 -18 4 10
-18 7 7 15 -4 3 -15 -17 -7 7 -5 -20 -16 -17 17 -17 18 -8 -3 7
--------------------------------------------------------------------------------
1: 5
2: 19