/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
thread.run();
}
//this setup allows for the dropping of the static context beyond 'this' point of execution
private static class MatrixRunner
implements Runnable { public void run() {
final Matrix matrix = new Matrix(3);
System.
out.
printf("Matrix : %s\n", matrix
); matrix.transpose();
System.
out.
printf("After transpose : %s\n", matrix
); }
//notice this class does not have static modifier
private class Matrix {
private final double[][] matrix;
private final int size;
public Matrix(final int size) {
this.size = size;
matrix = new double[size][size];
//populate with dummy data...omitted the 0 as they are assigned by default
matrix[0][0]=1;
matrix[1][0]=5;
matrix[1][1]=1;
matrix[2][0]=6;
matrix[2][1]=5;
matrix[2][2]=1;
}
public void transpose() {
for(int i = 0; i < size; ++i) {
for(int j = 0; j < i ; ++j) {
double tmpJI = get(j, i);
put(j, i, get(i, j));
put(i, j, tmpJI);
}
}
}
final StringBuilder sb = new StringBuilder();
for(int i = 0; i < size; ++i) {
for(int j = 0; j < size ; ++j) {
sb.append((int)get(i,j));
sb.append(" ");
}
sb.append("\n");
}
return sb.toString();
}
public void put(int i, int j, double d) {
matrix[i][j]=d;
}
public double get(int i, int j) {
return matrix[i][j];
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCSAKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJICBmaW5hbCBUaHJlYWQgdGhyZWFkID0gbmV3IFRocmVhZChuZXcgTWF0cml4UnVubmVyKCkpOwoJICB0aHJlYWQucnVuKCk7Cgl9CgogICAgLy90aGlzIHNldHVwIGFsbG93cyBmb3IgdGhlIGRyb3BwaW5nIG9mIHRoZSBzdGF0aWMgY29udGV4dCBiZXlvbmQgJ3RoaXMnIHBvaW50IG9mIGV4ZWN1dGlvbgogICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTWF0cml4UnVubmVyIGltcGxlbWVudHMgUnVubmFibGUgewogICAgCXB1YmxpYyB2b2lkIHJ1bigpIHsKICAgIAkJZmluYWwgTWF0cml4IG1hdHJpeCA9IG5ldyBNYXRyaXgoMyk7CgkgICAgICAgIFN5c3RlbS5vdXQucHJpbnRmKCJNYXRyaXggOiAlc1xuIiwgbWF0cml4KTsKCSAgICAgICAgbWF0cml4LnRyYW5zcG9zZSgpOwoJICAgICAgICBTeXN0ZW0ub3V0LnByaW50ZigiQWZ0ZXIgdHJhbnNwb3NlIDogJXNcbiIsIG1hdHJpeCk7CiAgICAJfQogICAgCiAgICAvL25vdGljZSB0aGlzIGNsYXNzIGRvZXMgbm90IGhhdmUgc3RhdGljIG1vZGlmaWVyCiAgICBwcml2YXRlIGNsYXNzIE1hdHJpeCB7CiAgICAgIHByaXZhdGUgZmluYWwgZG91YmxlW11bXSBtYXRyaXg7CiAgICAgIHByaXZhdGUgZmluYWwgaW50IHNpemU7CiAgICAgIHB1YmxpYyBNYXRyaXgoZmluYWwgaW50IHNpemUpIHsKICAgIAl0aGlzLnNpemUgPSBzaXplOwogICAgCW1hdHJpeCA9IG5ldyBkb3VibGVbc2l6ZV1bc2l6ZV07CiAgICAgICAgCiAgICAgICAgLy9wb3B1bGF0ZSB3aXRoIGR1bW15IGRhdGEuLi5vbWl0dGVkIHRoZSAwIGFzIHRoZXkgYXJlIGFzc2lnbmVkIGJ5IGRlZmF1bHQKICAgICAgICBtYXRyaXhbMF1bMF09MTsKICAgICAgICBtYXRyaXhbMV1bMF09NTsKICAgICAgICBtYXRyaXhbMV1bMV09MTsKICAgICAgICBtYXRyaXhbMl1bMF09NjsKICAgICAgICBtYXRyaXhbMl1bMV09NTsKICAgICAgICBtYXRyaXhbMl1bMl09MTsKICAgICAKICAgIH0KIAogICAgcHVibGljIHZvaWQgdHJhbnNwb3NlKCkgewogICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICBmb3IoaW50IGogPSAwOyBqIDwgaSA7ICsraikgewogICAgICAgICAgICAgIGRvdWJsZSB0bXBKSSA9IGdldChqLCBpKTsKICAgICAgICAgICAgICBwdXQoaiwgaSwgZ2V0KGksIGopKTsKICAgICAgICAgICAgICBwdXQoaSwgaiwgdG1wSkkpOwogICAgICAgICAgfQogICAgICB9CiAgICB9CgogICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKCQlmaW5hbCBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IDA7IGogPCBzaXplIDsgKytqKSB7CiAgICAgICAgICAgICAgICBzYi5hcHBlbmQoKGludClnZXQoaSxqKSk7CiAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIiAiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBzYi5hcHBlbmQoIlxuIik7CiAgICAgICAgfQogICAgcmV0dXJuIHNiLnRvU3RyaW5nKCk7CiAgICB9CgogICAgcHVibGljIHZvaWQgcHV0KGludCBpLCBpbnQgaiwgZG91YmxlIGQpIHsKICAgICAgICAgCiAgICAgICAgbWF0cml4W2ldW2pdPWQ7CiAgICB9CgogICAgcHVibGljIGRvdWJsZSBnZXQoaW50IGksIGludCBqKSB7CiAgICAgICAgIAogICAgICAgIHJldHVybiBtYXRyaXhbaV1bal07CiAgICB9Cn0KfQoKfQ==