Skip to main content
deleted 35 characters in body
Source Link
Henrik Schumacher
  • 112.9k
  • 7
  • 197
  • 339

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] := Module[{p, q, Bidx},   qidx = Range @@ Sort[{iRange[i, j}]; p = RotateLeft[q, Sign[j - i]];   Bp = A; B[[q]] =Range[1, B[[p]];Length[A]];   B[[All, q]]p[[idx]] = B[[All, p]];RotateLeft[idx]; A[[p, Bp]]   ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] := Module[{p, q, B},   q = Range @@ Sort[{i, j}]; p = RotateLeft[q, Sign[j-i]];   B = A; B[[q]] = B[[p]];   B[[All, q]] = B[[All, p]]; B   ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] := Module[{p, idx}, idx = Range[i, j, Sign[j - i]]; p = Range[1, Length[A]]; p[[idx]] = RotateLeft[idx]; A[[p, p]] ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

deleted 3 characters in body
Source Link
Henrik Schumacher
  • 112.9k
  • 7
  • 197
  • 339

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] := Module[{p, q, B}, q = Range @@ Sort[{i, j}]; p = RotateLeft[q, -Sign[i Sign[j- j]];i]]; B = A; B[[q]] = B[[p]]; B[[All, q]] = B[[All, p]]; B ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] := Module[{p, q, B}, q = Range @@ Sort[{i, j}]; p = RotateLeft[q, -Sign[i - j]]; B = A; B[[q]] = B[[p]]; B[[All, q]] = B[[All, p]]; B ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] := Module[{p, q, B}, q = Range @@ Sort[{i, j}]; p = RotateLeft[q, Sign[j-i]]; B = A; B[[q]] = B[[p]]; B[[All, q]] = B[[All, p]]; B ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

added 53 characters in body
Source Link
Henrik Schumacher
  • 112.9k
  • 7
  • 197
  • 339

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] :=  Moduel[Module[{p, q, B}, Bq = A; Range @@ B[[Sort[{i, j}]]];  p = B[[{jRotateLeft[q, i}]];-Sign[i - j]]; B[[All,B {u,= j}]]A; B[[q]] = B[[p]]; B[[All, {jq]] = B[[All, i}]];p]]; B ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 4 & 3 & 2 & 5 \\ 4 & 7 & 6 & 5 & 8 \\ 3 & 6 & 5 & 4 & 7 \\ 2 & 5 & 4 & 3 & 6 \\ 5 & 8 & 7 & 6 & 9 \\ \end{array} \right)$$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] :=  Moduel[{B}, B = A;  B[[{i, j}]] = B[[{j, i}]]; B[[All, {u, j}]] = B[[All, {j, i}]]; B ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 4 & 3 & 2 & 5 \\ 4 & 7 & 6 & 5 & 8 \\ 3 & 6 & 5 & 4 & 7 \\ 2 & 5 & 4 & 3 & 6 \\ 5 & 8 & 7 & 6 & 9 \\ \end{array} \right)$

Simply use Part and Set:

f[A_?SquareMatrixQ, i_Integer, j_Integer] := Module[{p, q, B}, q = Range @@ Sort[{i, j}];  p = RotateLeft[q, -Sign[i - j]]; B = A; B[[q]] = B[[p]]; B[[All, q]] = B[[All, p]]; B ] A = Outer[Plus, Range[5], Range[0, 4]]; A // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 2 & 3 & 4 & 5 \\ 2 & 3 & 4 & 5 & 6 \\ 3 & 4 & 5 & 6 & 7 \\ 4 & 5 & 6 & 7 & 8 \\ 5 & 6 & 7 & 8 & 9 \\ \end{array} \right)$

B = f[A,2,4]; B // MatrixForm 

$\left( \begin{array}{ccccc} 1 & 3 & 4 & 2 & 5 \\ 3 & 5 & 6 & 4 & 7 \\ 4 & 6 & 7 & 5 & 8 \\ 2 & 4 & 5 & 3 & 6 \\ 5 & 7 & 8 & 6 & 9 \\ \end{array} \right)$

added 39 characters in body
Source Link
Henrik Schumacher
  • 112.9k
  • 7
  • 197
  • 339
Loading
Source Link
Henrik Schumacher
  • 112.9k
  • 7
  • 197
  • 339
Loading