ne Delphi Version
Code:
// Delphi
type
TA_Z = 'A'..'Z';
function CharPyramid( const Input: TA_Z ): String;
var
i, j,
k, l,
m: Integer;
begin
j := 0;
k := ORD(Input)-64;
l := -1;
// Summe der Folge Ai = i*2+1 berechnen
for i := 1 to k do
inc( j, i*2+1 );
// Result = Länge - Letzte LFCR (#13#10)
SetLength( Result, j-2 );
for j := 1 to k do
begin
m := (j-1)*2;
inc( l, m+1 );
inc( m, 2 );
for i := 1 to j do
begin
Result[l+i] := chr(64+i);
Result[l+m-i] := chr(64+i)
end;
if j<k then
begin
Result[l+m] := #13;
Result[l+m+1] := #10;
end;
end;
end;
function Center( Input: String ): String;
var
i, j,
k, l: Integer;
begin
j := 1;
for i := 1 to Length(Input) do
if input[i] = #13 then
inc(j);
for i := 1 to j do
begin
l := 0;
if i>1 then
for k := 1 to Length(Input) do
begin
if Input[k] = #13 then
begin
inc( l );
if l = i-1 then
begin
l := k+2;
break;
end;
end;
end;
Insert( StringOfChar( ' ', j-i ), Input, l );
end;
Result := Input;
end;
// Möglicher Aufruf:
// (~Font = Courier New)
Center( CharPyramid( 'Z' ) ); Code:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
ABCDEFEDCBA
ABCDEFGFEDCBA
ABCDEFGHGFEDCBA
ABCDEFGHIHGFEDCBA
ABCDEFGHIJIHGFEDCBA
ABCDEFGHIJKJIHGFEDCBA
ABCDEFGHIJKLKJIHGFEDCBA
ABCDEFGHIJKLMLKJIHGFEDCBA
ABCDEFGHIJKLMNMLKJIHGFEDCBA
ABCDEFGHIJKLMNONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYXWVUTSRQPONMLKJIHGFEDCBA
ABCDEFGHIJKLMNOPQRSTUVWXYZYXWVUTSRQPONMLKJIHGFEDCBA