/* http://es.stackoverflow.com/q/32069/127
Recorrer una matriz por la diagonal */
import java.util.*;
import java.lang.*;
class Ideone
{
public static void main
(String args
[]) {
//Completar valores en diagonal
final int n = 5;
final int m = 4;
final int cantDiagonales = n + m - 1;
int a[][] = new int[m][n];
for (int diagonal = 0, num = 0; diagonal < cantDiagonales; diagonal++) {
for (int x,
y
= Math.
min(diagonal,m
- 1); //que y no exceda m y >= 0 && (x = diagonal - y) < n; //que x no exceda n
y--) {
a[y][x] = num++;
}
}
//Imprimir el resultado
for(int y = 0; y < m; y++) {
for(int x = 0; x < n; x++) {
System.
out.
print(a
[y
][x
] + "\t"); }
}
}
}
LyogaHR0cDovL2VzLnN0YWNrb3ZlcmZsb3cuY29tL3EvMzIwNjkvMTI3CiAgIFJlY29ycmVyIHVuYSBtYXRyaXogcG9yIGxhIGRpYWdvbmFsICAgICAgICovCgppbXBvcnQgamF2YS51dGlsLio7CmltcG9ydCBqYXZhLmxhbmcuKjsKCmNsYXNzIElkZW9uZQp7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKQogICAgewogICAgICAgIC8vQ29tcGxldGFyIHZhbG9yZXMgZW4gZGlhZ29uYWwKICAgICAgICBmaW5hbCBpbnQgbiA9IDU7CiAgICAgICAgZmluYWwgaW50IG0gPSA0OwogICAgICAgIGZpbmFsIGludCBjYW50RGlhZ29uYWxlcyA9IG4gKyBtIC0gMTsKICAgIAogICAgICAgIGludCBhW11bXSA9IG5ldyBpbnRbbV1bbl07CiAgICAKICAgICAgICBmb3IgKGludCBkaWFnb25hbCA9IDAsIG51bSA9IDA7IGRpYWdvbmFsIDwgY2FudERpYWdvbmFsZXM7IGRpYWdvbmFsKyspIHsKICAgIAoJICAgICAgICBmb3IgKGludCB4LAoJICAgICAgICAJCSB5ID0gTWF0aC5taW4oZGlhZ29uYWwsbSAtIDEpOyAvL3F1ZSB5IG5vIGV4Y2VkYSBtCgkgICAgICAgIAl5ID49IDAgJiYgKHggPSBkaWFnb25hbCAtIHkpIDwgbjsgIC8vcXVlIHggbm8gZXhjZWRhIG4KCSAgICAgICAgCXktLSkgewoJICAgICAgICAJCQoJICAgICAgICAgICAgYVt5XVt4XSA9IG51bSsrOwoJICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgIH0KICAgICAgICAKICAgICAgICAvL0ltcHJpbWlyIGVsIHJlc3VsdGFkbwogICAgICAgIGZvcihpbnQgeSA9IDA7IHkgPCBtOyB5KyspIHsKICAgICAgICAgICAgZm9yKGludCB4ID0gMDsgeCA8IG47IHgrKykgewogICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChhW3ldW3hdICsgIlx0Iik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CiAgICAgICAgfQogICAgfQp9