Ruud H.G. van Tol on Thu, 21 Mar 2024 19:06:52 +0100


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: Error in pari/gp code



On 2024-03-21 17:10, Swati, NoFirstName wrote:
I am trying to write a code to output the position of the last non-zero entry of this matrix but the code is giving a syntax error. I am not sure what went wrong. Could someone help in this regard?

Thanks,
Swati

C = [[1, 2, 3, 4], [7, 9, 10], [25, 31, 0], [0, 0, 0]];
A = matconcat([C[1]; C[2]; C[3]; C[4]]);

R = 0;
C = 0;
S= 0;

for(i = matsize(A)[1], i >= 1 &&  S == 0, i--,
    for(j = matsize(A)[2], j >= 1 &&  S== 0, j--,
        if(A[i, j] != 0,
            R = i;
            C = j;
           S = 1;
            break;
  )))

if(S == 1,
    print("Position of the last non-zero entry:" [R, C]),
    print("Matrix A contains only zeros.")
);


I didn't get why C[1] has 4 elements, so I made it:

? doit(D=0) = {
  my( a = [ [1,2,3], [7,9,10], [25,31,0], [0,0,0] ], r=0, c=0 );
  a = Mat(a~);
  D && printp(a);
  D && print(matsize(a));

  for( i=1, matsize(a)[1]
  , for( j=1, matsize(a)[2]
    , if( a[i,j], [r,c] = [i,j] )
    )
  );

  if( r
  , print("Position of the last non-zero entry:",[r,c])
  , print("Matrix contains only zeros.")
  );
}

? doit(1)

[ 1  2  3]

[ 7  9 10]

[25 31  0]

[ 0  0  0]

[4, 3]
Position of the last non-zero entry:[3, 2]

-- Ruud