Eingang:
1
X
X
X
X XX XXXXXX X X X
X XX XXXXXX X X X
XXX X XX XXXXXX X X X
XXX X XX XXXXXX X X X
Ausgabe:
X.
X..
X...
X.... XX. XXXXXX. X.X.X.
X..... XX.. XXXXXX.. X.X.X..
XXX. X......XX... XXXXXX... X.X.X...
XXX.. X......XX....XXXXXX.... X.X.X....
Eingang:
2
XX
XX
XX
XX
XX
XX XX
XX XX
XX XX
XX XX
Ausgabe:
.XX
..XX
...XX
....XX
.....XX
..XX..XX
...XX..XX
....XX..XX
.....XX..XX
Spezifikation:
- Sie müssen als Eingabe nehmen
- Eine Flagge, die anzeigt, ob das Licht von links oben oder rechts oben kommt. Dies kann
1
oder sein2
,-1
oder1
,0
oder65536
, oder was auch immer für Sie bequem ist, solange beide Flags Ganzzahlen sind. - Zeilen, die entweder aus
X
oderaus Zeichen bestehen, die alle dieselbe Länge haben (dh mit Zeichen aufgefüllt sind
)
- Alle
X
s befinden sich entweder in der letzten Reihe oder haben eineX
darunter (dh keine schwimmenden Gebäude)
- Alle
- Eine Flagge, die anzeigt, ob das Licht von links oben oder rechts oben kommt. Dies kann
- Sie müssen die Zeilen (Gebäude) mit Schatten ausgeben. Dies geschieht mit folgendem Verfahren:
- Wenn das Licht von oben links kommt, zeichnen Sie ein rechtwinkliges Dreieck von
.
s mit der gleichen Höhe und Breite wie die Höhe des Gebäudes. Beginnen Sie mit einem Abstand von einem Feld nach dem rechten Rand und gehen Sie nach rechts. - Andernfalls, wenn es von rechts oben ist, machen Sie dasselbe, aber beginnen Sie an einer Stelle hinter dem linken Rand und zeigen Sie nach links.
- Denken Sie daran, ändern Sie
X
s nicht, indem Sie sie in.
s ändern . lass sie wie sie sind. - Es wird immer "Raum" für Ihre Schatten geben, dh wenn sich am Ende ein 3-Feld-Hochhaus befindet, werden mindestens 3 Felder Polsterung folgen.
- Wenn das Licht von oben links kommt, zeichnen Sie ein rechtwinkliges Dreieck von
- Das ist Code-Golf , also gewinnt der kürzeste Code in Bytes!
potato
und verwenden while(1){}
. Wie in der Frage zitiert, "was auch immer bequem ist."
Regex.Replace
dem ich nicht umgehen kann ... habe ich jetzt zwei Probleme?
{}
und{-1*}
als Flagwerte verwenden?