+ - + + - + | El | + - + + - + El | El | El | El | El | El | El | El | + - + + - + + - + + - +
La gente de ASCIIville está reconstruyendo su ciudad y esbozando nuevos planos. Su trabajo es dibujar su nueva ciudad en función de cuántos edificios quieran.
La entrada será cuántos edificios hay. Cada edificio es la mitad de la altura de la entrada (redondeado si es impar), sin incluir la parte superior e inferior del edificio.
Dibujemos un ejemplo básico de 4
+ - + + - + + - + + - + El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | + - + + - + + - + + - +
Como puede ver aquí, hay dos |
s en cada edificio porque la entrada fue cuatro. Pero hay una trampa! (lo que significa que el ejemplo anterior es incorrecto, y el ejemplo en la parte superior de esta publicación es la salida real para 4)
Para cada edificio que no es un número primo, su altura se reduce en uno. Si el número es divisible por 3 , 5 o 10 , baja uno más. Si es divisible por dos o más de esos números, la cantidad deducida se suma ( 10 es divisible por 10 y 5, y no es primo, por lo que se deduce por 3 ).
Veamos un ejemplo con una entrada de 5
.
+ - + + - + | El | + - + + - + + - + El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | + - + + - + + - + + - + + - +
Aquí hay un ejemplo de 7
+ - + + - + + - + | El | + - + + - + + - + | El | El | El | El | El | El | El | El | El | El | El | + - + | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | + - + + - + + - + + - + + - + + - + + - +
Y un ejemplo de 10
+ - + + - + + - + | El | + - + + - + + - + | El | + - + El | El | El | El | El | El | El | El | El | El | + - + | El | El | El | + - + El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | + - + El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | El | + - + + - + + - + + - + + - + + - + + - + + - + + - + + - +
Y de vuelta a 6
+ - + + - + | El | + - + + - + + - + El | El | El | El | El | El | El | El | El | El | + - + El | El | El | El | El | El | El | El | El | El | El | El | + - + + - + + - + + - + + - + + - +
Reglas:
- Si un número se deduce tanto que su altura es menor o igual a cero, no se muestra, pero queda un espacio para él (no creo que esto sea posible,
6
es lo más cercano que he encontrado para llegar a cero) . - Se permiten espacios finales.
- El ancho de cada edificio debe ser 2.
- Su entrada puede ser de stdin o codificada en el programa.
- Su programa debe ser un programa completo , sin funciones.
- Su programa debe poder 4-15 compilaciones. Los números 0-3 y negativos no son necesarios y no están especificados para hacer nada, lo que significa que pueden arrojar un error, imprimir basura o no hacer nada.
Respuestas:
CJam,
68 66 5855 bytesEsto es demasiado largo por ahora. Pero un comienzo.
ACTUALIZACIÓN: ahora codificación para entradas hasta 15 en lugar de calcular el desplazamiento. Sugerencia por Sp3000
Pruébalo en línea aquí
fuente
Python 2,
247 245 237229 bytesfuente
C #,
223205bytesEsto aprovecha la necesidad de ir solo a 15 edificios.
260 bytes
Y una respuesta más genérica que funcionará para cualquier número de edificios.
fuente
Python 2, 163 bytes
La comprobación de primalidad parte toma prestado @ algoritmo de XNOR desde aquí .
Si nos codificar los 15 primeros desplazamientos, podemos obtener 137 bytes :
Asumo espacios finales al final de cada línea está bien, pero si la pregunta significaba espacios finales después de toda la producción, entonces es +9 bytes para
.rstrip()
.fuente
Groovy,
234,225,223219 bytesAbusar del límite de 15 edificios
fuente
Swift,
375, 350 bytesAquí está el código sangrado
B
contiene el número de edificiosp
devuelve 1 cuando un número no es primo.Necesito importar Foundation para usar la
ceil
función.No logré optimizar el código solo para los quince casos, pero eventualmente lo lograré más tarde.
editar: siguiendo los consejos de @Kametrixom y optimizando la
mod
parte (olvidé reducir la longitud del nombre var).fuente
Foundation
conDarwin
para guardar algunos bytesimport UIKit
lugar deimport Darwin
.