En este desafío, ¡tienes que llevar el arte ASCII (que generalmente es 2D) a 3D!
¿Cómo?
Me gusta esto,
X X DD
X D D
X X DD
a...
X X DD
X X DD D
X X DDDD
X XDDD
X X DD
Entonces, ¿cómo hacemos eso ?
Dado el arte ascii y N, repito esta Nvez.
- para cada personaje (lo llamaremos
A): - dejar
Bser el personaje que es exactamente 1 correcto y 1 arriba deA - si
Bes un espacio o no está definido: - establecer
BaA.
Especificaciones
- La primera entrada puede ser una cadena con caracteres de nueva línea o una lista de cadenas que representan el arte 2D ASCII.
- Puede usarlo
%END%para etiquetar el final de la entrada, pero esto no es obligatorio. - La segunda entrada será
N. Será un número entero positivo. - Todas las líneas de las cadenas tendrán la misma longitud.
Ejemplos
Entrada: ("###\n###",1)
Salida:
###
####
###
Reglas
Se aplican reglas básicas de código de golf .
Además, si tiene preguntas, asegúrese de preguntar en los comentarios.

Respuestas:
Perl, 81 bytes
Código de 75 bytes + 6 para
-i -n0.Tenga en cuenta que los
\ecaracteres son ASCII\x1bpero\ese utilizan para facilitar la prueba.Tenga en cuenta que esta solución utiliza secuencias de escape ANSI y requiere un terminal compatible, además de utilizar el
-iargumento de la línea de comandos para pasar el número de 'dimensiones' que desea.Uso:
En un terminal compatible con Linux, ejecute
PS1=primero para asegurarse de que su solicitud no sobrescriba la imagen mostrada.fuente
CJam,
2524 bytesUn bloque sin nombre que espera una lista de cadenas y el número de repeticiones en la pila y deja una nueva lista de cadenas en su lugar.
Pruébalo aquí. (Incluye un contenedor de prueba que lee la cadena de STDIN para mayor comodidad).
Explicación
fuente
Sfunciona para el espacio inicial? Además, ¿está permitido usar variables (que podrían haberse sobrescrito) en una función?Sno funciona, porque en su lugarfestaría mapeando esa cadena. Re funciones, creo que sí, en lenguajes "normales", también hay muchas presentaciones de funciones que se basan en globales que no son manipuladas entre invocaciones.APL, 49 bytes
Entrada: vector de vectores de caracteres. Ejemplo:
Cómo funciona:
↑⍵convierte el argumento en una matriz de caracteres⎕UCSde char a entero(32∘≠×⊣)sustituir los espacios (32) con ceros...⍣⍺⊣aplicar ⍺ (el argumento izquierdo) multiplicado por la función de la izquierdas←0⍪⍵,0borde con ceros arriba y a la derecha el argumento1⊖¯1⌽gire 1 hacia arriba y 1 hacia la derechas+(s=0)×suma al original la versión desplazada pero solo encima de los ceros del original32⌈convierte los ceros en 32s⎕UCSde entero a charfuente
MATL , 24 bytes
El formato de entrada es
Entonces el otro ejemplo es
La salida contiene espacios en blanco adicionales, lo que está permitido por el desafío.
Pruébalo en línea!
Si una matriz de caracteres 2D es aceptable como entrada (le he pedido al OP dos veces ...), la primera
cse puede eliminar, por lo que 23 bytes :El formato de entrada en este caso es (todas las cadenas tienen la misma longitud, lo que puede requerir el relleno derecho con espacios):
Pruébalo en línea!
Explicación
fuente
Convexo , 23 bytes
El recuento de bytes supone la codificación CP-1252.
Un bloque sin nombre que espera una lista de cadenas y el número de repeticiones en la pila y deja una nueva lista de cadenas en su lugar.
Pruébalo en línea!
Este es un puerto directo de mi respuesta de CJam a Convex (que se basa en gran medida en CJam). La única diferencia es que Convex usa en
Ëlugar deertransliteración, ahorrando un byte. Gracias a GamrCorps por informarme al respecto.fuente
Pyth,
5433 bytesBanco de pruebas.
fuente
;?;no es lo habitual;en lenguajes de programación.;es una variable;en lambdas ...I,.?,V,F,;, (declaraciones explícitas) muy inferior, y ellos serán reemplazados por?,m,u,F,M,L,R,#, ...JavaScript (ES6), 128 bytes
Acepta y devuelve una serie de cadenas, antepone una fila adicional para la salida, asegura que cada fila contenga al menos un espacio, las divide en caracteres, realiza un bucle aunque intenta copiar los caracteres en la fila superior y la columna a la derecha, luego recursivamente se llama a sí mismo para completar el ciclo.
fuente
Python 2, 116 bytes
Voy a jugar al golf más pronto.
fuente
lambdano es más corto?eallí. Además,execes una declaración, por lo que no puede estar en una lambda.Ruby, 95 bytes
Cada uno
<Esc>es un carácter ESC literal (0x1b).Uso
Asigne el lambda a una variable, por ejemplo
func.Sin golf
La
forwardsecuencia de escape\e[1C, mueve el cursor hacia adelante (derecha) 1 espacio y\e[<n>Asube lasnlíneas. Básicamente, lo que hace este código es imprimir las "capas" de atrás hacia adelante, reemplazando espacios con laforwardsecuencia para evitar sobrescribir las otras capas con un espacio.fuente
f=antes->en la versión de golf. Eliminarlo por -2 bytes.