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!
{}
und{-1*}
als Flagwerte verwenden?potato
und verwendenwhile(1){}
. Wie in der Frage zitiert, "was auch immer bequem ist."Regex.Replace
dem ich nicht umgehen kann ... habe ich jetzt zwei Probleme?Antworten:
GolfScript, 67 Zeichen
1 / -1 für Schatten nach rechts / links. Führen Sie das Beispiel online aus :
quelle
Perl - 85
EDIT: Ich habe völlig vergessen,
-p
mit welcher Flagge das laufen soll. 2 zur Zeichenanzahl hinzugefügt.Das in der ersten Zeile angegebene Flag gilt
0
für Schatten nach links und2
für Schatten nach rechts.quelle
Python 3 - 233
Nun, das war länger als erwartet ...
1 für Schatten nach rechts, -1 für Schatten nach links.
BEARBEITEN: Keine der beiden Seiten wurde in den Regeln aufgefüllt. Ehehe. ^^ '
quelle
JavaScript - 14
Das Flag in der ersten Zeile steht
for(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b+1]=='.'||p[b]=='.'||l[b+1]=='X'?'.':a}));
für Schatten nach links oderfor(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b-1]=='.'||p[b]=='.'||l[b-1]=='X'?'.':a}));
für Schatten nach rechts.Dies könnte die Regel "Was auch immer für Sie bequem ist" für die Flagge missbrauchen: P
Bearbeiten: ohne Missbrauch (127):
Die Flagge dafür ist
1
oder-1
quelle
potato
..." in Konflikt geraten , espotato
sei denn, es handelt sich um eine Ganzzahl. :-Pc=+prompt()
oderb+c
wird als Zeichenfolge verkettet.for(c=p=+(P=prompt)(d='.');l=P();)console.log(p=l.replace(/ /g,function(a,b){return p[b]==d|p[b+=c]==d|l[b]=='X'?d:a}))
(Demo)c
in eine Zahl, indem Sie stattdessen subtrahieren.b-c
oderb-=c
in meinem Code oben. (Demo)Python 2.7 - 229
Ungolfed Version
quelle