dart-exercism/diamond/lib/diamond.dart
2024-10-14 11:37:17 +02:00

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'));
}