49 lines
1.1 KiB
Dart
49 lines
1.1 KiB
Dart
class Diamond {
|
|
List<String> rows(String input) {
|
|
List<String> result = [];
|
|
|
|
int rows = (input.codeUnitAt(0) - 64) * 2 - 1;
|
|
int padding = (rows / 2).floor();
|
|
int center = 0;
|
|
bool halfWay = false;
|
|
int currentChar = 65;
|
|
|
|
for (int i = 0; i < rows; i++) {
|
|
String x = '';
|
|
x = addPad(x, padding, halfWay);
|
|
x += String.fromCharCode(currentChar);
|
|
if (center > 0) {
|
|
for (int i = 0; i < center; i++) {
|
|
x += ' ';
|
|
}
|
|
x += String.fromCharCode(currentChar);
|
|
}
|
|
x = addPad(x, padding, halfWay);
|
|
(halfWay) ? padding++ : padding--;
|
|
(halfWay)
|
|
? (center > 0)
|
|
? center = center - 2
|
|
: center--
|
|
: (center > 0)
|
|
? center = center + 2
|
|
: center++;
|
|
(halfWay) ? currentChar-- : currentChar++;
|
|
if (i > rows / 2 - 2) halfWay = true;
|
|
result.add(x);
|
|
}
|
|
|
|
return result;
|
|
}
|
|
|
|
String addPad(String input, int padSize, bool halfWay) {
|
|
for (int i = 0; i < padSize; i++) {
|
|
input += ' ';
|
|
}
|
|
return input;
|
|
}
|
|
}
|
|
|
|
void main(List<String> args) {
|
|
print(Diamond().rows('Z'));
|
|
}
|