## 433 Reputation

15 years, 96 days

## It seems to be working now...

It seems to be working now thanks but is my code correct. Meaning the second part when the matrix is fliped (transformed) is the procedure working. I tried to trace the proc to see if it is goi ng through all the loops but it didnt work.

with(MTM):with(ArrayTools):
Diagn:=proc(n)
local m,en,j,t,m1,k,s,q,w:
m:=n:
en:=min(op(1,m))-1:
for j from -(en) to en do
q:=diag(m,j);
if t > 1  then
return(No)
fi:
od;
m1:=FlipDimension(m,2);
for k from -(en) to en do
w:=diag(m1,k);
if s > 1 then
return(No1)
fi:
od;
return(yes)
end proc:

## It seems to be working now...

It seems to be working now thanks but is my code correct. Meaning the second part when the matrix is fliped (transformed) is the procedure working. I tried to trace the proc to see if it is goi ng through all the loops but it didnt work.

with(MTM):with(ArrayTools):
Diagn:=proc(n)
local m,en,j,t,m1,k,s,q,w:
m:=n:
en:=min(op(1,m))-1:
for j from -(en) to en do
q:=diag(m,j);
if t > 1  then
return(No)
fi:
od;
m1:=FlipDimension(m,2);
for k from -(en) to en do
w:=diag(m1,k);
if s > 1 then
return(No1)
fi:
od;
return(yes)
end proc:

## Thank u. Can you please tell...

Thank u. Can you please tell me what's wrong with the code i coded below. It was supposed to add along the diagonals and if any of the diagonals sum is greater than 1 then it should return ' No ' but it keeps on returning ' yes '???

with(MTM):with(ArrayTools):
Diagn:=proc(n)
local m, en, j , t , m1, k , s :
m : = n :

