Wer hat alles in Mathematik aufgepasst?
Gegeben ist ein Koordinatensystem, bzw. eine gezackte Gerade.
und gegeben sind 8 Geraden, bzw. 6 Geraden mit Überlauf.
Liegt nun ein Pinkt des Koordinatensystems auf einer der Linien?
Wenn ja, dann zeichne dort ein X.
Zwei Schleifen im Koordinatensystem:
Delphi-Quellcode:
// ___1___
// __a_b__
// _a___b_
// 2ccccc3
// fd___eg
// f_d_e_g
// f__x__g
// f_e_d_g
// fe___dg
// 4hhhhh5
var
x, y: Integer;
begin
for y := 0 to 42 do begin
for x := 0 to 28 do
if (y + 14 = x) {b: diagonal}
or (y + 14 = 28 - x]) {a: diagonal}
or (y + 42 = x) {d: diagonal}
or (y + 42 = 28 - x) {e: diagonal}
or ((y > 13) and (x = 0)) {f: senkrecht}
or ((y > 13) and (x = 28)) {g: senkrecht}
or (y = 14) {c: quer}
or (y = 42) {h: quer} then
Write('X')
else
Write(' '); // Write('_'); für Debugmodus
WriteLn;
end;
ReadLn;
end.
Zwei Schleifen im Koordinatensystem (die Berechnung 'nen bissl optimiert/zusammengefaßt):
Delphi-Quellcode:
var
x, y: Integer;
begin
for y := 0 to 42 do begin
for x := 0 to 28 do
if (((y + 14) mod 28) in [x, 28 - x]) {diagonal}
or ((y > 13) and (x in [0, 28])) {senkrecht}
or (y in [14, 42]) {quer} then
Write('X')
else
Write(' '); // Write('_'); für Debugmodus
WriteLn;
end;
ReadLn;
end.
Eine Schleife mit Koordinatensystem:
Delphi-Quellcode:
var
x, y: Integer;
begin
x := 0;
y := 0;
while y < 43 do begin
if (((y + 14) mod 28) in [x, 28 - x]) {diagonal}
or ((y > 13) and (x in [0, 28])) {senkrecht}
or (y in [14, 42]) {quer} then
Write('X')
else
Write(' '); // Write('_'); für Debugmodus
Inc(x);
if x > 28 then begin
WriteLn;
x := 0;
Inc(y);
end;
end;
ReadLn;
end.
Eine Schleife auf 'ner Geraden.
Delphi-Quellcode:
var
i: Integer;
begin
for i := 0 to 1246 do begin
if (((i div 29 + 14) mod 28) in [i mod 29, 28 - i mod 29]) {diagonal}
or ((i > 407) and (i mod 29 in [0, 28])) {senkrecht}
or (i div 29 in [14, 42]) {quer} then
Write('X')
else
Write(' '); // Write('_'); für Debugmodus
if i mod 29 = 28 then
WriteLn;
end;
ReadLn;
end.
PS: Wer die Linien alle einzeln berechnen/einfügen möchte, der nehme eine StringListe oder ein String-Array, zum Zwischenspeichern.
Fülle erstmal alle Zeilen mit Leerzeichen und tauschen dann, Stück für Stück, die einelnen Punkte/Chars aus, bevor alles ausgegeben wird.
Hier hat man also ein Koordinatensystem / eine Fläche in den Strings.
Gehe nun nur noch die bekannten Geraden durch und zeichne deren Punkte ein.