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
1
o2
,-1
o1
,0
o65536
, o lo que sea conveniente para usted, siempre y cuando ambos indicadores sean enteros. - Filas compuestas por uno
X
otodos, todos de la misma longitud en caracteres (es decir, rellenados con
)
- Todos
X
s estarán en la última fila oX
debajo 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
X
s 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?potato
ywhile(1){}
. Como se cita en la pregunta, "lo que sea conveniente".Regex.Replace
que 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
-p
bandera con la que se debe ejecutar. Se agregaron 2 al recuento de char.La bandera especificada en la primera línea es
0
para las sombras que van hacia la izquierda y2
para 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
1
o-1
fuente
potato
...", a menos quepotato
sea un entero. :-Pc=+prompt()
o de lo contrariob+c
se 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)c
a un número restando en su lugar.b-c
ob-=c
en mi código de arriba. (demo)Python 2.7 - 229
Versión sin golf
fuente