Contribution:
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
Sortie:
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....
Contribution:
2
XX
XX
XX
XX
XX
XX XX
XX XX
XX XX
XX XX
Sortie:
.XX
..XX
...XX
....XX
.....XX
..XX..XX
...XX..XX
....XX..XX
.....XX..XX
Spécification:
- Vous devez prendre en entrée
- Un drapeau indiquant si la lumière vient du coin supérieur gauche ou supérieur droit. Cela peut être
1
ou2
,-1
ou1
,0
ou65536
, ou ce qui vous convient, tant que les deux indicateurs sont des entiers. - Lignes composées de
X
ou, toutes de la même longueur en caractères (c.-à-d. Remplies de
)
- Tous les
X
s seront sur la dernière ligne ou auront unX
dessous (ce qui signifie pas de bâtiments flottants)
- Tous les
- Un drapeau indiquant si la lumière vient du coin supérieur gauche ou supérieur droit. Cela peut être
- Vous devez sortir les lignes (bâtiments) avec des ombres ajoutées. Cela se fait avec la procédure suivante:
- Si la lumière vient du coin supérieur gauche, tracez un triangle rectangle de
.
s de même hauteur et largeur que la hauteur du bâtiment, en partant d'un espace au-delà de son bord droit et en allant vers la droite. - Sinon, si c'est en haut à droite, faites la même chose mais commencez par un espace au-delà de son bord gauche et en pointant vers la gauche.
- N'oubliez pas, ne modifiez pas
X
s en les changeant en.
s; laissez-les tels quels. - Il y aura toujours de la "place" pour vos ombres, c'est-à-dire que s'il y a un bâtiment de 3 espaces à la fin, il y aura au moins 3 espaces de rembourrage après.
- Si la lumière vient du coin supérieur gauche, tracez un triangle rectangle de
- Il s'agit de code-golf , donc le code le plus court en octets gagnera!
{}
et{-1*}
comme valeurs d'indicateur?potato
etwhile(1){}
. Comme cité dans la question, "ce qui est pratique".Regex.Replace
lequel je ne peux pas contourner ... ai-je deux problèmes maintenant?Réponses:
GolfScript, 67 caractères
1 / -1 pour les ombres allant à droite / à gauche. Exécutez l'exemple en ligne :
la source
Perl - 85
EDIT: J'ai totalement oublié le
-p
drapeau avec lequel il faut exécuter. Ajout de 2 au nombre de caractères.Le drapeau spécifié à la première ligne est
0
pour les ombres allant à gauche et2
pour les ombres allant à droite.la source
Python 3 - 233
Eh bien, cela s'est avéré plus long que prévu ...
1 pour les ombres vers la droite, -1 pour les ombres vers la gauche.
EDIT: Je n'ai pas vu le rembourrage de chaque côté dans les règles. Ehehe. ^^ '
la source
JavaScript - 14
Le drapeau sur la première ligne est
for(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b+1]=='.'||p[b]=='.'||l[b+1]=='X'?'.':a}));
pour les ombres tournées vers la gauche oufor(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b-1]=='.'||p[b]=='.'||l[b-1]=='X'?'.':a}));
pour les ombres vers la droite.Cela pourrait abuser de la règle "tout ce qui vous convient" pour le drapeau: P
Edit: sans abus (127):
Le drapeau pour cela est
1
ou-1
la source
potato
... », à moinspotato
est un entier :-P.c=+prompt()
ou bienb+c
concaténera sous forme de chaîne.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}))
(démo)c
en nombre en soustrayant à la place.b-c
oub-=c
dans mon code ci-dessus. (démo)Python 2.7 - 229
Version non golfée
la source