en:=min(op(1,m))-1:
for j from -(en) to en do
diag(m,j);
if t > 1 then
return(No)
else return(yes)
fi:
od;
m1:=FlipDimension(m,2);
for k from -(en) to en do
diag(m1,k);
if s > 1 then
return(No1)
else return(yes1)
fi:
od;
end proc:
n:=Matrix([[1,0,0,0],[0,0,1,0],[0,0,0,1],[0,1,0,0];
Diagn(n);
yes

## Thank u. Can you please tell...

Thank u. Can you please tell me what's wrong with the code i coded below. It was supposed to add along the diagonals and if any of the diagonals sum is greater than 1 then it should return ' No ' but it keeps on returning ' yes '???

with(MTM):with(ArrayTools):
Diagn:=proc(n)
local m, en, j , t , m1, k , s :
m : = n :

en:=min(op(1,m))-1:
for j from -(en) to en do
diag(m,j);
if t > 1 then
return(No)
else return(yes)
fi:
od;
m1:=FlipDimension(m,2);
for k from -(en) to en do
diag(m1,k);
if s > 1 then
return(No1)
else return(yes1)
fi:
od;
end proc:
n:=Matrix([[1,0,0,0],[0,0,1,0],[0,0,0,1],[0,1,0,0];
Diagn(n);
yes

## Thank u. Can you please tell...

Thank u. Can you please tell me what's wrong with the code i coded below. It was supposed to add along the diagonals and if any of the diagonals sum is greater than 1 then it should return ' No ' but it keeps on returning ' yes '???

with(MTM):with(ArrayTools):
Diagn:=proc(n)
local m, en, j , t , m1, k , s :
m : = n :

en:=min(op(1,m))-1:
for j from -(en) to en do
diag(m,j);
if t > 1 then
return(No)
else return(yes)
fi:
od;
m1:=FlipDimension(m,2);
for k from -(en) to en do
diag(m1,k);
if s > 1 then
return(No1)
else return(yes1)
fi:
od;
end proc:
n:=m;
Diagn(n);

## Thank u. Can you please tell...

Thank u. Can you please tell me what's wrong with the code i coded below. It was supposed to add along the diagonals and if any of the diagonals sum is greater than 1 then it should return ' No ' but it keeps on returning ' yes '???

with(MTM):with(ArrayTools):
Diagn:=proc(n)
local m, en, j , t , m1, k , s :
m : = n :

en:=min(op(1,m))-1:
for j from -(en) to en do
diag(m,j);
if t > 1 then
return(No)
else return(yes)
fi:
od;
m1:=FlipDimension(m,2);
for k from -(en) to en do
diag(m1,k);
if s > 1 then
return(No1)
else return(yes1)
fi:
od;
end proc:
n:=m;
Diagn(n);

## Still does not work??...

My procedure still does not work and i cant seem to work out why? For the following matrix it should return ' yes ' but it returns '  no '.

m:=Matrix([[0,0,1,0],[1,0,0,0],[0,0,0,1],[0,1,0,0]]):

n:=m:

with(ArrayTools):
RownColumn:=proc(n)
local m, en, q, w,r,s, Arr:
m:=n:
en:=min(op(1,m)):
Arr:=Array(1..en,fill = 1):

r:=convert(q,Array):
s:=convert(w,Array):
if r = Arr and s = Arr then

return(yes)
else
return(No)
fi:
end proc:
n:=m;
RownColumn(n);

No

## Still does not work??...

My procedure still does not work and i cant seem to work out why? For the following matrix it should return ' yes ' but it returns '  no '.

m:=Matrix([[0,0,1,0],[1,0,0,0],[0,0,0,1],[0,1,0,0]]):

n:=m:

with(ArrayTools):
RownColumn:=proc(n)
local m, en, q, w,r,s, Arr:
m:=n:
en:=min(op(1,m)):
Arr:=Array(1..en,fill = 1):

r:=convert(q,Array):
s:=convert(w,Array):
if r = Arr and s = Arr then

return(yes)
else
return(No)
fi:
end proc:
n:=m;
RownColumn(n);

No

## oh i see now what you meant...

oh i see now what you meant " with(ArrayTools)".

Thanks Doug

## oh i see now what you meant...

oh i see now what you meant " with(ArrayTools)".

Thanks Doug

## with??...

Am sorry but i do not know what you mean by with?

## with??...

Am sorry but i do not know what you mean by with?

## Why do i get this error and...

Why do i get this error and how can i fix it??

RownColumn:=proc(n)
local m, en, q, w,r,s:
m:=n:
en:=min(op(1,m)):
with(ArrayTools):

r:=convert(q,Array):
s:=convert(w,Array):
if (r and s) = Array(1..en,fill = 1) then
return(yes)
else return(No)
fi:
end proc:
n:=m;
RownColumn(n);

Error, (in RownColumn) invalid input: `convert/Array` expects its 1st argument, A, to be of type {Array, Matrix, Vector, array, list, listlist}, but received AddAlongDimension(Matrix(4, 4, {(1, 1) = 0, (1, 2) = 0, (1, 3) = 1, (1, 4) = 0, (2, 1) = 1, (2, 2) = 0, (2, 3) = 0, (2, 4) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 0, (3, 4) = 1, (4, 1) = 0, (4, 2) = 1, (4, 3) = 0, (4, 4) = 0}), 1)

## Why do i get this error and...

Why do i get this error and how can i fix it??

RownColumn:=proc(n)
local m, en, q, w,r,s:
m:=n:
en:=min(op(1,m)):
with(ArrayTools):

r:=convert(q,Array):
s:=convert(w,Array):
if (r and s) = Array(1..en,fill = 1) then
return(yes)
else return(No)
fi:
end proc:
n:=m;
RownColumn(n);

Error, (in RownColumn) invalid input: `convert/Array` expects its 1st argument, A, to be of type {Array, Matrix, Vector, array, list, listlist}, but received AddAlongDimension(Matrix(4, 4, {(1, 1) = 0, (1, 2) = 0, (1, 3) = 1, (1, 4) = 0, (2, 1) = 1, (2, 2) = 0, (2, 3) = 0, (2, 4) = 0, (3, 1) = 0, (3, 2) = 0, (3, 3) = 0, (3, 4) = 1, (4, 1) = 0, (4, 2) = 1, (4, 3) = 0, (4, 4) = 0}), 1)

## M:=Matrix([[1,2,3],[2,3,4...

```M:=Matrix([[1,2,3],[2,3,4],[3,7,5]]);
[1    2    3]
[           ]
M := [2    3    4]
[           ]
[3    7    5]
```

what if i wanted to work out the diagonal from the other side. For example

3+3+3 = 9
2+2 = 4

1 = 1

4 +7 = 11

5 = 5

Is that possible?
The func with(MTM):=Diag works it out the normal way i want it to do it the other way.
1+3+5 = 9 -> diag(m)
2+4=6 -> diag(m,1)
2+7= -> diag(m,-1)

 1 2 3 4 5 6 7 Last Page 1 of 9
﻿