/* 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
{
{
// your code goes here
int rows = 3;
int columns = 3;
ArrayList<ArrayList<Integer>> matrix =
new ArrayList<ArrayList<Integer>>();
for (int i=0; i<rows; i++) {
matrix.add(new ArrayList<Integer>());
for (int j=0; j<columns; j++) {
matrix.get(i).add((j+1)+(columns*i));
}
}
for (int i=0; i<rows; i++) {
for (int j=0; j<columns; j++) {
System.
out.
print(matrix.
get(i
).
get(j
) + " "); }
}
printMatrixLine(0,0, rows, columns, "col", "increment", matrix);
}
public static void printMatrixLine(int startRow, int startCol, int rows,
ArrayList<ArrayList<Integer>> matrix) {
int traverser;
int multiplier;
boolean visited = false;
if (direction == "increment") {
multiplier = 1;
}
else {
multiplier = -1;
}
if (parameterToChange == "row") {
traverser=startRow;
System.
out.
printf("trav: %d, visited %b", traverser, visited
); while ( (traverser >= 0) && (traverser<rows) && !visited ) {
if (matrix.get(traverser).get(startCol) != -1) {
System.
out.
print(matrix.
get(traverser
).
get(startCol
)); matrix.get(traverser).set(startCol, -1);
traverser = traverser + 1*multiplier;
}
else {
visited = true;
}
}
System.
out.
printf("trav: %d, visited %b", traverser, visited
); if (direction == "increment") {
whichDirection = "decrement";
}
else {
whichDirection = "increment";
}
printMatrixLine(traverser-1*multiplier, startCol, rows,
columns, "col", whichDirection, matrix);
}
else {
traverser=startCol;
while ( (traverser>=0) && (traverser<columns) ) {
if (matrix.get(startRow).get(traverser) != -1) {
System.
out.
print(matrix.
get(startRow
).
get(traverser
)); matrix.get(startRow).set(traverser, -1); //mark visited
traverser = traverser + 1*multiplier;
}
}
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgoJewoJCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCQlpbnQgcm93cyA9IDM7CgkJaW50IGNvbHVtbnMgPSAzOwoJCUFycmF5TGlzdDxBcnJheUxpc3Q8SW50ZWdlcj4+IG1hdHJpeCA9IAoJCQluZXcgQXJyYXlMaXN0PEFycmF5TGlzdDxJbnRlZ2VyPj4oKTsKCQlmb3IgKGludCBpPTA7IGk8cm93czsgaSsrKSB7CgkJCW1hdHJpeC5hZGQobmV3IEFycmF5TGlzdDxJbnRlZ2VyPigpKTsKCQkJZm9yIChpbnQgaj0wOyBqPGNvbHVtbnM7IGorKykgewoJCQkJbWF0cml4LmdldChpKS5hZGQoKGorMSkrKGNvbHVtbnMqaSkpOwoJCQl9CgkJfQoJCWZvciAoaW50IGk9MDsgaTxyb3dzOyBpKyspIHsKCQkJZm9yIChpbnQgaj0wOyBqPGNvbHVtbnM7IGorKykgewoJCQkJU3lzdGVtLm91dC5wcmludChtYXRyaXguZ2V0KGkpLmdldChqKSArICIgIik7CgkJCX0KCQkJU3lzdGVtLm91dC5wcmludGxuKCIiKTsKCQl9CgkJcHJpbnRNYXRyaXhMaW5lKDAsMCwgcm93cywgY29sdW1ucywgImNvbCIsICJpbmNyZW1lbnQiLCBtYXRyaXgpOwoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgcHJpbnRNYXRyaXhMaW5lKGludCBzdGFydFJvdywgaW50IHN0YXJ0Q29sLCBpbnQgcm93cywgCgkJaW50IGNvbHVtbnMsIFN0cmluZyBwYXJhbWV0ZXJUb0NoYW5nZSwgU3RyaW5nIGRpcmVjdGlvbiwKCQlBcnJheUxpc3Q8QXJyYXlMaXN0PEludGVnZXI+PiBtYXRyaXgpIHsKCQkJCgkJCWludCB0cmF2ZXJzZXI7CgkJCWludCBtdWx0aXBsaWVyOwoJCQlTdHJpbmcgd2hpY2hEaXJlY3Rpb247CgkJCWJvb2xlYW4gdmlzaXRlZCA9IGZhbHNlOwoKCQkJaWYgKGRpcmVjdGlvbiA9PSAiaW5jcmVtZW50IikgewoJCQkJbXVsdGlwbGllciA9IDE7CgkJCX0KCQkJZWxzZSB7CgkJCQltdWx0aXBsaWVyID0gLTE7CgkJCX0KCQkJCgkJCWlmIChwYXJhbWV0ZXJUb0NoYW5nZSA9PSAicm93IikgewoJCQkJdHJhdmVyc2VyPXN0YXJ0Um93OwoJCQkJU3lzdGVtLm91dC5wcmludGYoInRyYXY6ICVkLCB2aXNpdGVkICViIiwgdHJhdmVyc2VyLCB2aXNpdGVkKTsKCQkJCXdoaWxlICggKHRyYXZlcnNlciA+PSAwKSAmJiAodHJhdmVyc2VyPHJvd3MpICYmICF2aXNpdGVkICkgewoJCQkJCWlmIChtYXRyaXguZ2V0KHRyYXZlcnNlcikuZ2V0KHN0YXJ0Q29sKSAhPSAtMSkgewoJCQkJCQlTeXN0ZW0ub3V0LnByaW50KG1hdHJpeC5nZXQodHJhdmVyc2VyKS5nZXQoc3RhcnRDb2wpKTsKCQkJCQkJbWF0cml4LmdldCh0cmF2ZXJzZXIpLnNldChzdGFydENvbCwgLTEpOwoJCQkJCQl0cmF2ZXJzZXIgPSB0cmF2ZXJzZXIgKyAxKm11bHRpcGxpZXI7CQkJCQkJCgkJCQkJfQoJCQkJCWVsc2UgewoJCQkJCQl2aXNpdGVkID0gdHJ1ZTsKCQkJCQl9CgkJCQl9CgkJCQlTeXN0ZW0ub3V0LnByaW50ZigidHJhdjogJWQsIHZpc2l0ZWQgJWIiLCB0cmF2ZXJzZXIsIHZpc2l0ZWQpOwoJCQkJaWYgKGRpcmVjdGlvbiA9PSAiaW5jcmVtZW50IikgewoJCQkJCXdoaWNoRGlyZWN0aW9uID0gImRlY3JlbWVudCI7CgkJCQl9CgkJCQllbHNlIHsKCQkJCQl3aGljaERpcmVjdGlvbiA9ICJpbmNyZW1lbnQiOwoJCQkJfQoJCQkJcHJpbnRNYXRyaXhMaW5lKHRyYXZlcnNlci0xKm11bHRpcGxpZXIsIHN0YXJ0Q29sLCByb3dzLCAKCQkJCWNvbHVtbnMsICJjb2wiLCB3aGljaERpcmVjdGlvbiwgbWF0cml4KTsKCQkJfQoJCQllbHNlIHsKCQkJCXRyYXZlcnNlcj1zdGFydENvbDsKCQkJCXdoaWxlICggKHRyYXZlcnNlcj49MCkgJiYgKHRyYXZlcnNlcjxjb2x1bW5zKSApIHsKCQkJCQlpZiAobWF0cml4LmdldChzdGFydFJvdykuZ2V0KHRyYXZlcnNlcikgIT0gLTEpIHsKCQkJCQkJU3lzdGVtLm91dC5wcmludChtYXRyaXguZ2V0KHN0YXJ0Um93KS5nZXQodHJhdmVyc2VyKSk7CgkJCQkJCW1hdHJpeC5nZXQoc3RhcnRSb3cpLnNldCh0cmF2ZXJzZXIsIC0xKTsgLy9tYXJrIHZpc2l0ZWQKCQkJCQkJdHJhdmVyc2VyID0gdHJhdmVyc2VyICsgMSptdWx0aXBsaWVyOwoJCQkJCX0KCQkJCX0KCQkJfQkJCQoJCQkKCQl9CgkKfQ==