Entrada:
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
Salida:
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....
Entrada:
2
XX
XX
XX
XX
XX
XX XX
XX XX
XX XX
XX XX
Salida:
.XX
..XX
...XX
....XX
.....XX
..XX..XX
...XX..XX
....XX..XX
.....XX..XX
Especificación:
- Debes tomar como entrada
- Una bandera que indica si la luz proviene de la parte superior izquierda o superior derecha. Esto puede ser
1o2,-1o1,0o65536, o lo que sea conveniente para usted, siempre y cuando ambos indicadores sean enteros. - Filas compuestas por uno
Xotodos, todos de la misma longitud en caracteres (es decir, rellenados con)- Todos
Xs estarán en la última fila oXdebajo de ellos (lo que significa que no hay edificios flotantes)
- Todos
- Una bandera que indica si la luz proviene de la parte superior izquierda o superior derecha. Esto puede ser
- Debe generar las filas (edificios) con sombras agregadas. Esto se hace con el siguiente procedimiento:
- Si la luz proviene de la esquina superior izquierda, dibuje un triángulo rectángulo de
.s con la misma altura y anchura que la altura del edificio, comenzando desde un espacio más allá de su borde derecho y hacia la derecha. - De lo contrario, si es desde la parte superior derecha, haga lo mismo, pero comience desde un espacio más allá de su borde izquierdo y apunte hacia la izquierda.
- Recuerda no alterar
Xs cambiándolos a.s; déjalos como están. - Siempre habrá "espacio" para sus sombras, es decir, si hay un edificio de 3 espacios de altura al final, habrá al menos 3 espacios de relleno después.
- Si la luz proviene de la esquina superior izquierda, dibuje un triángulo rectángulo de
- Este es el código de golf , por lo que el código más corto en bytes ganará

{}y{-1*}como valores de bandera?potatoywhile(1){}. Como se cita en la pregunta, "lo que sea conveniente".Regex.Replaceque no puedo solucionar ... ¿Tengo dos problemas ahora?Respuestas:
GolfScript, 67 caracteres
1 / -1 para sombras que van hacia la derecha / izquierda. Ejecute el ejemplo en línea :
fuente
Perl - 85
EDITAR: Olvidé por completo la
-pbandera con la que se debe ejecutar. Se agregaron 2 al recuento de char.La bandera especificada en la primera línea es
0para las sombras que van hacia la izquierda y2para las sombras que van hacia la derecha.fuente
Python 3 - 233
Bueno, eso resultó más de lo esperado ...
1 para las sombras que van hacia la derecha, -1 para las sombras que van hacia la izquierda.
EDITAR: No vi el relleno lateral en las reglas. Ehehe ^^ '
fuente
JavaScript - 14
La bandera en la primera línea es
for(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b+1]=='.'||p[b]=='.'||l[b+1]=='X'?'.':a}));para sombras que miran hacia la izquierda ofor(p='';l=prompt();)console.log(p=l.replace(/ /g,function(a,b){return p[b-1]=='.'||p[b]=='.'||l[b-1]=='X'?'.':a}));para las sombras hacia la derecha.Esto podría abusar de la regla "lo que sea conveniente para usted" para la bandera: P
Editar: sin abuso (127):
La bandera para esto es
1o-1fuente
potato...", a menos quepotatosea un entero. :-Pc=+prompt()o de lo contrariob+cse concatenará como una cadena.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)ca un número restando en su lugar.b-cob-=cen mi código de arriba. (demo)Python 2.7 - 229
Versión sin golf
fuente