Su tarea es crear un programa o función que tome, como entrada, un número natural ( n
) entre 1 y 25 (inclusive) e imprima una representación isométrica de una diapositiva y una escalera con n
número de peldaños.
Especificaciones de escalera y tobogán
La escalera siempre está orientada a la izquierda y la corredera a la derecha. Lo estamos viendo desde el lado de la escalera, por lo que parte de la diapositiva está oculta en los tres niveles superiores. Los peldaños están representados por cuatro guiones ( ----
) y los lados de la escalera y se deslizan por barras ( /
y \
). El siguiente es un diagrama para representar los patrones de espacios necesarios para una diapositiva con cinco peldaños.
Slide Blank space count
/----/\ 1234/----/\
/----/ \ 123/----/12\
/----/ \ 12/----/1234\
/----/ \ \ 1/----/1\1234\
/----/ \ \ /----/123\1234\
Ejemplos
>>1
/----/\
>>3
/----/\
/----/ \
/----/ \
>>4
/----/\
/----/ \
/----/ \
/----/ \ \
>>10
/----/\
/----/ \
/----/ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
/----/ \ \
Este es el código de golf, por lo que gana la respuesta con el conteo de bytes más bajo.
Nota: el espacio en blanco final es aceptable en la salida, siempre que no exceda la longitud de la línea.
Respuestas:
Retina ,
817252 bytesEl recuento de bytes asume la codificación ISO 8859-1.
Pruébalo en línea!
Explicación
El programa consta de cuatro etapas, todas las cuales son sustituciones de expresiones regulares (con un par de características específicas de Retina). Usaré la entrada
5
como ejemplo para la explicación.Nivel 1
Esto convierte la entrada
n
enn
espacios seguidos por los/\ \
cuales se convertirán en la parte superior de la escalera / diapositiva:Por ahora, solo mostraremos la diapositiva en su totalidad y representaremos la escalera solo con su mano izquierda
/
.Etapa 2
Desafortunadamente, los
n
espacios son uno más de lo que necesitamos, por lo que eliminamos el primer carácter nuevamente. Ahora tenemos:Etapa 3
Es hora de expandir la estructura completa. Saber dónde está la parte superior es suficiente para construir todo, porque simplemente podemos extenderlo una línea a la vez, separando la escalera y el tobogán en dos espacios.
El
+
le dice a Retina que repita esta etapa en un bucle hasta que la salida deje de cambiar (en este caso, porque la expresión regular deja de coincidir). En cuanto a la expresión regular en sí, simplemente hacemos coincidir la/
última línea y todo lo que está detrás de ella y también hacemos coincidir un espacio delante de ella, lo que significa que esto ya no puede coincidir una vez que/
haya llegado a la primera columna.Esto es con lo que reemplazamos esto:
Entonces, en cada iteración, esto agrega una línea a la cadena, hasta que terminamos con esto:
Etapa 4
Todo lo que queda es conseguir la escalera correcta. Eso es realmente simple, simplemente combinamos los
/
siguientes 5 caracteres e insertamos la representación de escalera correcta, anulando así la diapositiva o los espacios que ya están allí:fuente
V ,
38, 37, 36, 34, 33, 32, 31, 3029 bytesPruébalo en línea!
Yo podría ponerse al día con Osabie. Un byte más corto que Osabie.¡Un byte más corto!\o/
Atado con 2sable!En otras noticias, este es definitivamente el encabezado tachado más largo que he hecho.
Explicación:
Esto se ejecutará hasta que ocurra un error, que gracias al comando "mover a la izquierda" ('h'), será 'arg1' veces.
Ahora solo necesitamos agregar la pierna interna
Versión no competitiva (28 bytes)
fuente
Pyth,
3935 bytesExplicación:
Prueba aquí
fuente
2sable ,
40363230 bytesHmmm, V se acerca terriblemente ...
Utiliza la codificación CP-1252 . ¡Pruebe una versión compatible con 05AB1E! .
fuente
:P
PowerShell v2 +,
999082 bytesToma entrada
$n
, inicia un ciclo de1
a$n
con|%{...}
. Cada iteración, estamos construyendo una cadena. Comenzamos con el número apropiado de espacios" "*($n-$_)
y la escalera"/----/"
.A eso, agregamos otra cadena que ha sido cortada
[...]
y-join
editada nuevamente. La segunda cadena es la diapositiva, y suponemos que toda la diapositiva siempre es visible. Es la cantidad de espacios antes de que comience la diapositiva" "*($_+$i++)
, seguida de la diapositiva misma"\ \"
. Esto se divide en un rango calculado como parte de los "espacios más diapositivas" que está parcialmente oculto por la escalera.Ejemplos
fuente
:D
\golfing
carpeta debe estar muy organizada._.
Python 2 -
797675 bytesGracias a Hubert Grzeskowiak por "descalificarme" ya que la impresión de mi programa realmente ahorró 3 bytes. ¡Gracias también a Eʀɪᴋ ᴛʜᴇ Gᴏʟғᴇʀ por guardar 1 byte más!
fuente
def f(x):
conx=input()
y elimine la sangría en la segunda línea. Esto te ahorra 1 byte.Vim, 71 pulsaciones de teclas
Esta es una forma tan estúpida de hacerlo, pero es un poco divertido. La entrada se proporciona como un archivo de texto con una sola línea que contiene un número entero. Es probable que esto sea bastante golfable, pero lo hará por ahora ( editar: estilo de caracteres de control cambiados a pedido ):
<c-v>
,<esc>
y<cr>
son todas las pulsaciones de teclas individuales; ctrl + v, escape y retorno de carro (enter) respectivamente. Para una versión simple de digerir con los literales correctos, aquí está el archivoladder.keys
ejecutadoxxd
:Para probarlo (suponiendo un nix con las herramientas apropiadas), tome lo anterior, ejecútelo
xxd -r
y póngalo en el archivoladder.keys
. Crea un archivoladder.txt
con un número entero. Entonces hazlo:fuente
^V
como<c-v>
aquí.golpe, 61
donde
^M
es un retorno de carro literalfuente
/
y `\` en la cuarta fila, y 1 espacio menos entre los bordes de la diapositiva.JavaScript (ES6), 79 bytes
Funciona tomando una serie de
n
espacios, luego haciendo una sustitución exótica para obtener el tobogán con un soporte, luego reemplazando el soporte con una escalera.fuente
Ruby, 61 bytes
Sin golf
Podría guardar dos bytes usando
'%*s\ \^M%*s----/'
(donde^M
es un retorno de carro literal) para la cadena de formato, pero luego Ruby imprime la advertencia "warning: encountered \r in middle of line, treated as a mere space
". ¯ \ _ (ツ) _ / ¯Solución anterior (64 bytes)
fuente
Lote, 194 bytes.
Resultó ser razonablemente sencillo: sangrar la diapositiva, eliminar los primeros 7 caracteres, sangrar la escalera, eliminar el espacio inicial. ¡Sin embargo, esta última parte implica un pequeño truco!
fuente
Java, 116 bytes
Desafortunadamente, no puedes [fácilmente] duplicar cadenas en Java, así que termino abusando de la función de formato.
fuente
Scala, 95 bytes
fuente
Haskell, 81 bytes
fuente
do i<-[1..n];a(n-i)++"/----/"++drop 7(a(2*i)++"\\ \\\n")
Guarda dos bytes.eacal , sin competencia, 386 bytes
Oficialmente he hecho el lenguaje más detallado posible.Hice el comentario en broma y en sarcasmo. Por favor calmate. Instrucciones sobre cómo ejecutar en el repositorio de github vinculado en el encabezado.Sin golf
fuente