50 lines
656 B
Ceylon
50 lines
656 B
Ceylon
class ZigZag(Integer size) {
|
|
|
|
value data = Array {
|
|
for (i in 0:size)
|
|
Array.ofSize(size, 0)
|
|
};
|
|
|
|
variable value i = 1;
|
|
variable value j = 1;
|
|
|
|
for (element in 0 : size^2) {
|
|
data[j - 1]?.set(i - 1, element);
|
|
if ((i + j).even) {
|
|
if (j < size) {
|
|
j++;
|
|
}
|
|
else {
|
|
i += 2;
|
|
}
|
|
if (i > 1) {
|
|
i--;
|
|
}
|
|
}
|
|
else {
|
|
if (i < size) {
|
|
i++;
|
|
}
|
|
else {
|
|
j += 2;
|
|
}
|
|
if (j > 1) {
|
|
j--;
|
|
}
|
|
}
|
|
}
|
|
|
|
shared void display() {
|
|
for (row in data) {
|
|
for (element in row) {
|
|
process.write(element.string.pad(3));
|
|
}
|
|
print(""); //newline
|
|
}
|
|
}
|
|
}
|
|
|
|
shared void run() {
|
|
value zz = ZigZag(5);
|
|
zz.display();
|
|
}
|